public static List<String> toStringList(List<TableName> values) { List<String> list = new ArrayList<String>(values.size()); for (TableName value : values) { if (value == null) { list.add(""); } else { list.add(value.toString()); } } return list; }
private ApiFuture<GenerateConsistencyTokenResponse> generateToken( TableName tableName, ApiCallContext context) { GenerateConsistencyTokenRequest generateRequest = GenerateConsistencyTokenRequest.newBuilder().setName(tableName.toString()).build(); return generateCallable.futureCall(generateRequest, context); }
public static String format(String project, String instance, String table) { return newBuilder() .setProject(project) .setInstance(instance) .setTable(table) .build() .toString(); }
@Override public ApiFuture<Void> apply(GenerateConsistencyTokenResponse input) { CheckConsistencyRequest request = CheckConsistencyRequest.newBuilder() .setName(tableName.toString()) .setConsistencyToken(input.getConsistencyToken()) .build(); return pollToken(request, context); } },
/** * Gets metadata information about the specified table. * * <p>Sample code: * * <pre><code> * try (BaseBigtableTableAdminClient baseBigtableTableAdminClient = BaseBigtableTableAdminClient.create()) { * TableName name = TableName.of("[PROJECT]", "[INSTANCE]", "[TABLE]"); * Table response = baseBigtableTableAdminClient.getTable(name); * } * </code></pre> * * @param name The unique name of the requested table. Values are of the form * `projects/<project>/instances/<instance>/tables/<table>`. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final Table getTable(TableName name) { GetTableRequest request = GetTableRequest.newBuilder().setName(name == null ? null : name.toString()).build(); return getTable(request); }
/** * Permanently deletes a specified table and all of its data. * * <p>Sample code: * * <pre><code> * try (BaseBigtableTableAdminClient baseBigtableTableAdminClient = BaseBigtableTableAdminClient.create()) { * TableName name = TableName.of("[PROJECT]", "[INSTANCE]", "[TABLE]"); * baseBigtableTableAdminClient.deleteTable(name); * } * </code></pre> * * @param name The unique name of the table to be deleted. Values are of the form * `projects/<project>/instances/<instance>/tables/<table>`. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final void deleteTable(TableName name) { DeleteTableRequest request = DeleteTableRequest.newBuilder().setName(name == null ? null : name.toString()).build(); deleteTable(request); }
/** * Generates a consistency token for a Table, which can be used in CheckConsistency to check * whether mutations to the table that finished before this call started have been replicated. The * tokens will be available for 90 days. * * <p>Sample code: * * <pre><code> * try (BaseBigtableTableAdminClient baseBigtableTableAdminClient = BaseBigtableTableAdminClient.create()) { * TableName name = TableName.of("[PROJECT]", "[INSTANCE]", "[TABLE]"); * GenerateConsistencyTokenResponse response = baseBigtableTableAdminClient.generateConsistencyToken(name); * } * </code></pre> * * @param name The unique name of the Table for which to create a consistency token. Values are of * the form `projects/<project>/instances/<instance>/tables/<table>`. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final GenerateConsistencyTokenResponse generateConsistencyToken(TableName name) { GenerateConsistencyTokenRequest request = GenerateConsistencyTokenRequest.newBuilder() .setName(name == null ? null : name.toString()) .build(); return generateConsistencyToken(request); }
/** * Checks replication consistency based on a consistency token, that is, if replication has caught * up based on the conditions specified in the token and the check request. * * <p>Sample code: * * <pre><code> * try (BaseBigtableTableAdminClient baseBigtableTableAdminClient = BaseBigtableTableAdminClient.create()) { * TableName name = TableName.of("[PROJECT]", "[INSTANCE]", "[TABLE]"); * String consistencyToken = ""; * CheckConsistencyResponse response = baseBigtableTableAdminClient.checkConsistency(name, consistencyToken); * } * </code></pre> * * @param name The unique name of the Table for which to check replication consistency. Values are * of the form `projects/<project>/instances/<instance>/tables/<table>`. * @param consistencyToken The token created using GenerateConsistencyToken for the Table. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final CheckConsistencyResponse checkConsistency(TableName name, String consistencyToken) { CheckConsistencyRequest request = CheckConsistencyRequest.newBuilder() .setName(name == null ? null : name.toString()) .setConsistencyToken(consistencyToken) .build(); return checkConsistency(request); }
.setName(name == null ? null : name.toString()) .addAllModifications(modifications) .build();
@Test public void testGenerateFailure() throws Exception { GenerateConsistencyTokenRequest expectedRequest = GenerateConsistencyTokenRequest.newBuilder().setName(TABLE_NAME.toString()).build(); FakeApiException fakeError = new FakeApiException("fake", null, Code.INTERNAL, false); Mockito.when(mockGenerateConsistencyTokenCallable.futureCall(expectedRequest, CALL_CONTEXT)) .thenReturn(ApiFutures.<GenerateConsistencyTokenResponse>immediateFailedFuture(fakeError)); ApiFuture<Void> future = callable.futureCall(TABLE_NAME, CALL_CONTEXT); Throwable actualError = null; try { future.get(); } catch (ExecutionException e) { actualError = e.getCause(); } assertThat(actualError).isSameAs(fakeError); }
@Test public void testImmediatelyConsistent() throws Exception { GenerateConsistencyTokenRequest expectedRequest = GenerateConsistencyTokenRequest.newBuilder().setName(TABLE_NAME.toString()).build(); GenerateConsistencyTokenResponse expectedResponse = GenerateConsistencyTokenResponse.newBuilder().setConsistencyToken("fake-token").build(); Mockito.when(mockGenerateConsistencyTokenCallable.futureCall(expectedRequest, CALL_CONTEXT)) .thenReturn(ApiFutures.immediateFuture(expectedResponse)); CheckConsistencyRequest expectedRequest2 = CheckConsistencyRequest.newBuilder() .setName(TABLE_NAME.toString()) .setConsistencyToken("fake-token") .build(); CheckConsistencyResponse expectedResponse2 = CheckConsistencyResponse.newBuilder().setConsistent(true).build(); Mockito.when(mockCheckConsistencyCallable.futureCall(expectedRequest2, CALL_CONTEXT)) .thenReturn(ApiFutures.immediateFuture(expectedResponse2)); ApiFuture<Void> consistentFuture = callable.futureCall(TABLE_NAME, CALL_CONTEXT); consistentFuture.get(1, TimeUnit.MILLISECONDS); }
@Test public void testCheckFailure() throws Exception { GenerateConsistencyTokenRequest expectedRequest = GenerateConsistencyTokenRequest.newBuilder().setName(TABLE_NAME.toString()).build(); GenerateConsistencyTokenResponse expectedResponse = GenerateConsistencyTokenResponse.newBuilder().setConsistencyToken("fake-token").build(); Mockito.when(mockGenerateConsistencyTokenCallable.futureCall(expectedRequest, CALL_CONTEXT)) .thenReturn(ApiFutures.immediateFuture(expectedResponse)); CheckConsistencyRequest expectedRequest2 = CheckConsistencyRequest.newBuilder() .setName(TABLE_NAME.toString()) .setConsistencyToken("fake-token") .build(); FakeApiException expectedError = new FakeApiException("fake", null, Code.INTERNAL, false); Mockito.when(mockCheckConsistencyCallable.futureCall(expectedRequest2, CALL_CONTEXT)) .thenReturn(ApiFutures.<CheckConsistencyResponse>immediateFailedFuture(expectedError)); ApiFuture<Void> future = callable.futureCall(TABLE_NAME, CALL_CONTEXT); Throwable actualError = null; try { future.get(); } catch (ExecutionException e) { actualError = e.getCause(); } assertThat(actualError).isSameAs(expectedError); }
.setName(name == null ? null : name.toString()) .setCluster(cluster == null ? null : cluster.toString()) .setSnapshotId(snapshotId == null ? null : snapshotId.toString())
@Test public void testPolling() throws Exception { GenerateConsistencyTokenRequest expectedRequest = GenerateConsistencyTokenRequest.newBuilder().setName(TABLE_NAME.toString()).build(); GenerateConsistencyTokenResponse expectedResponse = GenerateConsistencyTokenResponse.newBuilder().setConsistencyToken("fake-token").build(); Mockito.when(mockGenerateConsistencyTokenCallable.futureCall(expectedRequest, CALL_CONTEXT)) .thenReturn(ApiFutures.immediateFuture(expectedResponse)); CheckConsistencyRequest expectedRequest2 = CheckConsistencyRequest.newBuilder() .setName(TABLE_NAME.toString()) .setConsistencyToken("fake-token") .build(); CheckConsistencyResponse expectedResponse2 = CheckConsistencyResponse.newBuilder().setConsistent(false).build(); CheckConsistencyResponse expectedResponse3 = CheckConsistencyResponse.newBuilder().setConsistent(true).build(); Mockito.when(mockCheckConsistencyCallable.futureCall(expectedRequest2, CALL_CONTEXT)) .thenReturn(ApiFutures.immediateFuture(expectedResponse2)) .thenReturn(ApiFutures.immediateFuture(expectedResponse3)); ApiFuture<Void> consistentFuture = callable.futureCall(TABLE_NAME, CALL_CONTEXT); consistentFuture.get(1, TimeUnit.SECONDS); }
@Test @SuppressWarnings("all") public void modifyColumnFamiliesTest() { TableName name2 = TableName.of("[PROJECT]", "[INSTANCE]", "[TABLE]"); Table expectedResponse = Table.newBuilder().setName(name2.toString()).build(); mockBigtableTableAdmin.addResponse(expectedResponse); TableName name = TableName.of("[PROJECT]", "[INSTANCE]", "[TABLE]"); List<ModifyColumnFamiliesRequest.Modification> modifications = new ArrayList<>(); Table actualResponse = client.modifyColumnFamilies(name, modifications); Assert.assertEquals(expectedResponse, actualResponse); List<GeneratedMessageV3> actualRequests = mockBigtableTableAdmin.getRequests(); Assert.assertEquals(1, actualRequests.size()); ModifyColumnFamiliesRequest actualRequest = (ModifyColumnFamiliesRequest) actualRequests.get(0); Assert.assertEquals(name, TableName.parse(actualRequest.getName())); Assert.assertEquals(modifications, actualRequest.getModificationsList()); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), GaxGrpcProperties.getDefaultApiClientHeaderPattern())); }
@Test @SuppressWarnings("all") public void getTableTest() { TableName name2 = TableName.of("[PROJECT]", "[INSTANCE]", "[TABLE]"); Table expectedResponse = Table.newBuilder().setName(name2.toString()).build(); mockBigtableTableAdmin.addResponse(expectedResponse); TableName name = TableName.of("[PROJECT]", "[INSTANCE]", "[TABLE]"); Table actualResponse = client.getTable(name); Assert.assertEquals(expectedResponse, actualResponse); List<GeneratedMessageV3> actualRequests = mockBigtableTableAdmin.getRequests(); Assert.assertEquals(1, actualRequests.size()); GetTableRequest actualRequest = (GetTableRequest) actualRequests.get(0); Assert.assertEquals(name, TableName.parse(actualRequest.getName())); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), GaxGrpcProperties.getDefaultApiClientHeaderPattern())); }
@Test @SuppressWarnings("all") public void createTableTest() { TableName name = TableName.of("[PROJECT]", "[INSTANCE]", "[TABLE]"); Table expectedResponse = Table.newBuilder().setName(name.toString()).build(); mockBigtableTableAdmin.addResponse(expectedResponse); InstanceName parent = InstanceName.of("[PROJECT]", "[INSTANCE]"); String tableId = "tableId-895419604"; Table table = Table.newBuilder().build(); Table actualResponse = client.createTable(parent, tableId, table); Assert.assertEquals(expectedResponse, actualResponse); List<GeneratedMessageV3> actualRequests = mockBigtableTableAdmin.getRequests(); Assert.assertEquals(1, actualRequests.size()); CreateTableRequest actualRequest = (CreateTableRequest) actualRequests.get(0); Assert.assertEquals(parent, InstanceName.parse(actualRequest.getParent())); Assert.assertEquals(tableId, actualRequest.getTableId()); Assert.assertEquals(table, actualRequest.getTable()); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), GaxGrpcProperties.getDefaultApiClientHeaderPattern())); }
com.google.bigtable.admin.v2.Table proto = com.google.bigtable.admin.v2.Table.newBuilder() .setName(testName.toString()) .setGranularity(TimestampGranularity.MILLIS) .putClusterStates(
public void createTableFromSnapshotTest() throws Exception { TableName name = TableName.of("[PROJECT]", "[INSTANCE]", "[TABLE]"); Table expectedResponse = Table.newBuilder().setName(name.toString()).build(); Operation resultOperation = Operation.newBuilder()