Selaa lähdekoodia

More tests for coverage

almahmoud 7 vuotta sitten
vanhempi
sitoutus
92a80fe78d

+ 14 - 24
cloudbridge/cloud/providers/aws/services.py

@@ -249,25 +249,17 @@ class AWSSnapshotService(BaseSnapshotService):
 
     def find(self, **kwargs):
         # Filter by description or label
-        descr = kwargs.pop('description', None)
-        label = kwargs.pop('label', None)
-        # All kwargs should have been popped at this time.
-        if len(kwargs) > 0:
-            raise TypeError("Unrecognised parameters for search: %s."
-                            " Supported attributes: %s" %
-                            (kwargs, 'label, description'))
+        label = kwargs.get('label', None)
+
         obj_list = []
-        if descr:
-            log.debug("Searching for AWS Snapshot with description %s", descr)
-            obj_list.extend(self.svc.find(filter_name='tag:Description',
-                                          filter_value=descr))
         if label:
             log.debug("Searching for AWS Snapshot with label %s", label)
             obj_list.extend(self.svc.find(filter_name='tag:Name',
-                                          filter_value=label))
-        if not descr and not label:
+                                          filter_value=label,
+                                          OwnerIds=['self']))
+        else:
             obj_list = list(self)
-        filters = ['label', 'description']
+        filters = ['label']
         return cb_helpers.generic_find(filters, kwargs, obj_list)
 
     def list(self, limit=None, marker=None):
@@ -392,23 +384,21 @@ class AWSImageService(BaseImageService):
 
     def find(self, **kwargs):
         # Filter by name or label
-        name = kwargs.pop('name', None)
-        label = kwargs.pop('label', None)
-
-        # All kwargs should have been popped at this time.
-        if len(kwargs) > 0:
-            raise TypeError("Unrecognised parameters for search: %s."
-                            " Supported attributes: %s" %
-                            (kwargs, 'label, name'))
+        name = kwargs.get('name', None)
+        label = kwargs.get('label', None)
+        owner = kwargs.pop('owners', None)
+        extra_args = {}
+        if owner:
+            extra_args.update(Owners=owner)
 
         obj_list = []
         if name:
             log.debug("Searching for AWS Image Service %s", name)
             obj_list.extend(self.svc.find(filter_name='name',
-                                          filter_value=name))
+                                          filter_value=name, **extra_args))
         if label:
             obj_list.extend(self.svc.find(filter_name='tag:Name',
-                                          filter_value=label))
+                                          filter_value=label, **extra_args))
         if not name and not label:
             obj_list = self
 

+ 8 - 2
test/helpers/standard_interface_tests.py

@@ -14,6 +14,7 @@ from cloudbridge.cloud.interfaces.exceptions \
 from cloudbridge.cloud.interfaces.resources import LabeledCloudResource
 from cloudbridge.cloud.interfaces.resources import ObjectLifeCycleMixin
 from cloudbridge.cloud.interfaces.resources import ResultList
+from cloudbridge.cloud.providers.aws.services import AWSImageService
 
 import test.helpers as helpers
 
@@ -89,9 +90,14 @@ def check_find(test, service, obj):
 
 
 def check_find_non_existent(test, service, obj):
-    # check find
+    args = {}
+    # AWSImageService.find looks through all public images by default
+    # In order to get tests to run faster, looking for these non existent
+    # values only in images owned by the current user
+    if isinstance(service, AWSImageService):
+        args = {'owners': ['self']}
     if isinstance(obj, LabeledCloudResource):
-        find_objs = service.find(label="random_imagined_obj_name")
+        find_objs = service.find(label="random_imagined_obj_name", **args)
     else:
         find_objs = service.find(name="random_imagined_obj_name")
     with test.assertRaises(TypeError):

+ 12 - 0
test/test_block_store_service.py

@@ -35,6 +35,12 @@ class CloudBlockStoreServiceTestCase(ProviderTestBase):
                 vol.delete()
                 vol.wait_for([VolumeState.DELETED, VolumeState.UNKNOWN],
                              terminal_states=[VolumeState.ERROR])
+                vol.refresh()
+                self.assertTrue(
+                    vol.state == VolumeState.UNKNOWN,
+                    "Volume.state must be unknown when refreshing after a "
+                    "delete but got %s"
+                    % vol.state)
 
         sit.check_crud(self, self.provider.storage.volumes, Volume,
                        "cb-createvol", create_vol, cleanup_vol)
@@ -151,6 +157,12 @@ class CloudBlockStoreServiceTestCase(ProviderTestBase):
                     snap.delete()
                     snap.wait_for([SnapshotState.UNKNOWN],
                                   terminal_states=[SnapshotState.ERROR])
+                    snap.refresh()
+                    self.assertTrue(
+                        snap.state == SnapshotState.UNKNOWN,
+                        "Snapshot.state must be unknown when refreshing after "
+                        "a delete but got %s"
+                        % snap.state)
 
             sit.check_crud(self, self.provider.storage.snapshots, Snapshot,
                            "cb-snap", create_snap, cleanup_snap)

+ 8 - 0
test/test_compute_service.py

@@ -36,6 +36,12 @@ class CloudComputeServiceTestCase(ProviderTestBase):
             if inst:
                 inst.delete()
                 inst.wait_for([InstanceState.DELETED, InstanceState.UNKNOWN])
+                inst.refresh()
+                self.assertTrue(
+                    inst.state == InstanceState.UNKNOWN,
+                    "Instance.state must be unknown when refreshing after a "
+                    "delete but got %s"
+                    % inst.state)
 
         def check_deleted(inst):
             deleted_inst = self.provider.compute.instances.get(
@@ -366,6 +372,8 @@ class CloudComputeServiceTestCase(ProviderTestBase):
                             fip.in_use,
                             "Attached floating IP address should be in use.")
                     test_inst.refresh()
+                    test_inst.reboot()
+                    test_inst.wait_till_ready()
                     self.assertNotIn(
                         fip.public_ip,
                         test_inst.public_ips + test_inst.private_ips)

+ 6 - 0
test/test_image_service.py

@@ -34,6 +34,12 @@ class CloudImageServiceTestCase(ProviderTestBase):
                 img.delete()
                 img.wait_for(
                     [MachineImageState.UNKNOWN, MachineImageState.ERROR])
+                img.refresh()
+                self.assertTrue(
+                    img.state == MachineImageState.UNKNOWN,
+                    "MachineImage.state must be unknown when refreshing after "
+                    "a delete but got %s"
+                    % img.state)
 
         def extra_tests(img):
             # check image size

+ 16 - 2
test/test_network_service.py

@@ -1,7 +1,9 @@
 from cloudbridge.cloud.interfaces.resources import FloatingIP
 from cloudbridge.cloud.interfaces.resources import Network
+from cloudbridge.cloud.interfaces.resources import NetworkState
 from cloudbridge.cloud.interfaces.resources import RouterState
 from cloudbridge.cloud.interfaces.resources import Subnet
+from cloudbridge.cloud.interfaces.resources import SubnetState
 
 import test.helpers as helpers
 from test.helpers import ProviderTestBase
@@ -22,7 +24,13 @@ class CloudNetworkServiceTestCase(ProviderTestBase):
 
         def cleanup_net(net):
             if net:
-                self.provider.networking.networks.delete(network_id=net.id)
+                net.delete()
+                net.refresh()
+                self.assertTrue(
+                    net.state == NetworkState.UNKNOWN,
+                    "Network.state must be unknown when refreshing after "
+                    "a delete but got %s"
+                    % net.state)
 
         sit.check_crud(self, self.provider.networking.networks, Network,
                        "cb-crudnetwork", create_net, cleanup_net)
@@ -98,7 +106,13 @@ class CloudNetworkServiceTestCase(ProviderTestBase):
 
         def cleanup_subnet(subnet):
             if subnet:
-                self.provider.networking.subnets.delete(subnet=subnet)
+                subnet.delete()
+                subnet.refresh()
+                self.assertTrue(
+                    subnet.state == SubnetState.UNKNOWN,
+                    "Subnet.state must be unknown when refreshing after "
+                    "a delete but got %s"
+                    % subnet.state)
 
         sit.check_crud(self, self.provider.networking.subnets, Subnet,
                        "cb-crudsubnet", create_subnet, cleanup_subnet)