BigtableDataGCJClient implements IBigtableDataClient, AutoCloseable { @Override public ApiFuture<List<Row>> readRowsAsync(Query request) { return delegate.readRowsCallable().all().futureCall(request); } BigtableDataGCJClient(BigtableDataClient delegate); @Override void mutateRow(RowMutation rowMutation); @Override ApiFuture<Void> mutateRowAsync(RowMutation rowMutation); @Override Row readModifyWriteRow(ReadModifyWriteRow readModifyWriteRow); @Override ApiFuture<Row> readModifyWriteRowAsync(ReadModifyWriteRow readModifyWriteRow); @Override IBulkMutation createBulkMutationBatcher(String tableId); @Override Boolean checkAndMutateRow(ConditionalRowMutation conditionalRowMutation); @Override ApiFuture<Boolean> checkAndMutateRowAsync(ConditionalRowMutation conditionalRowMutation); @Override List<KeyOffset> sampleRowKeys(String tableId); @Override ApiFuture<List<KeyOffset>> sampleRowKeysAsync(String tableId); @Override ResultScanner<Row> readRows(Query request); @Override ApiFuture<List<Row>> readRowsAsync(Query request); @Override List<FlatRow> readFlatRowsList(Query request); @Override ResultScanner<FlatRow> readFlatRows(Query request); @Override ApiFuture<List<FlatRow>> readFlatRowsAsync(Query request); @Override void readFlatRowsAsync(Query request, StreamObserver<FlatRow> observer); @Override void close();  }
@Test public void testReadRowAsync() throws Exception { ServerStreamingCallable<Query, Row> serverStreaming = mock(ServerStreamingCallable.class); UnaryCallable<Query, List<Row>> unaryCallable = mock(UnaryCallable.class); List<Row> expectedRows = ImmutableList.of( Row.create( ByteString.copyFromUtf8(ROW_KEY), ImmutableList.of( RowCell.create(COL_FAMILY, QUALIFIER_1, TIMESTAMP, LABELS, VALUE_1))), Row.create( ByteString.copyFromUtf8("row-key-2"), ImmutableList.of( RowCell.create(COL_FAMILY, QUALIFIER_2, TIMESTAMP, LABELS, VALUE_2)))); when(dataClientV2.readRowsCallable()).thenReturn(serverStreaming); when(serverStreaming.all()).thenReturn(unaryCallable); when(unaryCallable.futureCall(request)).thenReturn(immediateFuture(expectedRows)); ApiFuture<List<Row>> actualRows = dataGCJClient.readRowsAsync(request); assertEquals(expectedRows, actualRows.get()); verify(dataClientV2).readRowsCallable(); verify(serverStreaming).all(); verify(unaryCallable).futureCall(request); }