test_region_service.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. from cloudbridge.cloud.interfaces import Region
  2. from test.helpers import ProviderTestBase
  3. import test.helpers as helpers
  4. class CloudRegionServiceTestCase(ProviderTestBase):
  5. def __init__(self, methodName, provider):
  6. super(CloudRegionServiceTestCase, self).__init__(
  7. methodName=methodName, provider=provider)
  8. def test_get_and_list_regions(self):
  9. """
  10. Test whether the region listing methods work,
  11. and whether zones are returned appropriately.
  12. """
  13. regions = self.provider.compute.regions.list()
  14. # check iteration
  15. iter_regions = list(self.provider.compute.regions)
  16. self.assertListEqual(iter_regions, regions)
  17. for region in regions:
  18. self.assertIsInstance(
  19. region,
  20. Region,
  21. "regions.list() should return a cloudbridge Region")
  22. self.assertTrue(
  23. region.name,
  24. "Region name should be a non-empty string")
  25. region = self.provider.compute.regions.get(regions[0].id)
  26. self.assertEqual(
  27. region,
  28. regions[0],
  29. "List and get methods should return the same regions")
  30. self.assertTrue(
  31. region.id in repr(region),
  32. "repr(obj) should contain the object id so that the object"
  33. " can be reconstructed, but does not.")
  34. self.assertTrue(
  35. region.name in region.to_json(),
  36. "Region name {0} not in JSON representation {1}".format(
  37. region.name, region.to_json()))
  38. def test_regions_unique(self):
  39. """
  40. Regions should not return duplicate items
  41. """
  42. regions = self.provider.compute.regions.list()
  43. unique_regions = set([region.id for region in regions])
  44. self.assertTrue(len(regions) == len(list(unique_regions)))
  45. def test_zones(self):
  46. """
  47. Test whether regions return the correct zone information
  48. """
  49. zone_find_count = 0
  50. test_zone = helpers.get_provider_test_data(self.provider, "placement")
  51. regions = self.provider.compute.regions.list()
  52. for region in regions:
  53. self.assertTrue(region.name)
  54. for zone in region.zones:
  55. self.assertTrue(zone.id)
  56. self.assertTrue(zone.name)
  57. self.assertTrue(zone.region)
  58. if test_zone == zone.name:
  59. zone_find_count += 1
  60. # TODO: Can't do a check for zone_find_count == 1 because Moto
  61. # always returns the same zone for any region
  62. self.assertTrue(zone_find_count > 0,
  63. "The test zone: {0} should appear exactly"
  64. " once in the list of regions, but was not found"
  65. .format(test_zone, zone_find_count))