test_region_service.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. from test import helpers
  2. from test.helpers import ProviderTestBase
  3. from test.helpers import standard_interface_tests as sit
  4. from cloudbridge.cloud.interfaces import Region
  5. import six
  6. class CloudRegionServiceTestCase(ProviderTestBase):
  7. @helpers.skipIfNoService(['compute.regions'])
  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 = list(self.provider.compute.regions)
  14. sit.check_standard_behaviour(
  15. self, self.provider.compute.regions, regions[-1])
  16. for region in regions:
  17. self.assertIsInstance(
  18. region,
  19. Region,
  20. "regions.list() should return a cloudbridge Region")
  21. self.assertTrue(
  22. region.name,
  23. "Region name should be a non-empty string")
  24. @helpers.skipIfNoService(['compute.regions'])
  25. def test_regions_unique(self):
  26. """
  27. Regions should not return duplicate items
  28. """
  29. regions = self.provider.compute.regions.list()
  30. unique_regions = set([region.id for region in regions])
  31. self.assertTrue(len(regions) == len(list(unique_regions)))
  32. @helpers.skipIfNoService(['compute.regions'])
  33. def test_current_region(self):
  34. """
  35. RegionService.current should return a valid region
  36. """
  37. current_region = self.provider.compute.regions.current
  38. self.assertIsInstance(current_region, Region)
  39. self.assertTrue(current_region in self.provider.compute.regions)
  40. @helpers.skipIfNoService(['compute.regions'])
  41. def test_zones(self):
  42. """
  43. Test whether regions return the correct zone information
  44. """
  45. zone_find_count = 0
  46. test_zone = helpers.get_provider_test_data(self.provider, "placement")
  47. for region in self.provider.compute.regions:
  48. self.assertTrue(region.name)
  49. for zone in region.zones:
  50. self.assertTrue(zone.id)
  51. self.assertTrue(zone.name)
  52. self.assertTrue(zone.region_name is None or
  53. isinstance(zone.region_name,
  54. six.string_types))
  55. if test_zone == zone.name:
  56. zone_find_count += 1
  57. # TODO: Can't do a check for zone_find_count == 1 because Moto
  58. # always returns the same zone for any region
  59. self.assertTrue(zone_find_count > 0,
  60. "The test zone: {0} should appear exactly"
  61. " once in the list of regions, but was not found"
  62. .format(test_zone, zone_find_count))