test_cloud_helpers.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import itertools
  2. from cloudbridge.cloud.base.resources import ClientPagedResultList
  3. from cloudbridge.cloud.base.resources import ServerPagedResultList
  4. from test.helpers import ProviderTestBase
  5. class DummyResult(object):
  6. def __init__(self, objid, name):
  7. self.id = objid
  8. self.name = name
  9. def __repr__(self):
  10. return "%s (%s)" % (self.id, self.name)
  11. class CloudHelpersTestCase(ProviderTestBase):
  12. _multiprocess_can_split_ = True
  13. def setUp(self):
  14. super(CloudHelpersTestCase, self).setUp()
  15. self.objects = [DummyResult(1, "One"),
  16. DummyResult(2, "Two"),
  17. DummyResult(3, "Three"),
  18. DummyResult(4, "Four"),
  19. ]
  20. def test_client_paged_result_list(self):
  21. objects = self.objects
  22. # A list with limit=2 and marker=None
  23. results = ClientPagedResultList(self.provider, objects, 2, None)
  24. self.assertListEqual(results, list(itertools.islice(objects, 2)))
  25. self.assertEqual(results.marker, objects[1].id)
  26. self.assertTrue(results.is_truncated)
  27. self.assertTrue(results.supports_total)
  28. self.assertEqual(results.total_results, 4)
  29. self.assertEqual(results.data, objects)
  30. # A list with limit=2 and marker=2
  31. results = ClientPagedResultList(self.provider, objects, 2, 2)
  32. self.assertListEqual(results, list(itertools.islice(objects, 2, 4)))
  33. self.assertEqual(results.marker, None)
  34. self.assertFalse(results.is_truncated)
  35. self.assertTrue(results.supports_total)
  36. self.assertEqual(results.total_results, 4)
  37. self.assertEqual(results.data, objects)
  38. # A list with limit=2 and marker=3
  39. results = ClientPagedResultList(self.provider, objects, 2, 3)
  40. self.assertListEqual(results, list(itertools.islice(objects, 3, 4)))
  41. self.assertFalse(results.is_truncated)
  42. self.assertEqual(results.marker, None)
  43. self.assertEqual(results.data, objects)
  44. self.assertFalse(results.supports_server_paging, "Client paged result"
  45. " lists should return False for server paging.")
  46. def test_server_paged_result_list(self):
  47. objects = list(itertools.islice(self.objects, 2))
  48. results = ServerPagedResultList(is_truncated=True,
  49. marker=objects[-1].id,
  50. supports_total=True,
  51. total=2, data=objects)
  52. self.assertTrue(results.is_truncated)
  53. self.assertListEqual(results, objects)
  54. self.assertEqual(results.marker, objects[-1].id)
  55. self.assertTrue(results.supports_total)
  56. self.assertEqual(results.total_results, 2)
  57. self.assertTrue(results.supports_server_paging, "Server paged result"
  58. " lists should return True for server paging.")
  59. with self.assertRaises(NotImplementedError):
  60. results.data