예제 #1
0
    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())
예제 #5
0
    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)