/** Request funnel for all read/write requests. */ <RequestT, ResponseT> ApiFuture<ResponseT> sendRequest( RequestT requestT, UnaryCallable<RequestT, ResponseT> callable) { Preconditions.checkState(!closed, "Firestore client has already been closed"); return callable.futureCall(requestT); }
@Override public ApiFuture<Empty> delete(DeleteSinkRequest request) { return translate( configClient.deleteSinkCallable().futureCall(request), true, StatusCode.Code.NOT_FOUND); }
@Override public ApiFuture<ListMonitoredResourceDescriptorsResponse> list( ListMonitoredResourceDescriptorsRequest request) { return translate( loggingClient.listMonitoredResourceDescriptorsCallable().futureCall(request), true); }
@Override public ApiFuture<Empty> delete(DeleteLogMetricRequest request) { return translate( metricsClient.deleteLogMetricCallable().futureCall(request), true, StatusCode.Code.NOT_FOUND); }
@Override public ApiFuture<Empty> delete(DeleteLogRequest request) { return translate( loggingClient.deleteLogCallable().futureCall(request), true, StatusCode.Code.NOT_FOUND); }
@Override public ApiFuture<LogMetric> get(GetLogMetricRequest request) { return translate( metricsClient.getLogMetricCallable().futureCall(request), true, StatusCode.Code.NOT_FOUND); }
@Override public CommitResponse commit(CommitRequest commitRequest, @Nullable Map<Option, ?> options) throws SpannerException { GrpcCallContext context = newCallContext(options, commitRequest.getSession()); return get(spannerStub.commitCallable().futureCall(commitRequest, context)); }
@Override public void rollback(RollbackRequest request, @Nullable Map<Option, ?> options) throws SpannerException { GrpcCallContext context = newCallContext(options, request.getSession()); get(spannerStub.rollbackCallable().futureCall(request, context)); }
@Override public PartitionResponse partitionRead( PartitionReadRequest request, @Nullable Map<Option, ?> options) throws SpannerException { GrpcCallContext context = newCallContext(options, request.getSession()); return get(spannerStub.partitionReadCallable().futureCall(request, context)); }
@SuppressWarnings("unchecked") @Before public void setUp() { innerCallable = Mockito.mock(UnaryCallable.class); innerMutation = ArgumentCaptor.forClass(MutateRowRequest.class); innerResult = SettableApiFuture.create(); Mockito.when( innerCallable.futureCall(innerMutation.capture(), Mockito.any(ApiCallContext.class))) .thenReturn(innerResult); }
@Override public void deleteSession(String sessionName, @Nullable Map<Option, ?> options) throws SpannerException { DeleteSessionRequest request = DeleteSessionRequest.newBuilder().setName(sessionName).build(); GrpcCallContext context = newCallContext(options, sessionName); get(spannerStub.deleteSessionCallable().futureCall(request, context)); }
@Test public void checkAndMutateRowTest() { Mockito.when(mockCheckAndMutateRowCallable.futureCall(any(ConditionalRowMutation.class))) .thenReturn(ApiFutures.immediateFuture(Boolean.TRUE)); ConditionalRowMutation mutation = ConditionalRowMutation.create("fake-table", "fake-key") .then(Mutation.create().setCell("fake-family", "fake-qualifier", "fake-value")); bigtableDataClient.checkAndMutateRow(mutation); Mockito.verify(mockCheckAndMutateRowCallable).futureCall(mutation); }
@Override public Instance getInstance(String instanceName) throws SpannerException { GetInstanceRequest request = GetInstanceRequest.newBuilder().setName(instanceName).build(); GrpcCallContext context = newCallContext(null, instanceName); return get(instanceAdminStub.getInstanceCallable().futureCall(request, context)); }
@Override public Database getDatabase(String databaseName) throws SpannerException { GetDatabaseRequest request = GetDatabaseRequest.newBuilder().setName(databaseName).build(); GrpcCallContext context = newCallContext(null, databaseName); return get(databaseAdminStub.getDatabaseCallable().futureCall(request, context)); }
@Test public void readRowTest() { Row expectedRow = Row.create(ByteString.copyFromUtf8("fake-row-key"), ImmutableList.<RowCell>of()); Mockito.when(mockReadRowCallable.futureCall(Query.create("fake-table").rowKey("fake-row-key"))) .thenReturn(ApiFutures.immediateFuture(expectedRow)); Row actualRow = bigtableDataClient.readRow("fake-table", ByteString.copyFromUtf8("fake-row-key")); assertThat(actualRow).isEqualTo(expectedRow); }
@Test public void readRowStrTest() { Row expectedRow = Row.create(ByteString.copyFromUtf8("fake-row-key"), ImmutableList.<RowCell>of()); Mockito.when(mockReadRowCallable.futureCall(Query.create("fake-table").rowKey("fake-row-key"))) .thenReturn(ApiFutures.immediateFuture(expectedRow)); Row actualRow = bigtableDataClient.readRow("fake-table", "fake-row-key"); assertThat(actualRow).isEqualTo(expectedRow); }
@Test public void testExistsTrue() { // Setup com.google.bigtable.admin.v2.Table expectedResponse = com.google.bigtable.admin.v2.Table.newBuilder().setName(TABLE_NAME.toString()).build(); Mockito.when(mockGetTableCallable.futureCall(Matchers.any(GetTableRequest.class))) .thenReturn(ApiFutures.immediateFuture(expectedResponse)); // Execute boolean found = adminClient.exists(TABLE_ID); // Verify assertThat(found).isTrue(); }
@Test public void proxyMutateRowTest() { RowMutation request = RowMutation.create("fake-table", "some-key") .setCell("some-family", "fake-qualifier", "fake-value"); bigtableDataClient.mutateRowAsync(request); Mockito.verify(mockMutateRowCallable).futureCall(request); }
@Test public void readRowFilterAsyncTest() { // Build the filter expression Filter filter = FILTERS .chain() .filter(FILTERS.qualifier().regex("prefix.*")) .filter(FILTERS.limit().cellsPerRow(10)); bigtableDataClient.readRowAsync("fake-table", ByteString.copyFromUtf8("fake-row-key"), filter); Mockito.verify(mockReadRowCallable) .futureCall(Query.create("fake-table").rowKey("fake-row-key").filter(filter)); }
@Test public void readRowFilterStrAsyncTest() { // Build the filter expression Filter filter = FILTERS .chain() .filter(FILTERS.qualifier().regex("prefix.*")) .filter(FILTERS.limit().cellsPerRow(10)); bigtableDataClient.readRowAsync("fake-table", "fake-row-key", filter); Mockito.verify(mockReadRowCallable) .futureCall(Query.create("fake-table").rowKey("fake-row-key").filter(filter)); }