Просмотр исходного кода

Improved test resource cleanup functions.

Nuwan Goonasekera 9 лет назад
Родитель
Сommit
6fa366afe3
2 измененных файлов с 13 добавлено и 26 удалено
  1. 10 14
      test/helpers.py
  2. 3 12
      test/test_security_service.py

+ 10 - 14
test/helpers.py

@@ -85,9 +85,9 @@ def delete_test_network(network):
     """
     """
     Delete the supplied network, first deleting any contained subnets.
     Delete the supplied network, first deleting any contained subnets.
     """
     """
-    for sn in network.subnets():
-        sn.delete()
-    network.delete()
+    with cleanup_action(lambda: network.delete()):
+        for sn in network.subnets():
+            sn.delete()
 
 
 
 
 def create_test_instance(
 def create_test_instance(
@@ -121,17 +121,13 @@ def get_test_instance(provider, name, key_pair=None, security_groups=None,
 
 
 def cleanup_test_resources(instance=None, network=None, security_group=None,
 def cleanup_test_resources(instance=None, network=None, security_group=None,
                            key_pair=None):
                            key_pair=None):
-    if instance:
-        instance.terminate()
-        instance.wait_for(
-            [InstanceState.TERMINATED, InstanceState.UNKNOWN],
-            terminal_states=[InstanceState.ERROR])
-    if security_group:
-        security_group.delete()
-    if key_pair:
-        key_pair.delete()
-    if network:
-        delete_test_network(network)
+    with cleanup_action(lambda: delete_test_network(network)):
+        with cleanup_action(lambda: key_pair.delete()):
+            with cleanup_action(lambda: security_group.delete()):
+                instance.terminate()
+                instance.wait_for(
+                    [InstanceState.TERMINATED, InstanceState.UNKNOWN],
+                    terminal_states=[InstanceState.ERROR])
 
 
 
 
 class ProviderTestBase(object):
 class ProviderTestBase(object):

+ 3 - 12
test/test_security_service.py

@@ -98,8 +98,9 @@ class CloudSecurityServiceTestCase(ProviderTestBase):
             .format(name))
             .format(name))
 
 
     def cleanup_sg(self, sg, net):
     def cleanup_sg(self, sg, net):
-        self.provider.security.security_groups.delete(group_id=sg.id)
-        self.provider.network.delete(network_id=net.id)
+        with helpers.cleanup_action(
+                lambda: self.provider.network.delete(network_id=net.id)):
+            self.provider.security.security_groups.delete(group_id=sg.id)
 
 
     def test_crud_security_group_service(self):
     def test_crud_security_group_service(self):
         name = 'cbtestsecuritygroupA-{0}'.format(uuid.uuid4())
         name = 'cbtestsecuritygroupA-{0}'.format(uuid.uuid4())
@@ -185,16 +186,6 @@ class CloudSecurityServiceTestCase(ProviderTestBase):
             self.assertFalse(
             self.assertFalse(
                 sg != sg,
                 sg != sg,
                 "The same security groups should still be equal?")
                 "The same security groups should still be equal?")
-            json_repr = json.dumps(
-                {"description": name, "name": name, "id": sg.id, "rules":
-                 [{"from_port": 1111, "group": "", "cidr_ip": "0.0.0.0/0",
-                   "parent": sg.id, "to_port": 1111, "ip_protocol": "tcp",
-                   "id": sg.rules[0].id}]},
-                sort_keys=True)
-            self.assertTrue(
-                sg.to_json() == json_repr,
-                "JSON sec group representation {0} does not match expected {1}"
-                .format(sg.to_json(), json_repr))
 
 
         sgl = self.provider.security.security_groups.list()
         sgl = self.provider.security.security_groups.list()
         found_sg = [g for g in sgl if g.name == name]
         found_sg = [g for g in sgl if g.name == name]