Преглед изворни кода

Improved tests for instance type and image attributes.

nuwan_ag пре 10 година
родитељ
комит
a4e5389002

+ 3 - 0
test/__init__.py

@@ -27,6 +27,8 @@ as a base class to each combination).
 """
 import cloudbridge
 from test.helpers import ProviderTestCaseGenerator
+from test.test_instance_types_service import \
+    ProviderInstanceTypesServiceTestCase
 from test.test_provider_block_store_service import \
     ProviderBlockStoreServiceTestCase
 from test.test_provider_compute_service import ProviderComputeServiceTestCase
@@ -40,6 +42,7 @@ from test.test_provider_security_service import ProviderSecurityServiceTestCase
 PROVIDER_TESTS = [
     ProviderInterfaceTestCase,
     ProviderSecurityServiceTestCase,
+    ProviderInstanceTypesServiceTestCase,
     ProviderComputeServiceTestCase,
     ProviderImageServiceTestCase,
     ProviderBlockStoreServiceTestCase,

+ 49 - 0
test/test_instance_types_service.py

@@ -0,0 +1,49 @@
+import six
+from test.helpers import ProviderTestBase
+
+
+class ProviderInstanceTypesServiceTestCase(ProviderTestBase):
+
+    def __init__(self, methodName, provider):
+        super(ProviderInstanceTypesServiceTestCase, self).__init__(
+            methodName=methodName, provider=provider)
+
+    def test_instance_types(self):
+        instance_types = self.provider.compute.instance_types.list()
+        for inst_type in instance_types:
+            self.assertIsNotNone(
+                inst_type.id,
+                "InstanceType id must have a value")
+            self.assertIsNotNone(
+                inst_type.name,
+                "InstanceType name must have a value")
+            self.assertTrue(
+                inst_type.family is None or isinstance(
+                    inst_type.family,
+                    six.string_types),
+                "InstanceType family family be None or a"
+                " string but is: {0}".format(inst_type.family))
+            self.assertTrue(
+                inst_type.vcpus is None or (
+                    isinstance(inst_type.vcpus, six.integer_types) and
+                    inst_type.vcpus >= 0),
+                "InstanceType vcpus family be None or a positive integer")
+            self.assertTrue(
+                inst_type.ram is None or inst_type.ram >= 0,
+                "InstanceType ram must be None or a positive number")
+            self.assertTrue(
+                inst_type.root_disk is None or inst_type.root_disk >= 0,
+                "InstanceType root_disk must be None or a positive number but"
+                " is: {0}".format(inst_type.root_disk))
+            self.assertTrue(
+                inst_type.ephemeral_disk is None or
+                inst_type.ephemeral_disk >= 0,
+                "InstanceType ephemeral_disk must be None or a positive"
+                " number")
+            self.assertTrue(
+                inst_type.total_disk is None or inst_type.total_disk >= 0,
+                "InstanceType total_disk must be None or a positive number")
+            self.assertTrue(
+                inst_type.extra_data is None or isinstance(
+                    inst_type.extra_data, dict),
+                "InstanceType extra_data must be None or a dict")

+ 0 - 13
test/test_provider_compute_service.py

@@ -91,16 +91,3 @@ class ProviderComputeServiceTestCase(ProviderTestBase):
                 self._is_valid_ip(ip_address),
                 "Instance must have a valid IP address")
             test_instance.terminate()
-
-    def test_instance_types(self):
-        instance_types = self.provider.compute.instance_types.list()
-        for inst_type in instance_types:
-            self.assertIsNotNone(
-                inst_type.id,
-                "Instance type id must have a value")
-            self.assertIsNotNone(
-                inst_type.name,
-                "Instance type name must have a value")
-            self.assertIsNotNone(
-                inst_type.name,
-                "Instance type name must have a value")

+ 7 - 0
test/test_provider_image_service.py

@@ -1,4 +1,5 @@
 import uuid
+import six
 from cloudbridge.providers.interfaces import MachineImageState
 from test.helpers import ProviderTestBase
 import test.helpers as helpers
@@ -26,6 +27,12 @@ class ProviderImageServiceTestCase(ProviderTestBase):
             with helpers.exception_action(lambda: test_image.delete()):
                 test_image.wait_till_ready(
                     interval=self.get_test_wait_interval())
+
+                self.assertTrue(
+                    test_image.description is None or isinstance(
+                        test_image.description, six.string_types),
+                    "Image description must be None or a string")
+
                 images = self.provider.images.list_images()
                 found_images = [image for image in images
                                 if image.name == name]