DataClientVeneerApi implements DataClientWrapper { @Override public ApiFuture<List<KeyOffset>> sampleRowKeysAsync(String tableId) { return delegate.sampleRowKeysAsync(tableId); } DataClientVeneerApi(BigtableDataClient delegate); @Override BulkMutationWrapper createBulkMutation(String tableId); @Override BulkReadWrapper createBulkRead(String tableId); @Override ApiFuture<Void> mutateRowAsync(RowMutation rowMutation); @Override ApiFuture<Result> readModifyWriteRowAsync(ReadModifyWriteRow readModifyWriteRow); @Override ApiFuture<Boolean> checkAndMutateRowAsync(ConditionalRowMutation conditionalRowMutation); @Override ApiFuture<List<KeyOffset>> sampleRowKeysAsync(String tableId); @Override ApiFuture<Result> readRowAsync(
      String tableId, ByteString rowKey, @Nullable Filters.Filter filter); @Override ResultScanner readRows(Query request); @Override ApiFuture<List<Result>> readRowsAsync(Query request); @Override void readRowsAsync(Query request, StreamObserver<Result> observer); @Override void close();  }
@Test public void testSampleRowKeysAsync() throws Exception { List<KeyOffset> keyOffsets = ImmutableList.of( KeyOffset.create(ByteString.copyFromUtf8("a"), 1), KeyOffset.create(ByteString.copyFromUtf8("z"), 1)); when(mockDataClient.sampleRowKeysAsync(TABLE_ID)) .thenReturn(ApiFutures.immediateFuture(keyOffsets)); assertEquals(keyOffsets, dataClientWrapper.sampleRowKeysAsync(TABLE_ID).get()); verify(mockDataClient).sampleRowKeysAsync(TABLE_ID); }