BigtableDataGCJClient implements IBigtableDataClient, AutoCloseable { @Override public Row readModifyWriteRow(ReadModifyWriteRow readModifyWriteRow) { return delegate.readModifyWriteRow(readModifyWriteRow); } 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 testReadModifyWriteRow() { ReadModifyWriteRow mutation = ReadModifyWriteRow.create(TABLE_ID, ROW_KEY); Row expectedRow = Row.create( ByteString.copyFromUtf8(ROW_KEY), ImmutableList.of(RowCell.create(COL_FAMILY, QUALIFIER_1, TIMESTAMP, LABELS, VALUE_1))); when(dataClientV2.readModifyWriteRow(mutation)).thenReturn(expectedRow); Row actualRow = dataGCJClient.readModifyWriteRow(mutation); assertEquals(expectedRow, actualRow); verify(dataClientV2).readModifyWriteRow(mutation); }