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

Added test cases for provider image service. Removed debug messages and
improved speed in ec2.list_all_images()

nuwan_ag 10 лет назад
Родитель
Сommit
174791cf5e

+ 0 - 4
cloudbridge/providers/base.py

@@ -125,10 +125,6 @@ class BaseMachineImage(MachineImage):
                 raise MachineImageWaitException(
                     "Image is in state: {0} which is a terminal state and cannot be waited on.".format(state))
             else:
-                print(
-                    "Image is in state '{0}'. Waiting another {1} seconds to reach state a ready state...".format(
-                        state,
-                        time_left))
                 log.debug(
                     "Image is in state '{0}'. Waiting another {1} seconds to reach state a ready state...".format(
                         state,

+ 1 - 1
cloudbridge/providers/ec2/services.py

@@ -71,7 +71,7 @@ class EC2ImageService(ImageService):
         """
         # TODO: get_all_images returns too many images - some kind of filtering
         # abilities are needed. Forced to "self" for now
-        images = self.provider.ec2_conn.get_all_images(owner="self")
+        images = self.provider.ec2_conn.get_all_images(owners="self")
         return [EC2MachineImage(self.provider, image) for image in images]
 
 

+ 5 - 2
test/__init__.py

@@ -23,14 +23,17 @@ unittest and nose2's automatic discovery.
 """
 
 from test.helpers import ProviderTestCaseGenerator
+from test.test_compute_service import ProviderComputeServiceTestCase
+from test.test_provider_image_service import ProviderImageServiceTestCase
 from test.test_provider_interface import ProviderInterfaceTestCase
 from test.test_provider_security_service import ProviderSecurityServiceTestCase
-from test.test_compute_service import ProviderComputeServiceTestCase
+
 
 PROVIDER_TESTS = [
     ProviderInterfaceTestCase,
     ProviderSecurityServiceTestCase,
-    ProviderComputeServiceTestCase
+    ProviderComputeServiceTestCase,
+    #     ProviderImageServiceTestCase
 ]
 
 

+ 7 - 1
test/helpers.py

@@ -3,7 +3,7 @@ from cloudbridge.providers.factory import CloudProviderFactory
 from cloudbridge.providers.factory import ProviderList
 
 
-def get_test_instance(provider):
+def create_test_instance(provider):
     instance_name = "HelloCloudBridge-{0}".format(provider.name)
     if "EC2CloudProvider" in provider.name:
         return provider.compute.create_instance(instance_name, "ami-d85e75b0", "t1.micro")
@@ -12,6 +12,12 @@ def get_test_instance(provider):
             "{0}-{1}".format(instance_name, provider.name), "d57696ba-5ed2-43fe-bf78-a587829973a9", "m2.xsmall")
 
 
+def get_test_instance(provider):
+    instance = create_test_instance(provider)
+    instance.wait_till_ready()
+    return instance
+
+
 class ProviderTestBase(object):
 
     """

+ 6 - 12
test/test_compute_service.py

@@ -1,6 +1,6 @@
 from cloudbridge.providers import interfaces
-import test.helpers
 from test.helpers import ProviderTestBase
+import test.helpers
 
 
 class ProviderComputeServiceTestCase(ProviderTestBase):
@@ -15,14 +15,8 @@ class ProviderComputeServiceTestCase(ProviderTestBase):
     def tearDown(self):
         self.instance.terminate()
 
-    def test_create_instance(self):
-        # Need a less dangerous test
-        #         instance = self.provider.compute.create_instance(
-        #             "HelloBridgeCloud",
-        #             "ami-d85e75b0",
-        #             "t1.micro")
-        #
-        #         self.assertIsInstance(instance, interfaces.Instance)
-        #         self.assertEqual(instance.name, "HelloBridgeCloud")
-        #         instance.terminate()
-        pass
+    def test_instance_status(self):
+        """
+        instance_state should return an object of type InstanceState
+        """
+        pass

+ 38 - 0
test/test_provider_image_service.py

@@ -0,0 +1,38 @@
+import uuid
+
+from test.helpers import ProviderTestBase
+import test.helpers
+
+
+class ProviderImageServiceTestCase(ProviderTestBase):
+
+    def __init__(self, methodName, provider):
+        super(ProviderImageServiceTestCase, self).__init__(
+            methodName=methodName, provider=provider)
+
+    def setUp(self):
+        self.instance = test.helpers.get_test_instance(self.provider)
+
+    def tearDown(self):
+        self.instance.terminate()
+
+    def test_create_and_list_image(self):
+        """
+        Create a new image and check whether that image can be listed.
+        This covers waiting till the image is ready, checking that the image name is the expected one and
+        whether list_images is functional.
+        """
+        name = "CBUnitTestListImg-{0}".format(uuid.uuid4())
+        test_image = self.instance.create_image(name)
+        try:
+            test_image.wait_till_ready()
+            images = self.provider.images.list_images()
+            images = [image for image in images if image.name == name]
+            print "Expecting image:", name
+            print "Found image", images
+            self.assertTrue(
+                len(images) == 1,
+                "List images does not return the expected image %s" %
+                name)
+        finally:
+            test_image.delete()