def test_read_w_ranges(self): ROW_COUNT = 4000 START = 1000 END = 2000 session, committed = self._set_up_table(ROW_COUNT) snapshot = session.snapshot(read_timestamp=committed, multi_use=True) all_data_rows = list(self._row_data(ROW_COUNT)) closed_closed = KeyRange(start_closed=[START], end_closed=[END]) keyset = KeySet(ranges=(closed_closed,)) rows = list(snapshot.read( self.TABLE, self.COLUMNS, keyset)) expected = all_data_rows[START:END+1] self._check_row_data(rows, expected) closed_open = KeyRange(start_closed=[START], end_open=[END]) keyset = KeySet(ranges=(closed_open,)) rows = list(snapshot.read( self.TABLE, self.COLUMNS, keyset)) expected = all_data_rows[START:END] self._check_row_data(rows, expected) open_open = KeyRange(start_open=[START], end_open=[END]) keyset = KeySet(ranges=(open_open,)) rows = list(snapshot.read( self.TABLE, self.COLUMNS, keyset)) expected = all_data_rows[START+1:END] self._check_row_data(rows, expected) open_closed = KeyRange(start_open=[START], end_closed=[END]) keyset = KeySet(ranges=(open_closed,)) rows = list(snapshot.read( self.TABLE, self.COLUMNS, keyset)) expected = all_data_rows[START+1:END+1] self._check_row_data(rows, expected)
def test_ctor_w_all_and_ranges(self): from google.cloud.spanner.keyset import KeyRange range_1 = KeyRange(start_closed=[u'key1'], end_open=[u'key3']) range_2 = KeyRange(start_open=[u'key5'], end_closed=[u'key6']) with self.assertRaises(ValueError): self._makeOne(all_=True, ranges=[range_1, range_2])
def test_ctor_w_ranges(self): from google.cloud.spanner.keyset import KeyRange range_1 = KeyRange(start_closed=[u'key1'], end_open=[u'key3']) range_2 = KeyRange(start_open=[u'key5'], end_closed=[u'key6']) keyset = self._makeOne(ranges=[range_1, range_2]) self.assertFalse(keyset.all_) self.assertEqual(keyset.keys, []) self.assertEqual(keyset.ranges, [range_1, range_2])
def test_to_pb_w_only_ranges(self): from google.cloud.proto.spanner.v1.keys_pb2 import KeySet from google.cloud.spanner.keyset import KeyRange KEY_1 = u'KEY_1' KEY_2 = u'KEY_2' KEY_3 = u'KEY_3' KEY_4 = u'KEY_4' RANGES = [ KeyRange(start_open=KEY_1, end_closed=KEY_2), KeyRange(start_closed=KEY_3, end_open=KEY_4), ] keyset = self._makeOne(ranges=RANGES) result = keyset.to_pb() self.assertIsInstance(result, KeySet) self.assertFalse(result.all) self.assertEqual(len(result.keys), 0) self.assertEqual(len(result.ranges), len(RANGES)) for found, expected in zip(result.ranges, RANGES): self.assertEqual(found, expected.to_pb())
def test_read_w_range(self): from google.cloud.spanner.keyset import KeyRange ROW_COUNT = 4000 START_CLOSED = 1000 END_OPEN = 2000 session, committed = self._set_up_table(ROW_COUNT) key_range = KeyRange(start_closed=[START_CLOSED], end_open=[END_OPEN]) keyset = KeySet(ranges=(key_range, )) snapshot = session.snapshot(read_timestamp=committed) rows = list(snapshot.read(self.TABLE, self.COLUMNS, keyset)) all_data_rows = list(self._row_data(ROW_COUNT)) expected = all_data_rows[START_CLOSED:END_OPEN] self._check_row_data(rows, expected)