diff options
author | Jenkins <jenkins@review.openstack.org> | 2016-03-18 07:15:35 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2016-03-18 07:15:36 +0000 |
commit | c64c3936c174835c7ac1bd9ea9b82b4ae0aab113 (patch) | |
tree | 53500468628bdba23ee7dc9853890a36b0ccc482 | |
parent | 77b6ea0bc5bb942fecd555dae852603fc6276ee6 (diff) | |
parent | 83a87ce2fb7bbfea2f94539e14c7c70341f091dd (diff) | |
download | trove-c64c3936c174835c7ac1bd9ea9b82b4ae0aab113.tar.gz |
Merge "Fix pagination function"
-rw-r--r-- | trove/common/pagination.py | 3 | ||||
-rw-r--r-- | trove/tests/scenario/runners/user_actions_runners.py | 28 | ||||
-rw-r--r-- | trove/tests/unittests/common/test_pagination.py | 23 | ||||
-rw-r--r-- | trove/tests/unittests/guestagent/test_mongodb_manager.py | 2 |
4 files changed, 44 insertions, 12 deletions
diff --git a/trove/common/pagination.py b/trove/common/pagination.py index 6f57e54f..2946d306 100644 --- a/trove/common/pagination.py +++ b/trove/common/pagination.py @@ -40,7 +40,8 @@ def paginate_list(li, limit=None, marker=None, include_marker=False): pos = bisect.bisect(li, marker) if limit and pos + limit < len(li): - return li[pos:pos + limit], li[pos + limit] + page = li[pos:pos + limit] + return page, page[-1] else: return li[pos:], None diff --git a/trove/tests/scenario/runners/user_actions_runners.py b/trove/tests/scenario/runners/user_actions_runners.py index baee6f66..e710bcb8 100644 --- a/trove/tests/scenario/runners/user_actions_runners.py +++ b/trove/tests/scenario/runners/user_actions_runners.py @@ -70,10 +70,10 @@ class UserActionsRunner(TestRunner): def _assert_user_matches(self, user, expected_user_def): user_name = expected_user_def['name'] - self.assert_equal(user.name, expected_user_def['name'], + self.assert_equal(expected_user_def['name'], user.name, "Mismatch of names for user: %s" % user_name) self.assert_list_elements_equal( - user.databases, expected_user_def['databases'], + expected_user_def['databases'], user.databases, "Mismatch of databases for user: %s" % user_name) def run_users_list(self, expected_http_code=200): @@ -116,8 +116,7 @@ class UserActionsRunner(TestRunner): self.assert_pagination_match(list_page, full_list, 0, limit) if marker: last_user = list_page[-1] - expected_marker = urllib_parse.quote( - '%s@%s' % (last_user.name, last_user.host)) + expected_marker = self.as_pagination_marker(last_user) self.assert_equal(expected_marker, marker, "Pagination marker should be the last element " "in the page.") @@ -126,6 +125,9 @@ class UserActionsRunner(TestRunner): self.assert_pagination_match( list_page, full_list, limit, len(full_list)) + def as_pagination_marker(self, user): + return urllib_parse.quote(user.name) + def run_user_create_with_no_attributes( self, expected_exception=exceptions.BadRequest, expected_http_code=400): @@ -352,3 +354,21 @@ class UserActionsRunner(TestRunner): def get_system_users(self): return self.get_datastore_config_property('ignore_users') + + +class MysqlUserActionsRunner(UserActionsRunner): + + def as_pagination_marker(self, user): + return urllib_parse.quote('%s@%s' % (user.name, user.host)) + + +class MariadbUserActionsRunner(MysqlUserActionsRunner): + + def __init__(self): + super(MariadbUserActionsRunner, self).__init__() + + +class PerconaUserActionsRunner(MysqlUserActionsRunner): + + def __init__(self): + super(PerconaUserActionsRunner, self).__init__() diff --git a/trove/tests/unittests/common/test_pagination.py b/trove/tests/unittests/common/test_pagination.py index 73978018..38d54d8c 100644 --- a/trove/tests/unittests/common/test_pagination.py +++ b/trove/tests/unittests/common/test_pagination.py @@ -47,18 +47,29 @@ class TestPaginatedDataView(trove_testtools.TestCase): # start list li_1, marker_1 = self._do_paginate_list(limit=2) self.assertEqual(['a', 'b'], li_1) - self.assertEqual('c', marker_1) + self.assertEqual('b', marker_1) # continue list, do not include marker in result li_2, marker_2 = self._do_paginate_list(limit=2, marker=marker_1) - self.assertEqual(['d', 'e'], li_2) - self.assertIsNone(marker_2) + self.assertEqual(['c', 'd'], li_2) + self.assertEqual('d', marker_2) + li_3, marker_3 = self._do_paginate_list(limit=2, marker=marker_2) + self.assertEqual(['e'], li_3) + self.assertIsNone(marker_3) # alternate continue list, include marker in result - li_3, marker_3 = self._do_paginate_list(limit=2, marker=marker_1, + li_4, marker_4 = self._do_paginate_list(limit=2, marker=marker_1, include_marker=True) - self.assertEqual(['c', 'd'], li_3) - self.assertEqual('e', marker_3) + self.assertEqual(['b', 'c'], li_4) + self.assertEqual('c', marker_4) + li_5, marker_5 = self._do_paginate_list(limit=2, marker=marker_4, + include_marker=True) + self.assertEqual(['c', 'd'], li_5) + self.assertEqual('d', marker_5) + li_6, marker_6 = self._do_paginate_list(limit=2, marker=marker_5, + include_marker=True) + self.assertEqual(['d', 'e'], li_6) + self.assertIsNone(marker_6) # bad marker li_4, marker_4 = self._do_paginate_list(marker='f') diff --git a/trove/tests/unittests/guestagent/test_mongodb_manager.py b/trove/tests/unittests/guestagent/test_mongodb_manager.py index 4b9edec6..f1322211 100644 --- a/trove/tests/unittests/guestagent/test_mongodb_manager.py +++ b/trove/tests/unittests/guestagent/test_mongodb_manager.py @@ -353,7 +353,7 @@ class GuestAgentMongoDBManagerTest(trove_testtools.TestCase): self.assertEqual([models.MongoDBSchema('db1').serialize(), models.MongoDBSchema('db2').serialize()], dbs) - self.assertEqual(models.MongoDBSchema('db3').serialize(), + self.assertEqual(models.MongoDBSchema('db2').serialize(), next_marker) @mock.patch.object(service, 'MongoDBClient') |