def test_state_new_row_w_row(self): from google.cloud.bigtable_v2.gapic import bigtable_client chunk = _ReadRowsResponseCellChunkPB( row_key=self.ROW_KEY, family_name=self.FAMILY_NAME, qualifier=self.QUALIFIER, timestamp_micros=self.TIMESTAMP_MICROS, value=self.VALUE, commit_row=True, ) chunks = [chunk] response = _ReadRowsResponseV2(chunks) iterator = _MockCancellableIterator(response) channel = ChannelStub(responses=[iterator]) data_api = bigtable_client.BigtableClient(channel=channel) credentials = _make_credentials() client = self._make_client(project="project-id", credentials=credentials, admin=True) client._table_data_client = data_api request = object() yrd = self._make_one(client._table_data_client.transport.read_rows, request) yrd._response_iterator = iterator rows = [row for row in yrd] result = rows[0] self.assertEqual(result.row_key, self.ROW_KEY) self.assertEqual(yrd._counter, 1) self.assertEqual(yrd.state, yrd.NEW_ROW)
def test_commit(self): from google.cloud.bigtable.row_filters import RowSampleFilter from google.cloud.bigtable_v2.gapic import bigtable_client project_id = "project-id" row_key = b"row_key" table_name = "projects/more-stuff" app_profile_id = "app_profile_id" column_family_id1 = u"column_family_id1" column_family_id2 = u"column_family_id2" column_family_id3 = u"column_family_id3" column1 = b"column1" column2 = b"column2" api = bigtable_client.BigtableClient(mock.Mock()) credentials = _make_credentials() client = self._make_client( project=project_id, credentials=credentials, admin=True ) table = _Table(table_name, client=client, app_profile_id=app_profile_id) row_filter = RowSampleFilter(0.33) row = self._make_one(row_key, table, filter_=row_filter) # Create request_pb value1 = b"bytes-value" # Create response_pb predicate_matched = True response_pb = _CheckAndMutateRowResponsePB(predicate_matched=predicate_matched) # Patch the stub used by the API method. api.transport.check_and_mutate_row.side_effect = [response_pb] client._table_data_client = api # Create expected_result. expected_result = predicate_matched # Perform the method and check the result. row.set_cell(column_family_id1, column1, value1, state=True) row.delete(state=False) row.delete_cell(column_family_id2, column2, state=True) row.delete_cells(column_family_id3, row.ALL_COLUMNS, state=True) result = row.commit() call_args = api.transport.check_and_mutate_row.call_args.args[0] self.assertEqual(app_profile_id, call_args.app_profile_id) self.assertEqual(result, expected_result) self.assertEqual(row._true_pb_mutations, []) self.assertEqual(row._false_pb_mutations, [])
def test_commit(self): from google.cloud.bigtable.row_filters import RowSampleFilter from google.cloud.bigtable_v2.gapic import bigtable_client project_id = 'project-id' row_key = b'row_key' table_name = 'projects/more-stuff' column_family_id1 = u'column_family_id1' column_family_id2 = u'column_family_id2' column_family_id3 = u'column_family_id3' column1 = b'column1' column2 = b'column2' api = bigtable_client.BigtableClient(mock.Mock()) credentials = _make_credentials() client = self._make_client(project=project_id, credentials=credentials, admin=True) table = _Table(table_name, client=client) row_filter = RowSampleFilter(0.33) row = self._make_one(row_key, table, filter_=row_filter) # Create request_pb value1 = b'bytes-value' # Create response_pb predicate_matched = True response_pb = _CheckAndMutateRowResponsePB( predicate_matched=predicate_matched) # Patch the stub used by the API method. client._table_data_client = api bigtable_stub = client._table_data_client.bigtable_stub bigtable_stub.CheckAndMutateRow.side_effect = [[response_pb]] # Create expected_result. expected_result = predicate_matched # Perform the method and check the result. row.set_cell(column_family_id1, column1, value1, state=True) row.delete(state=False) row.delete_cell(column_family_id2, column2, state=True) row.delete_cells(column_family_id3, row.ALL_COLUMNS, state=True) result = row.commit() self.assertEqual(result, expected_result) self.assertEqual(row._true_pb_mutations, []) self.assertEqual(row._false_pb_mutations, [])
def test_commit(self): from google.cloud._testing import _Monkey from google.cloud.bigtable import row as MUT from google.cloud.bigtable_v2.gapic import bigtable_client project_id = "project-id" row_key = b"row_key" table_name = "projects/more-stuff" app_profile_id = "app_profile_id" column_family_id = u"column_family_id" column = b"column" api = bigtable_client.BigtableClient(mock.Mock()) credentials = _make_credentials() client = self._make_client( project=project_id, credentials=credentials, admin=True ) table = _Table(table_name, client=client, app_profile_id=app_profile_id) row = self._make_one(row_key, table) # Create request_pb value = b"bytes-value" # Create expected_result. row_responses = [] expected_result = object() # Patch API calls client._table_data_client = api def mock_parse_rmw_row_response(row_response): row_responses.append(row_response) return expected_result # Perform the method and check the result. with _Monkey(MUT, _parse_rmw_row_response=mock_parse_rmw_row_response): row.append_cell_value(column_family_id, column, value) result = row.commit() call_args = api.transport.read_modify_write_row.call_args.args[0] self.assertEqual(app_profile_id, call_args.app_profile_id) self.assertEqual(result, expected_result) self.assertEqual(row._rule_pb_list, [])
def test_commit(self): from google.protobuf import empty_pb2 from google.cloud.bigtable_v2.gapic import bigtable_client project_id = 'project-id' row_key = b'row_key' table_name = 'projects/more-stuff' column_family_id = u'column_family_id' column = b'column' api = bigtable_client.BigtableClient(mock.Mock()) credentials = _make_credentials() client = self._make_client(project=project_id, credentials=credentials, admin=True) table = _Table(table_name, client=client) row = self._make_one(row_key, table) # Create request_pb value = b'bytes-value' # Create response_pb response_pb = empty_pb2.Empty() # Patch the stub used by the API method. client._table_data_client = api bigtable_stub = client._table_data_client.bigtable_stub bigtable_stub.MutateRow.side_effect = [response_pb] # Create expected_result. expected_result = None # commit() has no return value when no filter. # Perform the method and check the result. row.set_cell(column_family_id, column, value) result = row.commit() self.assertEqual(result, expected_result) self.assertEqual(row._pb_mutations, [])