From 010834d61c8c36524d472f99c3f4b349ab71f031 Mon Sep 17 00:00:00 2001 From: Chris Wilcox Date: Tue, 31 Mar 2020 15:44:11 -0700 Subject: [PATCH] test: add tests for large offsets in datastore --- tests/system/test_system.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tests/system/test_system.py b/tests/system/test_system.py index 482b0b80..96e71faa 100644 --- a/tests/system/test_system.py +++ b/tests/system/test_system.py @@ -405,6 +405,18 @@ def test_query_offset_timestamp_keys(self): offset_w_limit = list(query.fetch(offset=offset, limit=max_offset)) self.assertEqual(offset_w_limit, all_w_limit[offset:]) + def test_query_large_offset_timestamp_keys(self): + # See issue #4675 + max_all = 10000 + offset = 21 + max_offset = max_all - offset + query = self.CLIENT.query(kind="timestamp_key") + all_w_limit = list(query.fetch(limit=max_all)) + self.assertEqual(len(all_w_limit), max_all) + + offset_w_limit = list(query.fetch(offset=offset, limit=max_offset)) + self.assertEqual(offset_w_limit, all_w_limit[offset:]) + def test_query_paginate_with_offset(self): page_query = self._base_query() page_query.order = "appearances" @@ -429,6 +441,24 @@ def test_query_paginate_with_offset(self): self.assertEqual(entities[1]["name"], "Jon Snow") self.assertEqual(entities[2]["name"], "Arya") + def test_query_paginate_with_large_offset(self): + page_query = self._base_query() + page_query.order = "appearances" + offset = 21 + limit = 3 + iterator = page_query.fetch(limit=limit, offset=offset) + + # Fetch characters. + page = six.next(iterator.pages) + entities = list(page) + cursor = iterator.next_page_token + self.assertEqual(len(entities), 0) + + # Fetch next set of characters. + new_iterator = page_query.fetch(limit=limit, offset=0, start_cursor=cursor) + entities = list(new_iterator) + self.assertEqual(len(entities), 0) + def test_query_paginate_with_start_cursor(self): page_query = self._base_query() page_query.order = "appearances"