You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ta...@apache.org on 2015/04/29 13:39:43 UTC

git commit: updated refs/heads/master to 229f238

Repository: cloudstack
Updated Branches:
  refs/heads/master 1664c9121 -> 229f23874


Merging all required changes for these test paths to run properly


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/229f2387
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/229f2387
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/229f2387

Branch: refs/heads/master
Commit: 229f23874a4c1ab9536a13414e421be4c1ffee74
Parents: 1664c91
Author: SrikanteswaraRao Talluri <ta...@apache.org>
Authored: Wed Apr 29 17:09:03 2015 +0530
Committer: SrikanteswaraRao Talluri <ta...@apache.org>
Committed: Wed Apr 29 17:09:03 2015 +0530

----------------------------------------------------------------------
 .../testpaths/testpath_stopped_vm.py            | 17 ++--
 .../testpaths/testpath_storage_migration.py     | 96 ++++++++++++--------
 test/integration/testpaths/testpath_usage.py    | 13 ++-
 test/integration/testpaths/testpath_vmlc.py     | 14 +--
 .../testpaths/testpath_volumelifecycle.py       | 24 +++--
 5 files changed, 103 insertions(+), 61 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/229f2387/test/integration/testpaths/testpath_stopped_vm.py
----------------------------------------------------------------------
diff --git a/test/integration/testpaths/testpath_stopped_vm.py b/test/integration/testpaths/testpath_stopped_vm.py
index 54f4025..c3a129d 100644
--- a/test/integration/testpaths/testpath_stopped_vm.py
+++ b/test/integration/testpaths/testpath_stopped_vm.py
@@ -125,7 +125,7 @@ class TestAdvancedZoneStoppedVM(cloudstackTestCase):
         testClient = super(TestAdvancedZoneStoppedVM, cls).getClsTestClient()
         cls.apiclient = testClient.getApiClient()
         cls.testdata = testClient.getParsedTestDataConfig()
-
+        cls.hypervisor = testClient.getHypervisorInfo()
         # Get Zone, Domain and templates
         cls.domain = get_domain(cls.apiclient)
         cls.zone = get_zone(cls.apiclient)
@@ -373,7 +373,7 @@ class TestAdvancedZoneStoppedVM(cloudstackTestCase):
             self.assertTrue(response[0], response[1])
         return
 
-    @attr(tags=["advanced", "basic"], required_hardware="false")
+    @attr("simulator_only", tags=["advanced", "basic"], required_hardware="false")
     def test_03_pt_deploy_vm_with_startvm_false(self):
         """ Positive test for stopped VM test path - T2
 
@@ -415,7 +415,7 @@ class TestAdvancedZoneStoppedVM(cloudstackTestCase):
             self.assertTrue(response[0], response[1])
         return
 
-    @attr(tags=["advanced", "basic"], required_hardware="false")
+    @attr("simulator_only", tags=["advanced", "basic"], required_hardware="false")
     def test_04_pt_startvm_false_attach_disk(self):
         """ Positive test for stopped VM test path - T3 and variant, T9
 
@@ -554,7 +554,7 @@ class TestAdvancedZoneStoppedVM(cloudstackTestCase):
         )
         return
 
-    @attr(tags=["advanced", "basic"], required_hardware="false")
+    @attr("simulator_only", tags=["advanced", "basic"], required_hardware="false")
     def test_05_pt_startvm_false_attach_disk_change_SO(self):
         """ Positive test for stopped VM test path - T4
 
@@ -790,6 +790,11 @@ class TestAdvancedZoneStoppedVM(cloudstackTestCase):
         # 4.  Start the VM, verify that it is in running state
         # 5.  Verify that new password is generated for the VM
         """
+
+        if self.hypervisor.lower() in ['lxc']:
+            self.skipTest(
+                "feature is not supported in %s" %
+                self.hypervisor)
         vm_for_template = VirtualMachine.create(
             self.userapiclient,
             self.testdata["small"],
@@ -888,7 +893,7 @@ class TestAdvancedZoneStoppedVM(cloudstackTestCase):
         )
         return
 
-    @attr(tags=["advanced", "basic"], required_hardware="false")
+    @attr("simulator_only", tags=["advanced", "basic"], required_hardware="false")
     def test_09_pt_destroy_stopped_vm(self):
         """ Positive test for stopped VM test path - T11
 
@@ -939,7 +944,7 @@ class TestAdvancedZoneStoppedVM(cloudstackTestCase):
         self.assertEqual(response[0], PASS, response[1])
         return
 
-    @attr(tags=["advanced", "basic"], required_hardware="false")
+    @attr("simulator_only", tags=["advanced", "basic"], required_hardware="false")
     def test_10_max_account_limit(self):
         """ Positive test for stopped VM test path - T12
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/229f2387/test/integration/testpaths/testpath_storage_migration.py
----------------------------------------------------------------------
diff --git a/test/integration/testpaths/testpath_storage_migration.py b/test/integration/testpaths/testpath_storage_migration.py
index 892b396..4d6c924 100644
--- a/test/integration/testpaths/testpath_storage_migration.py
+++ b/test/integration/testpaths/testpath_storage_migration.py
@@ -37,9 +37,11 @@ from marvin.lib.common import (get_domain,
                                list_virtual_machines,
                                list_storage_pools,
                                list_clusters,
-                               list_hosts
+                               list_hosts,
+                               validateList
                                )
-from marvin.codes import (ZONETAG1,
+from marvin.codes import (PASS,
+                          ZONETAG1,
                           CLUSTERTAG1)
 
 from marvin.cloudstackAPI import (deleteVolume)
@@ -412,20 +414,21 @@ class TestStorageMigration(cloudstackTestCase):
             cls.testdata["ostype"])
 
         cls._cleanup = []
+        cls.unsupportedHypervisor = False
+        cls.insuffPools = False
 
         if cls.hypervisor.lower() not in [
                 "vmware",
                 "kvm",
                 "xenserver",
                 "hyper-v"]:
-            raise unittest.SkipTest(
-                "Storage migration not supported on %s" %
-                cls.hypervisor)
-
+            cls.unsupportedHypervisor = True
+            return
         try:
             cls.pools = StoragePool.list(cls.apiclient, zoneid=cls.zone.id)
         except Exception as e:
-            raise unittest.SkipTest(e)
+            cls.insuffPools = True
+            return
         try:
 
             # Create an account
@@ -507,6 +510,9 @@ class TestStorageMigration(cloudstackTestCase):
     def setUp(self):
         self.apiclient = self.testClient.getApiClient()
         self.dbclient = self.testClient.getDbConnection()
+        if self.unsupportedHypervisor or self.insuffPools:
+            self.skipTest("Skipping test because unsupported hypervisor\
+                    %s" % self.hypervisor)
         self.cleanup = []
 
     def tearDown(self):
@@ -518,7 +524,7 @@ class TestStorageMigration(cloudstackTestCase):
             raise Exception("Warning: Exception during cleanup : %s" % e)
         return
 
-    @attr(tags=["advanced", "basic"])
+    @attr(tags=["advanced", "basic"], required_hardware="True")
     def test_01_migrate_root_and_data_disk_nonlive(self):
         """ Test migrate Volume (root and data disk)
 
@@ -1205,7 +1211,7 @@ class TestStorageMigration(cloudstackTestCase):
                 ), None, "VM list should be empty")
         return
 
-    @attr(tags=["advanced", "basic"])
+    @attr(tags=["advanced", "basic"], required_hardware="True")
     def test_02_migration_nonlive_xenserver_supported(self):
         """ Test migrate Volume (root and data disk) for Hypervisor Xenserver
 
@@ -1650,7 +1656,7 @@ class TestStorageMigration(cloudstackTestCase):
 
         return
 
-    @attr(tags=["advanced", "basic"])
+    @attr(tags=["advanced", "basic"], required_hardware="True")
     def test_03_migrate_root_and_data_disk_nonlive_cwps_vmware(self):
         """ Test migrate Volume (root and data disk)
 
@@ -2088,7 +2094,7 @@ class TestStorageMigration(cloudstackTestCase):
                 ), None, "VM list should be empty")
         return
 
-    @attr(tags=["advanced", "basic"])
+    @attr(tags=["advanced", "basic"], required_hardware="True")
     def test_04_migrate_root_and_data_disk_nonlive_zwps_vmware(self):
         """ Test migrate Volume (root and data disk)
 
@@ -2279,15 +2285,15 @@ class NegativeTestStorageMigration(cloudstackTestCase):
             cls.testdata["ostype"])
 
         cls._cleanup = []
-
+        cls.unsupportedHypervisor = False
+        cls.insuffPools = False
         if cls.hypervisor.lower() not in [
                 "vmware",
                 "kvm",
                 "xenserver",
                 "hyper-v"]:
-            raise unittest.SkipTest(
-                "Storage migration not supported on %s" %
-                cls.hypervisor)
+            cls.unsupportedHypervisor = True
+            return
 
         try:
             cls.pools = StoragePool.list(cls.apiclient, zoneid=cls.zone.id)
@@ -2300,7 +2306,8 @@ class NegativeTestStorageMigration(cloudstackTestCase):
                 "There must be at least two cluster wide\
                 storage pools available in the setup"
         except Exception as e:
-            raise unittest.SkipTest(e)
+            cls.insuffPools = True
+            return
         try:
 
             # Create an account
@@ -2382,6 +2389,9 @@ class NegativeTestStorageMigration(cloudstackTestCase):
     def setUp(self):
         self.apiclient = self.testClient.getApiClient()
         self.dbclient = self.testClient.getDbConnection()
+        if self.unsupportedHypervisor or self.insuffPools:
+            self.skipTest("Skipping test because unsupported hypervisor\
+                    %s" % self.hypervisor)
         self.cleanup = []
 
     def tearDown(self):
@@ -2434,7 +2444,7 @@ class NegativeTestStorageMigration(cloudstackTestCase):
         except Exception as e:
             self.exceptionList.append(e)
 
-    @attr(tags=["advanced", "basic"])
+    @attr(tags=["advanced", "basic"], required_hardware="True")
     def test_01_migrate_data_disk_negative_test(self):
         """ Negative test cases
 
@@ -2689,16 +2699,17 @@ class TestLiveStorageMigration(cloudstackTestCase):
             cls.testdata["ostype"])
 
         cls._cleanup = []
-
+        cls.unsupportedHypervisor = False
+        cls.insuffPools = False
         if cls.hypervisor.lower() in ["kvm", "lxc"]:
-            raise unittest.SkipTest(
-                "Live Storage migration not supported on %s" %
-                cls.hypervisor)
+            cls.unsupportedHypervisor = True
+            return
 
         try:
             cls.pools = StoragePool.list(cls.apiclient, zoneid=cls.zone.id)
         except Exception as e:
-            raise unittest.SkipTest(e)
+            cls.insuffPools = True
+            return
         try:
 
             # Create an account
@@ -2780,6 +2791,9 @@ class TestLiveStorageMigration(cloudstackTestCase):
     def setUp(self):
         self.apiclient = self.testClient.getApiClient()
         self.dbclient = self.testClient.getDbConnection()
+        if self.unsupportedHypervisor or self.insuffPools:
+            self.skipTest("Skipping test because unsupported hypervisor\
+                    %s" % self.hypervisor)
         self.cleanup = []
 
     def tearDown(self):
@@ -2979,7 +2993,7 @@ class TestLiveStorageMigration(cloudstackTestCase):
     @unittest.skip(
         "Requires setup with 2 pods - Each pod having 2 clusters. \
             Yet to be tested")
-    @attr(tags=["advanced", "basic"])
+    @attr(tags=["advanced", "basic"], required_hardware="True")
     def test_02_migration_live_different_pods(self):
         """ Test migrate Volume (root and data disk)
 
@@ -3573,35 +3587,37 @@ class TestStorageLiveMigrationVmware(cloudstackTestCase):
             cls.testdata["ostype"])
 
         cls._cleanup = []
-
+        cls.hypervisorNotSupported = False
+        cls.NoResource = False
         if cls.hypervisor.lower() not in [
-                "vmware",
-                "kvm",
-                "xenserver",
-                "hyper-v"]:
-            raise unittest.SkipTest(
-                "Storage migration not supported on %s" %
-                cls.hypervisor)
+                "vmware"]:
+            cls.hypervisorNotSupported = True
         # Get Hosts in the cluster and iscsi/vmfs storages for that cluster
         iscsi_pools = []
         try :
             list_vmware_clusters = list_clusters(cls.apiclient, hypervisor="vmware")
         except Exception as e:
-            raise unittest.SkipTest(e)
-        
+            cls.NoResource = True
+            return
+        assert validateList(list_vmware_clusters)[0] == PASS
         if len(list_vmware_clusters) < 1 :
-            raise unittest.SkipTest("There is no cluster available in the setup")
+            cls.NoResource = True
+            return
         else :
             for cluster in list_vmware_clusters :
                 try:
                     list_esx_hosts = list_hosts(cls.apiclient, clusterid = cluster.id)
                 except Exception as e:
-                    raise unittest.SkipTest(e)
+                    cls.NoResource = True
+                    return
+                assert validateList(list_esx_hosts)[0] == PASS
                 if len(list_esx_hosts) > 1 :
                     try:
                         list_storage = list_storage_pools(cls.apiclient, clusterid = cluster.id)
                     except Exception as e:
-                        raise unittest.SkipTest(e)
+                        cls.NoResource = True
+                        return
+                    assert validateList(list_storage)[0] == PASS
                     for storage in list_storage :
                         if storage.type == "VMFS" :
                             iscsi_pools.append(storage)
@@ -3611,7 +3627,8 @@ class TestStorageLiveMigrationVmware(cloudstackTestCase):
                     else :
                         iscsi_pools = []
         if len(iscsi_pools) < 2 :
-            raise unittest.SkipTest("Not enough resources available in the setup")
+            cls.NoResource = True
+            return
         cls.hosts = list_esx_hosts
         cls.pools = list_storage
 
@@ -3656,6 +3673,9 @@ class TestStorageLiveMigrationVmware(cloudstackTestCase):
     def setUp(self):
         self.apiclient = self.testClient.getApiClient()
         self.dbclient = self.testClient.getDbConnection()
+        if self.unsupportedHypervisor or self.NoResource:
+            self.skipTest("Skipping test because unsupported hypervisor\
+                    %s" % self.hypervisor)
         self.cleanup = []
 
     def tearDown(self):
@@ -3700,7 +3720,7 @@ class TestStorageLiveMigrationVmware(cloudstackTestCase):
         return destinationHost
         
 
-    @attr(tags=["advanced", "basic", "vmware", "vmfs"])
+    @attr(tags=["advanced", "basic", "vmware", "vmfs"], required_hardware="True")
     def test_01_migrate_root_and_data_disk_live(self):
         """
         Migrate VMs/Volumes on VMware with VMFS storage

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/229f2387/test/integration/testpaths/testpath_usage.py
----------------------------------------------------------------------
diff --git a/test/integration/testpaths/testpath_usage.py b/test/integration/testpaths/testpath_usage.py
index e45221c..1c3b1b4 100644
--- a/test/integration/testpaths/testpath_usage.py
+++ b/test/integration/testpaths/testpath_usage.py
@@ -84,8 +84,10 @@ class TestUsage(cloudstackTestCase):
         cls.mgtSvrDetails = cls.config.__dict__["mgtSvr"][0].__dict__
 
         isUsageJobRunning = cls.IsUsageJobRunning()
+        cls.usageJobNotRunning = False
         if not isUsageJobRunning:
-            raise unittest.SkipTest("Skipping, usage job is not running")
+            cls.usageJobNotRunning = True
+            return
 
         if cls.testdata["configurableData"][
                 "setUsageConfigurationThroughTestCase"]:
@@ -188,6 +190,8 @@ class TestUsage(cloudstackTestCase):
         self.apiclient = self.testClient.getApiClient()
         self.dbclient = self.testClient.getDbConnection()
         self.cleanup = []
+        if self.usageJobNotRunning:
+            self.skipTest("Skipping test because usage job not running")
         # Create an account
         self.account = Account.create(
             self.apiclient,
@@ -424,7 +428,7 @@ class TestUsage(cloudstackTestCase):
             )
         return result
 
-    @attr(tags=["advanced"], required_hardware="true")
+    @attr(tags=["advanced"], required_hardware="True")
     def test_01_positive_tests_usage(self):
         """ Positive test for usage test path
 
@@ -2963,8 +2967,9 @@ class TestUsageDirectMeteringBasicZone(cloudstackTestCase):
         cls.mgtSvrDetails = cls.config.__dict__["mgtSvr"][0].__dict__
 
         isUsageJobRunning = cls.IsUsageJobRunning()
+        cls.usageJobNotRunning = False
         if not isUsageJobRunning:
-            raise unittest.SkipTest("Skipping, usage job is not running")
+            cls.usageJobNotRunning = True
 
         if cls.testdata["configurableData"][
                 "setUsageConfigurationThroughTestCase"]:
@@ -3025,6 +3030,8 @@ class TestUsageDirectMeteringBasicZone(cloudstackTestCase):
         self.apiclient = self.testClient.getApiClient()
         self.dbclient = self.testClient.getDbConnection()
         self.cleanup = []
+        if self.usageJobNotRunning:
+            self.skipTest("Skipping test because usage job not running")
         # Create an account
         self.account = Account.create(
             self.apiclient,

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/229f2387/test/integration/testpaths/testpath_vmlc.py
----------------------------------------------------------------------
diff --git a/test/integration/testpaths/testpath_vmlc.py b/test/integration/testpaths/testpath_vmlc.py
index 52fbab5..33e6860 100644
--- a/test/integration/testpaths/testpath_vmlc.py
+++ b/test/integration/testpaths/testpath_vmlc.py
@@ -316,7 +316,7 @@ class TestPathVMLC(cloudstackTestCase):
             raise Exception("Warning: Exception during cleanup : %s" % e)
         return
 
-    @attr(tags=["advanced"], required_hardware="false")
+    @attr(tags=["advanced"], required_hardware="True")
     @data(ISOLATED_NETWORK, VPC_NETWORK)
     def test_01_positive_tests_vm_operations_advanced_zone(self, value):
         """ Positive tests for VMLC test path - Advanced Zone
@@ -508,7 +508,7 @@ class TestPathVMLC(cloudstackTestCase):
             self.fail("Exception while SSHing to VM: %s" % e)
         return
 
-    @attr(tags=["advanced"], required_hardware="false")
+    @attr(tags=["advanced"], required_hardware="True")
     def test_01_positive_tests_vm_deploy_shared_nw(self):
         """ Positive tests for VMLC test path - Advanced Zone in Shared Network
 
@@ -560,7 +560,7 @@ class TestPathVMLC(cloudstackTestCase):
         )
         return
 
-    @attr(tags=["basic"], required_hardware="false")
+    @attr(tags=["basic"], required_hardware="True")
     def test_01_positive_tests_vm_operations_basic_zone(self):
         """ Positive tests for VMLC test path - Basic Zone
 
@@ -722,7 +722,7 @@ class TestPathVMLC(cloudstackTestCase):
             self.fail("Exception while SSHing to VM: %s" % e)
         return
 
-    @attr(tags=["advanced"], required_hardware="false")
+    @attr(tags=["advanced"], required_hardware="True")
     @data(ISOLATED_NETWORK, SHARED_NETWORK, VPC_NETWORK)
     def test_02_negative_tests_destroy_VM_operations_advanced_zone(
             self,
@@ -774,7 +774,7 @@ class TestPathVMLC(cloudstackTestCase):
 
         return
 
-    @attr(tags=["basic"], required_hardware="false")
+    @attr(tags=["basic"], required_hardware="True")
     def test_02_negative_tests_destroy_VM_operations_basic_zone(self):
         """ Negative tests for VMLC test path - destroy VM
 
@@ -817,7 +817,7 @@ class TestPathVMLC(cloudstackTestCase):
 
         return
 
-    @attr(tags=["advanced"], required_hardware="false")
+    @attr(tags=["advanced"], required_hardware="True")
     @data(ISOLATED_NETWORK, SHARED_NETWORK, VPC_NETWORK)
     def test_03_negative_tests_expunge_VM_operations_advanced_zone(
             self,
@@ -875,7 +875,7 @@ class TestPathVMLC(cloudstackTestCase):
 
         return
 
-    @attr(tags=["basic"], required_hardware="false")
+    @attr(tags=["basic"], required_hardware="True")
     def test_03_negative_tests_expunge_VM_operations_basic_zone(self):
         """ Negative tests for VMLC test path - expunge VM
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/229f2387/test/integration/testpaths/testpath_volumelifecycle.py
----------------------------------------------------------------------
diff --git a/test/integration/testpaths/testpath_volumelifecycle.py b/test/integration/testpaths/testpath_volumelifecycle.py
index 55bfc89..70ca03f 100644
--- a/test/integration/testpaths/testpath_volumelifecycle.py
+++ b/test/integration/testpaths/testpath_volumelifecycle.py
@@ -33,7 +33,7 @@ from marvin.lib.base import (Account,
                              Resources)
 from marvin.lib.utils import cleanup_resources, validateList
 
-# common - commonly used methods for all tests are listed here
+#common - commonly used methods for all tests are listed here
 from marvin.lib.common import (get_zone,
                                get_domain,
                                get_template,
@@ -117,7 +117,6 @@ def verify_vm(self, vmid):
 
 
 class TestPathVolume(cloudstackTestCase):
-
     @classmethod
     def setUpClass(cls):
         testClient = super(TestPathVolume, cls).getClsTestClient()
@@ -128,10 +127,11 @@ class TestPathVolume(cloudstackTestCase):
         cls.zone = get_zone(cls.apiclient)
         cls.testdata["mode"] = cls.zone.networktype
         cls.hypervisor = testClient.getHypervisorInfo()
+        cls.insuffStorage = False
         #for LXC if the storage pool of type 'rbd' ex: ceph is not available, skip the test
         if cls.hypervisor.lower() == 'lxc':
             if not find_storage_pool_type(cls.apiclient, storagetype='rbd'):
-                raise unittest.SkipTest("RBD storage type is required for data volumes for %s" % cls.hypervisor.lower())
+                cls.insuffStorage = True
 
         cls.template = get_template(
             cls.apiclient,
@@ -217,12 +217,19 @@ class TestPathVolume(cloudstackTestCase):
                                   password=cls.testdata["account"]["password"]
                                   )
             assert response.sessionkey is not None
-            # response should have non null value
+            #response should have non null value
         except Exception as e:
-            cls.tearDownClass()
-            raise e
+                cls.tearDownClass()
+                raise e
         return
 
+    def setUp(self):
+        self.apiclient = self.testClient.getApiClient()
+        self.dbclient = self.testClient.getDbConnection()
+        if self.unsupportedHypervisor or self.insuffPools:
+            self.skipTest("Skipping test because of insuff resources\
+                    %s" % self.hypervisor)
+
     @classmethod
     def tearDownClass(cls):
         try:
@@ -264,7 +271,10 @@ class TestPathVolume(cloudstackTestCase):
         # 20.Detach data disks from VM2 and delete volume
 
         """
-
+        if self.hypervisor.lower() in ['lxc']:
+            self.skipTest(
+                "feature is not supported in %s" %
+                self.hypervisor)
         # 1. Deploy a vm [vm1] with shared storage and data disk
         self.virtual_machine_1 = VirtualMachine.create(
             self.userapiclient,