use of com.google.cloud.bigtable.admin.v2.models.GCRules.IntersectionRule in project java-bigtable by googleapis.
the class TableAdminExampleTest method testCreateIntersectionRule.
@Test
public void testCreateIntersectionRule() {
// Intersection rule
tableAdmin.addFamilyWithIntersectionRule();
DurationRule maxAgeRule = GCRULES.maxAge(5, TimeUnit.DAYS);
VersionRule versionRule = GCRULES.maxVersions(2);
IntersectionRule intersectionCondition = GCRULES.intersection().rule(maxAgeRule).rule(versionRule);
boolean intersectionRule = ruleCheck(intersectionCondition);
assertTrue(intersectionRule);
}
use of com.google.cloud.bigtable.admin.v2.models.GCRules.IntersectionRule in project java-bigtable by googleapis.
the class BigtableTableAdminClientIT method modifyFamilies.
@Test
public void modifyFamilies() {
tableAdmin.createTable(CreateTableRequest.of(tableId));
ModifyColumnFamiliesRequest modifyFamiliesReq = ModifyColumnFamiliesRequest.of(tableId).addFamily("mf1").addFamily("mf2", GCRULES.maxAge(Duration.ofSeconds(1000, 20000))).updateFamily("mf1", GCRULES.union().rule(GCRULES.maxAge(Duration.ofSeconds(100))).rule(GCRULES.maxVersions(1))).addFamily("mf3", GCRULES.intersection().rule(GCRULES.maxAge(Duration.ofSeconds(2000))).rule(GCRULES.maxVersions(10))).addFamily("mf4", GCRULES.intersection().rule(GCRULES.maxAge(Duration.ofSeconds(360)))).addFamily("mf5").addFamily("mf6").dropFamily("mf5").dropFamily("mf6").addFamily("mf7");
Table tableResponse = tableAdmin.modifyFamilies(modifyFamiliesReq);
Map<String, ColumnFamily> columnFamilyById = Maps.newHashMap();
for (ColumnFamily columnFamily : tableResponse.getColumnFamilies()) {
columnFamilyById.put(columnFamily.getId(), columnFamily);
}
assertEquals(5, columnFamilyById.size());
assertNotNull(columnFamilyById.get("mf1"));
assertNotNull(columnFamilyById.get("mf2"));
assertEquals(2, ((UnionRule) columnFamilyById.get("mf1").getGCRule()).getRulesList().size());
assertEquals(1000, ((DurationRule) columnFamilyById.get("mf2").getGCRule()).getMaxAge().getSeconds());
assertEquals(20000, ((DurationRule) columnFamilyById.get("mf2").getGCRule()).getMaxAge().getNano());
assertEquals(2, ((IntersectionRule) columnFamilyById.get("mf3").getGCRule()).getRulesList().size());
assertEquals(360, ((DurationRule) columnFamilyById.get("mf4").getGCRule()).getMaxAge().getSeconds());
assertNotNull(columnFamilyById.get("mf7"));
}
use of com.google.cloud.bigtable.admin.v2.models.GCRules.IntersectionRule in project java-bigtable by googleapis.
the class GCRulesTest method intersectionOfUnions.
@Test
public void intersectionOfUnions() {
IntersectionRule actual = GCRULES.intersection().rule(GCRULES.union().rule(GCRULES.maxVersions(1)).rule(GCRULES.maxAge(Duration.ofSeconds(1)))).rule(GCRULES.union().rule(GCRULES.maxVersions(1)).rule(GCRULES.maxAge(Duration.ofSeconds(1))));
GcRule expected = GcRule.newBuilder().setIntersection(Intersection.newBuilder().addRules(GcRule.newBuilder().setUnion(Union.newBuilder().addRules(buildVersionsRule(1)).addRules(buildAgeRule(1, 0)))).addRules(GcRule.newBuilder().setUnion(Union.newBuilder().addRules(buildVersionsRule(1)).addRules(buildAgeRule(1, 0))))).build();
assertEquals(2, actual.getRulesList().size());
assertThat(actual.toProto()).isEqualTo(expected);
}
use of com.google.cloud.bigtable.admin.v2.models.GCRules.IntersectionRule in project java-bigtable by googleapis.
the class TableAdminExample method addFamilyWithNestedRule.
/**
* Demonstrates how to create a nested rule using the IntersectionRule and UnionRule.
*/
public void addFamilyWithNestedRule() {
System.out.printf("%nCreating column family %s with a nested GC rule%n", COLUMN_FAMILY_5);
// [START bigtable_create_family_gc_nested]
// Creates a nested GC rule:
// Drop cells that are either older than the 10 recent versions
// OR
// Drop cells that are older than a month AND older than the 2 recent versions
VersionRule versionRule1 = GCRULES.maxVersions(10);
VersionRule versionRule2 = GCRULES.maxVersions(2);
DurationRule maxAgeRule = GCRULES.maxAge(30, TimeUnit.DAYS);
IntersectionRule intersectionRule = GCRULES.intersection().rule(maxAgeRule).rule(versionRule2);
UnionRule unionRule = GCRULES.union().rule(intersectionRule).rule(versionRule1);
// Creates column family with given GC rule.
try {
// ModifyColumnFamiliesRequest can be used both for adding and modifying families, here it is
// being used to add a family
ModifyColumnFamiliesRequest columnFamiliesRequest = ModifyColumnFamiliesRequest.of(tableId).addFamily(COLUMN_FAMILY_5, unionRule);
adminClient.modifyFamilies(columnFamiliesRequest);
System.out.println("Created column family: " + COLUMN_FAMILY_5);
} catch (AlreadyExistsException e) {
System.err.println("Failed to create column family with rule, already exists: " + e.getMessage());
}
// [END bigtable_create_family_gc_nested]
}
use of com.google.cloud.bigtable.admin.v2.models.GCRules.IntersectionRule in project java-bigtable by googleapis.
the class TableAdminExample method addFamilyWithIntersectionRule.
/**
* Demonstrates how to create a new instance of the IntersectionRule.
*/
public void addFamilyWithIntersectionRule() {
System.out.printf("%nCreating column family %s with intersection GC rule%n", COLUMN_FAMILY_4);
// [START bigtable_create_family_gc_intersection]
// Creates a column family with GC policy to drop data that matches all conditions.
// Defines a GC rule to drop cells older than 5 days AND older than the most recent 2 versions.
DurationRule maxAgeRule = GCRULES.maxAge(5, TimeUnit.DAYS);
VersionRule versionRule = GCRULES.maxVersions(2);
IntersectionRule intersectionRule = GCRULES.intersection().rule(maxAgeRule).rule(versionRule);
// Creates column family with given GC rule.
try {
// ModifyColumnFamiliesRequest can be used both for adding and modifying families, here it is
// being used to add a family
ModifyColumnFamiliesRequest columnFamiliesRequest = ModifyColumnFamiliesRequest.of(tableId).addFamily(COLUMN_FAMILY_4, intersectionRule);
adminClient.modifyFamilies(columnFamiliesRequest);
System.out.println("Created column family: " + COLUMN_FAMILY_4);
} catch (AlreadyExistsException e) {
System.err.println("Failed to create column family with rule, already exists: " + e.getMessage());
}
// [END bigtable_create_family_gc_intersection]
}
Aggregations