2
0
Эх сурвалжийг харах

Update tests for the subnet zone placement change.

This also fixes a few test properties when run on AWS.
Enis Afgan 9 жил өмнө
parent
commit
7ab6a4aa50

+ 7 - 5
test/helpers.py

@@ -130,12 +130,12 @@ def create_test_instance(
 
 
 def get_test_instance(provider, name, key_pair=None, security_groups=None,
-                      network=None):
+                      subnet=None):
     launch_config = None
     instance = create_test_instance(
         provider,
         name,
-        network=network,
+        subnet=subnet,
         key_pair=key_pair,
         security_groups=security_groups,
         launch_config=launch_config)
@@ -145,9 +145,11 @@ def get_test_instance(provider, name, key_pair=None, security_groups=None,
 
 def cleanup_test_resources(instance=None, network=None, security_group=None,
                            key_pair=None):
-    with cleanup_action(lambda: delete_test_network(network)):
-        with cleanup_action(lambda: key_pair.delete()):
-            with cleanup_action(lambda: security_group.delete()):
+    with cleanup_action(lambda: delete_test_network(network)
+                        if network else None):
+        with cleanup_action(lambda: key_pair.delete() if key_pair else None):
+            with cleanup_action(lambda: security_group.delete()
+                                if security_group else None):
                 instance.terminate()
                 instance.wait_for(
                     [InstanceState.TERMINATED, InstanceState.UNKNOWN],

+ 9 - 6
test/test_block_store_service.py

@@ -1,3 +1,4 @@
+import time
 from unittest import skip
 import uuid
 
@@ -104,9 +105,9 @@ class CloudBlockStoreServiceTestCase(ProviderTestBase):
         instance_name = "CBVolOps-{0}-{1}".format(
             self.provider.name,
             uuid.uuid4())
-        net, _ = helpers.create_test_network(self.provider, instance_name)
+        net, subnet = helpers.create_test_network(self.provider, instance_name)
         test_instance = helpers.get_test_instance(self.provider, instance_name,
-                                                  network=net)
+                                                  subnet=subnet)
         with helpers.cleanup_action(lambda: helpers.cleanup_test_resources(
                 test_instance, net)):
             name = "CBUnitTestAttachVol-{0}".format(uuid.uuid4())
@@ -133,9 +134,9 @@ class CloudBlockStoreServiceTestCase(ProviderTestBase):
             self.provider.name,
             uuid.uuid4())
         vol_desc = 'newvoldesc1'
-        net, _ = helpers.create_test_network(self.provider, instance_name)
+        net, subnet = helpers.create_test_network(self.provider, instance_name)
         test_instance = helpers.get_test_instance(self.provider, instance_name,
-                                                  network=net)
+                                                  subnet=subnet)
         with helpers.cleanup_action(lambda: helpers.cleanup_test_resources(
                 test_instance, net)):
             name = "CBUnitTestVolProps-{0}".format(uuid.uuid4())
@@ -171,8 +172,9 @@ class CloudBlockStoreServiceTestCase(ProviderTestBase):
                                  "/dev/sda2")
                 test_vol.detach()
                 test_vol.name = 'newvolname1'
-                # Force a refresh before checking attachment status
-                test_vol.refresh()
+                test_vol.wait_for(
+                    [VolumeState.AVAILABLE],
+                    terminal_states=[VolumeState.ERROR, VolumeState.DELETED])
                 self.assertEqual(test_vol.name, 'newvolname1')
                 self.assertEqual(test_vol.description, vol_desc)
                 self.assertIsNone(test_vol.attachments)
@@ -289,6 +291,7 @@ class CloudBlockStoreServiceTestCase(ProviderTestBase):
 
             # Test creation of a snap via SnapshotService
             snap_too_name = "CBSnapToo-{0}".format(name)
+            time.sleep(15)  # Or get SnapshotCreationPerVolumeRateExceeded
             test_snap_too = self.provider.block_store.snapshots.create(
                 name=snap_too_name, volume=test_vol, description=snap_too_name)
             with helpers.cleanup_action(lambda: cleanup_snap(test_snap_too)):

+ 5 - 6
test/test_compute_service.py

@@ -26,8 +26,8 @@ class CloudComputeServiceTestCase(ProviderTestBase):
         name = "CBInstCrud-{0}-{1}".format(
             self.provider.name,
             uuid.uuid4())
-        net, _ = helpers.create_test_network(self.provider, name)
-        inst = helpers.get_test_instance(self.provider, name, network=net)
+        net, subnet = helpers.create_test_network(self.provider, name)
+        inst = helpers.get_test_instance(self.provider, name, subnet=subnet)
 
         with helpers.cleanup_action(lambda: helpers.cleanup_test_resources(
                 inst, net)):
@@ -101,14 +101,14 @@ class CloudComputeServiceTestCase(ProviderTestBase):
         name = "CBInstProps-{0}-{1}".format(
             self.provider.name,
             uuid.uuid4())
-        net, _ = helpers.create_test_network(self.provider, name)
+        net, subnet = helpers.create_test_network(self.provider, name)
         kp = self.provider.security.key_pairs.create(name=name)
         sg = self.provider.security.security_groups.create(
             name=name, description=name, network_id=net.id)
         test_instance = helpers.get_test_instance(self.provider,
                                                   name, key_pair=kp,
                                                   security_groups=[sg],
-                                                  network=net)
+                                                  subnet=subnet)
 
         with helpers.cleanup_action(lambda: helpers.cleanup_test_resources(
                 test_instance, net, sg, kp)):
@@ -287,7 +287,7 @@ class CloudComputeServiceTestCase(ProviderTestBase):
             # TODO: This should be greater than the ami size or tests
             # will fail on actual infrastructure. Needs an image.size
             # method
-            size=2,
+            size=8,
             delete_on_terminate=True)
 
         # Add all available ephemeral devices
@@ -305,7 +305,6 @@ class CloudComputeServiceTestCase(ProviderTestBase):
             self.provider,
             name,
             subnet=subnet,
-            # We don't have a way to match the test net placement and this zone
             zone=helpers.get_provider_test_data(self.provider, 'placement'),
             launch_config=lc)
 

+ 22 - 23
test/test_image_service.py

@@ -27,9 +27,9 @@ class CloudImageServiceTestCase(ProviderTestBase):
         instance_name = "CBImageTest-{0}-{1}".format(
             self.provider.name,
             uuid.uuid4())
-        net, _ = helpers.create_test_network(self.provider, instance_name)
+        net, subnet = helpers.create_test_network(self.provider, instance_name)
         test_instance = helpers.get_test_instance(self.provider, instance_name,
-                                                  network=net)
+                                                  subnet=subnet)
         with helpers.cleanup_action(lambda: helpers.cleanup_test_resources(
                 test_instance, net)):
             name = "CBUnitTestListImg-{0}".format(uuid.uuid4())
@@ -53,21 +53,22 @@ class CloudImageServiceTestCase(ProviderTestBase):
                         test_image.description, six.string_types),
                     "Image description must be None or a string")
 
-                images = self.provider.compute.images.list()
-                list_images = [image for image in images
-                               if image.name == name]
-                self.assertTrue(
-                    len(list_images) == 1,
-                    "List images does not return the expected image %s" %
-                    name)
-
-                # check iteration
-                iter_images = [image for image in self.provider.compute.images
-                               if image.name == name]
-                self.assertTrue(
-                    len(iter_images) == 1,
-                    "Iter images does not return the expected image %s" %
-                    name)
+                # These checks won't work when >50 images are available
+                # images = self.provider.compute.images.list()
+                # list_images = [image for image in images
+                #                if image.name == name]
+                # self.assertTrue(
+                #     len(list_images) == 1,
+                #     "List images does not return the expected image %s" %
+                #     name)
+
+                # # check iteration
+                # iter_images = [image for image in self.provider.compute.images
+                #                if image.name == name]
+                # self.assertTrue(
+                #     len(iter_images) == 1,
+                #     "Iter images does not return the expected image %s" %
+                #     name)
 
                 # find image
                 found_images = self.provider.compute.images.find(name=name)
@@ -87,17 +88,15 @@ class CloudImageServiceTestCase(ProviderTestBase):
                 get_img = self.provider.compute.images.get(
                     test_image.id)
                 self.assertTrue(
-                    found_images[0] == iter_images[0] == get_img == test_image,
+                    found_images[0] == get_img == test_image,
                     "Objects returned by list: {0} and get: {1} are not as "
                     " expected: {2}" .format(found_images[0].id,
                                              get_img.id,
                                              test_image.id))
                 self.assertTrue(
-                    list_images[0].name == found_images[0].name ==
-                    get_img.name == test_image.name,
-                    "Names returned by list: {0}, find: {1} and get: {2} are"
-                    " not as expected: {3}" .format(list_images[0].name,
-                                                    found_images[0].name,
+                    found_images[0].name == get_img.name == test_image.name,
+                    "Names returned by find: {0} and get: {1} are"
+                    " not as expected: {2}" .format(found_images[0].name,
                                                     get_img.name,
                                                     test_image.name))
             # TODO: Images take a long time to deregister on EC2. Needs

+ 2 - 2
test/test_instance_types_service.py

@@ -15,8 +15,8 @@ class CloudInstanceTypesServiceTestCase(ProviderTestBase):
     @helpers.skipIfNoService(['compute.instance_types'])
     def test_instance_types(self):
         instance_types = self.provider.compute.instance_types.list()
-        # check iteration
-        iter_instance_types = list(self.provider.compute.instance_types)
+        # Check iteration, keeping the first 50 entries (the .list() default)
+        iter_instance_types = list(self.provider.compute.instance_types)[:50]
         self.assertListEqual(iter_instance_types, instance_types)
 
         for inst_type in instance_types:

+ 8 - 2
test/test_network_service.py

@@ -1,6 +1,7 @@
 import test.helpers as helpers
 import uuid
 from test.helpers import ProviderTestBase
+
 from cloudbridge.cloud.interfaces.resources import RouterState
 
 
@@ -124,7 +125,10 @@ class CloudNetworkServiceTestCase(ProviderTestBase):
                 % net.cidr_block)
 
             cidr = '10.0.1.0/24'
-            sn = net.create_subnet(cidr_block=cidr, name=subnet_name)
+            sn = net.create_subnet(
+                cidr_block=cidr, name=subnet_name,
+                zone=helpers.get_provider_test_data(self.provider,
+                                                    'placement'))
             with helpers.cleanup_action(lambda: sn.delete()):
                 self.assertTrue(
                     sn.id in [s.id for s in net.subnets()],
@@ -155,7 +159,9 @@ class CloudNetworkServiceTestCase(ProviderTestBase):
         router = self.provider.network.create_router(name=name)
         net = self.provider.network.create(name=name)
         cidr = '10.0.1.0/24'
-        sn = net.create_subnet(cidr_block=cidr, name=name)
+        sn = net.create_subnet(
+            cidr_block=cidr, name=name,
+            zone=helpers.get_provider_test_data(self.provider, 'placement'))
         with helpers.cleanup_action(lambda: _cleanup(net, sn, router)):
             # Check basic router properties
             self.assertIn(