| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- from test import helpers
- from test.helpers import ProviderTestBase
- from cloudbridge.cloud.interfaces import Region
- import six
- class CloudRegionServiceTestCase(ProviderTestBase):
- @helpers.skipIfNoService(['compute.regions'])
- def test_get_and_list_regions(self):
- """
- Test whether the region listing methods work,
- and whether zones are returned appropriately.
- """
- regions = self.provider.compute.regions.list()
- # check iteration
- iter_regions = list(self.provider.compute.regions)
- self.assertListEqual(iter_regions, regions)
- for region in regions:
- self.assertIsInstance(
- region,
- Region,
- "regions.list() should return a cloudbridge Region")
- self.assertTrue(
- region.name,
- "Region name should be a non-empty string")
- region = self.provider.compute.regions.get(regions[0].id)
- self.assertEqual(
- region,
- regions[0],
- "List and get methods should return the same regions")
- self.assertTrue(
- region.id in repr(region),
- "repr(obj) should contain the object id so that the object"
- " can be reconstructed, but does not.")
- self.assertTrue(
- region.name in region.to_json(),
- "Region name {0} not in JSON representation {1}".format(
- region.name, region.to_json()))
- @helpers.skipIfNoService(['compute.regions'])
- def test_regions_unique(self):
- """
- Regions should not return duplicate items
- """
- regions = self.provider.compute.regions.list()
- unique_regions = set([region.id for region in regions])
- self.assertTrue(len(regions) == len(list(unique_regions)))
- @helpers.skipIfNoService(['compute.regions'])
- def test_current_region(self):
- """
- RegionService.current should return a valid region
- """
- current_region = self.provider.compute.regions.current
- self.assertIsInstance(current_region, Region)
- self.assertTrue(current_region in self.provider.compute.regions.list())
- @helpers.skipIfNoService(['compute.regions'])
- def test_zones(self):
- """
- Test whether regions return the correct zone information
- """
- zone_find_count = 0
- test_zone = helpers.get_provider_test_data(self.provider, "placement")
- regions = self.provider.compute.regions.list()
- for region in regions:
- self.assertTrue(region.name)
- for zone in region.zones:
- self.assertTrue(zone.id)
- self.assertTrue(zone.name)
- self.assertTrue(zone.region_name is None or
- isinstance(zone.region_name,
- six.string_types))
- if test_zone == zone.name:
- zone_find_count += 1
- # TODO: Can't do a check for zone_find_count == 1 because Moto
- # always returns the same zone for any region
- self.assertTrue(zone_find_count > 0,
- "The test zone: {0} should appear exactly"
- " once in the list of regions, but was not found"
- .format(test_zone, zone_find_count))
|