| /* |
| Copyright 2017 Google LLC |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| */ |
| package bigtable |
| |
| import ( |
| "testing" |
| "time" |
| |
| bttdpb "google.golang.org/genproto/googleapis/bigtable/admin/v2" |
| ) |
| |
| func TestGcRuleToString(t *testing.T) { |
| |
| intersection := IntersectionPolicy(MaxVersionsPolicy(5), MaxVersionsPolicy(10), MaxAgePolicy(16*time.Hour)) |
| |
| var tests = []struct { |
| proto *bttdpb.GcRule |
| want string |
| }{ |
| {MaxAgePolicy(72 * time.Hour).proto(), "age() > 3d"}, |
| {MaxVersionsPolicy(5).proto(), "versions() > 5"}, |
| {intersection.proto(), "(versions() > 5 && versions() > 10 && age() > 16h)"}, |
| {UnionPolicy(intersection, MaxAgePolicy(72*time.Hour)).proto(), |
| "((versions() > 5 && versions() > 10 && age() > 16h) || age() > 3d)"}, |
| } |
| |
| for _, test := range tests { |
| got := GCRuleToString(test.proto) |
| if got != test.want { |
| t.Errorf("got gc rule string: %v, wanted: %v", got, test.want) |
| } |
| } |
| } |
| |
| func TestGCRuleToPolicy(t *testing.T) { |
| var tc = []struct { |
| proto *bttdpb.GcRule |
| want string |
| }{ |
| {MaxAgePolicy(72 * time.Hour).proto(), "age() > 3d"}, |
| {MaxVersionsPolicy(5).proto(), "versions() > 5"}, |
| {IntersectionPolicy(MaxAgePolicy(5*time.Hour), MaxVersionsPolicy(4)).proto(), |
| "(age() > 5h && versions() > 4)"}, |
| {UnionPolicy(MaxAgePolicy(5*time.Hour), MaxVersionsPolicy(4)).proto(), |
| "(age() > 5h || versions() > 4)"}, |
| {IntersectionPolicy(UnionPolicy(MaxAgePolicy(5*time.Hour), MaxVersionsPolicy(4)), MaxVersionsPolicy(8)).proto(), |
| "((age() > 5h || versions() > 4) && versions() > 8)"}, |
| } |
| |
| for _, test := range tc { |
| got := gcRuleToPolicy(test.proto) |
| if got.String() != test.want { |
| t.Errorf("got gc rule %v, want: %v", got, test.want) |
| } |
| } |
| } |