test_region_service.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import six
  2. from cloudbridge.cloud.interfaces import Region
  3. from test import helpers
  4. from test.helpers import ProviderTestBase
  5. from test.helpers import standard_interface_tests as sit
  6. class CloudRegionServiceTestCase(ProviderTestBase):
  7. _multiprocess_can_split_ = True
  8. @helpers.skipIfNoService(['compute.regions'])
  9. def test_storage_services_event_pattern(self):
  10. expected_event = ".".join((self.provider.PROVIDER_ID,
  11. "compute.regions"))
  12. # pylint:disable=protected-access
  13. self.assertEqual(
  14. self.provider.compute.regions._service_event_pattern,
  15. expected_event,
  16. "Event pattern for {} service should be '{}', "
  17. "but found '{}'.".format("regions",
  18. expected_event,
  19. self.provider.compute.regions.
  20. _service_event_pattern))
  21. @helpers.skipIfNoService(['compute.regions'])
  22. def test_get_and_list_regions(self):
  23. regions = list(self.provider.compute.regions)
  24. sit.check_standard_behaviour(
  25. self, self.provider.compute.regions, regions[-1])
  26. for region in regions:
  27. self.assertIsInstance(
  28. region,
  29. Region,
  30. "regions.list() should return a cloudbridge Region")
  31. self.assertTrue(
  32. region.name,
  33. "Region name should be a non-empty string")
  34. @helpers.skipIfNoService(['compute.regions'])
  35. def test_regions_unique(self):
  36. regions = self.provider.compute.regions.list()
  37. unique_regions = set([region.id for region in regions])
  38. self.assertTrue(len(regions) == len(list(unique_regions)))
  39. @helpers.skipIfNoService(['compute.regions'])
  40. def test_current_region(self):
  41. current_region = self.provider.compute.regions.current
  42. self.assertIsInstance(current_region, Region)
  43. self.assertTrue(current_region in self.provider.compute.regions)
  44. @helpers.skipIfNoService(['compute.regions'])
  45. def test_zones(self):
  46. zone_find_count = 0
  47. test_zone = helpers.get_provider_test_data(self.provider, "placement")
  48. for region in self.provider.compute.regions:
  49. self.assertTrue(region.name)
  50. for zone in region.zones:
  51. self.assertTrue(zone.id)
  52. self.assertTrue(zone.name)
  53. self.assertTrue(zone.region_name is None or
  54. isinstance(zone.region_name,
  55. six.string_types))
  56. if test_zone == zone.name:
  57. zone_find_count += 1
  58. # zone info cannot be repeated between regions
  59. self.assertEqual(zone_find_count, 1)