Repository: cloudstack Updated Branches: refs/heads/master 04365601d -> bede34d29
CLOUDSTACK-8394: Skip test cases through setUp() instead of setUpClass() Signed-off-by: Gaurav Aradhye <gaurav.arad...@clogeny.com> This closes #203 Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/bede34d2 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/bede34d2 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/bede34d2 Branch: refs/heads/master Commit: bede34d297a8578d0b7c412d0208ed00ad1fe144 Parents: 0436560 Author: Gaurav Aradhye <gaurav.arad...@clogeny.com> Authored: Tue Apr 28 12:25:23 2015 +0530 Committer: Gaurav Aradhye <gaurav.arad...@clogeny.com> Committed: Tue Apr 28 12:33:54 2015 +0530 ---------------------------------------------------------------------- .../smoke/test_deploy_vgpu_enabled_vm.py | 22 +++++++----- test/integration/smoke/test_nic.py | 4 +-- test/integration/smoke/test_nic_adapter_type.py | 2 +- test/integration/smoke/test_scale_vm.py | 13 ++++--- test/integration/smoke/test_templates.py | 22 +++++++++--- test/integration/smoke/test_vm_snapshots.py | 34 +++++++++++------- test/integration/smoke/test_volumes.py | 37 +++++++++++--------- 7 files changed, 86 insertions(+), 48 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bede34d2/test/integration/smoke/test_deploy_vgpu_enabled_vm.py ---------------------------------------------------------------------- diff --git a/test/integration/smoke/test_deploy_vgpu_enabled_vm.py b/test/integration/smoke/test_deploy_vgpu_enabled_vm.py index 7cf46ea..e71bae1 100644 --- a/test/integration/smoke/test_deploy_vgpu_enabled_vm.py +++ b/test/integration/smoke/test_deploy_vgpu_enabled_vm.py @@ -18,7 +18,7 @@ # Test from the Marvin - Testing in Python wiki # All tests inherit from cloudstackTestCase -from marvin.cloudstackTestCase import cloudstackTestCase, unittest +from marvin.cloudstackTestCase import cloudstackTestCase # Import Integration Libraries @@ -49,6 +49,9 @@ class TestDeployvGPUenabledVM(cloudstackTestCase): testClient = super(TestDeployvGPUenabledVM, self).getClsTestClient() self.apiclient = testClient.getApiClient() self.testdata = self.testClient.getParsedTestDataConfig() + self._cleanup = [] + self.unsupportedHypervisor = False + self.noSuitableHost = False # Need to add check whether zone containing the xen hypervisor or not # as well hosts = list_hosts( @@ -56,8 +59,9 @@ class TestDeployvGPUenabledVM(cloudstackTestCase): hypervisor="XenServer" ) if hosts is None: - raise unittest.SkipTest( - "There are no XenServers available. GPU feature is supported only on XenServer.Check listhosts response") + # GPU feature is supported only on XenServer.Check listhosts response + self.unsupportedHypervisor = True + return else: gpuhosts = 0 for ghost in hosts: @@ -79,8 +83,9 @@ class TestDeployvGPUenabledVM(cloudstackTestCase): else: continue if gpuhosts == 0: - raise unittest.SkipTest( - "No XenServer available with GPU Drivers installed") + # No XenServer available with GPU Drivers installed + self.noSuitableHost = True + return self.domain = get_domain(self.apiclient) self.zone = get_zone(self.apiclient, self.testClient.getZoneForTests()) @@ -90,13 +95,14 @@ class TestDeployvGPUenabledVM(cloudstackTestCase): self.testdata["account"], domainid=self.domain.id ) - self._cleanup = [ - self.account - ] + self._cleanup.append(self.account) def setUp(self): self.testdata = self.testClient.getParsedTestDataConfig()["vgpu"] self.apiclient = self.testClient.getApiClient() + if self.noSuitableHost or self.unsupportedHypervisor: + self.skipTest("Skipping test because suitable hypervisor/host not\ + present") # Get Zone, Domain and Default Built-in template self.domain = get_domain(self.apiclient) http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bede34d2/test/integration/smoke/test_nic.py ---------------------------------------------------------------------- diff --git a/test/integration/smoke/test_nic.py b/test/integration/smoke/test_nic.py index 86faa56..7067074 100644 --- a/test/integration/smoke/test_nic.py +++ b/test/integration/smoke/test_nic.py @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. """ NIC tests for VM """ -from marvin.cloudstackTestCase import cloudstackTestCase, unittest +from marvin.cloudstackTestCase import cloudstackTestCase from marvin.lib.base import (Account, ServiceOffering, Network, @@ -47,7 +47,7 @@ class TestNic(cloudstackTestCase): self.hypervisor = self.testClient.getHypervisorInfo() if self.hypervisor.lower() == "hyperv": - raise unittest.SkipTest("Not supported on Hyper-V") + self.skipTest("Not supported on Hyper-V") try: self.apiclient = self.testClient.getApiClient() http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bede34d2/test/integration/smoke/test_nic_adapter_type.py ---------------------------------------------------------------------- diff --git a/test/integration/smoke/test_nic_adapter_type.py b/test/integration/smoke/test_nic_adapter_type.py index 262dab5..91492eb 100644 --- a/test/integration/smoke/test_nic_adapter_type.py +++ b/test/integration/smoke/test_nic_adapter_type.py @@ -125,7 +125,7 @@ class TestAdapterTypeForNic(cloudstackTestCase): """ if self.hypervisor.lower() not in ["vmware"]: - raise unittest.SkipTest("This test case is written specifically\ + self.skipTest("This test case is written specifically\ for Vmware hypervisor") # Register a private template in the account with nic adapter vmxnet3 http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bede34d2/test/integration/smoke/test_scale_vm.py ---------------------------------------------------------------------- diff --git a/test/integration/smoke/test_scale_vm.py b/test/integration/smoke/test_scale_vm.py index 4e1eade..6968277 100644 --- a/test/integration/smoke/test_scale_vm.py +++ b/test/integration/smoke/test_scale_vm.py @@ -18,7 +18,7 @@ """ # Import Local Modules from marvin.codes import FAILED -from marvin.cloudstackTestCase import cloudstackTestCase, unittest +from marvin.cloudstackTestCase import cloudstackTestCase from marvin.cloudstackAPI import scaleVirtualMachine from marvin.lib.utils import cleanup_resources from marvin.lib.base import (Account, @@ -39,11 +39,12 @@ class TestScaleVm(cloudstackTestCase): testClient = super(TestScaleVm, cls).getClsTestClient() cls.apiclient = testClient.getApiClient() cls.services = testClient.getParsedTestDataConfig() + cls._cleanup = [] + cls.unsupportedHypervisor = False cls.hypervisor = cls.testClient.getHypervisorInfo() if cls.hypervisor.lower() in ('kvm', 'hyperv', 'lxc'): - raise unittest.SkipTest( - "ScaleVM is not supported on KVM, Hyper-V or LXC.\ - Hence, skipping the test") + cls.unsupportedHypervisor = True + return # Get Zone, Domain and templates domain = get_domain(cls.apiclient) @@ -107,6 +108,10 @@ class TestScaleVm(cloudstackTestCase): self.dbclient = self.testClient.getDbConnection() self.cleanup = [] + if self.unsupportedHypervisor: + self.skipTest("Skipping test because unsupported hypervisor\ + %s" % self.hypervisor) + def tearDown(self): # Clean up, terminate the created ISOs cleanup_resources(self.apiclient, self.cleanup) http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bede34d2/test/integration/smoke/test_templates.py ---------------------------------------------------------------------- diff --git a/test/integration/smoke/test_templates.py b/test/integration/smoke/test_templates.py index 4153ca3..2170163 100644 --- a/test/integration/smoke/test_templates.py +++ b/test/integration/smoke/test_templates.py @@ -44,6 +44,10 @@ class TestCreateTemplate(cloudstackTestCase): self.apiclient = self.testClient.getApiClient() self.dbclient = self.testClient.getDbConnection() self.cleanup = [] + + if self.unsupportedHypervisor: + self.skipTest("Skipping test because unsupported hypervisor\ + %s" % self.hypervisor) return def tearDown(self): @@ -59,17 +63,19 @@ class TestCreateTemplate(cloudstackTestCase): def setUpClass(cls): testClient = super(TestCreateTemplate, cls).getClsTestClient() cls.apiclient = testClient.getApiClient() + cls._cleanup = [] cls.services = testClient.getParsedTestDataConfig() + cls.unsupportedHypervisor = False cls.hypervisor = testClient.getHypervisorInfo() if cls.hypervisor.lower() in ['lxc']: - raise unittest.SkipTest("Template creation from root volume is not supported in LXC") + # Template creation from root volume is not supported in LXC + cls.unsupportedHypervisor = True + return # Get Zone, Domain and templates cls.domain = get_domain(cls.apiclient) cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests()) cls.services['mode'] = cls.zone.networktype - - cls._cleanup = [] try: cls.disk_offering = DiskOffering.create( cls.apiclient, @@ -210,10 +216,14 @@ class TestTemplates(cloudstackTestCase): testClient = super(TestTemplates, cls).getClsTestClient() cls.apiclient = testClient.getApiClient() + cls._cleanup = [] cls.services = testClient.getParsedTestDataConfig() + cls.unsupportedHypervisor = False cls.hypervisor = testClient.getHypervisorInfo() if cls.hypervisor.lower() in ['lxc']: - raise unittest.SkipTest("Template creation from root volume is not supported in LXC") + # Template creation from root volume is not supported in LXC + cls.unsupportedHypervisor = True + return # Get Zone, Domain and templates cls.domain = get_domain(cls.apiclient) @@ -325,6 +335,10 @@ class TestTemplates(cloudstackTestCase): self.apiclient = self.testClient.getApiClient() self.dbclient = self.testClient.getDbConnection() self.cleanup = [] + + if self.unsupportedHypervisor: + self.skipTest("Skipping test because unsupported hypervisor\ + %s" % self.hypervisor) return def tearDown(self): http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bede34d2/test/integration/smoke/test_vm_snapshots.py ---------------------------------------------------------------------- diff --git a/test/integration/smoke/test_vm_snapshots.py b/test/integration/smoke/test_vm_snapshots.py index 5d5cdc4..58ac7e5 100644 --- a/test/integration/smoke/test_vm_snapshots.py +++ b/test/integration/smoke/test_vm_snapshots.py @@ -18,7 +18,7 @@ # Import Local Modules from marvin.codes import FAILED, KVM, PASS from nose.plugins.attrib import attr -from marvin.cloudstackTestCase import cloudstackTestCase, unittest +from marvin.cloudstackTestCase import cloudstackTestCase from marvin.lib.utils import random_gen, cleanup_resources, validateList from marvin.lib.base import (Account, ServiceOffering, @@ -37,13 +37,14 @@ class TestVmSnapshot(cloudstackTestCase): @classmethod def setUpClass(cls): testClient = super(TestVmSnapshot, cls).getClsTestClient() - - hypervisor = testClient.getHypervisorInfo() - if hypervisor.lower() in (KVM.lower(), "hyperv", "lxc"): - raise unittest.SkipTest( - "VM snapshot feature is not supported on KVM, Hyper-V or LXC") - cls.apiclient = testClient.getApiClient() + cls._cleanup = [] + cls.unsupportedHypervisor = False + cls.hypervisor = testClient.getHypervisorInfo() + if cls.hypervisor.lower() in (KVM.lower(), "hyperv", "lxc"): + cls.unsupportedHypervisor = True + return + cls.services = testClient.getParsedTestDataConfig() # Get Zone, Domain and templates cls.domain = get_domain(cls.apiclient) @@ -69,11 +70,13 @@ class TestVmSnapshot(cloudstackTestCase): cls.services["account"], domainid=cls.domain.id ) + cls._cleanup.append(cls.account) cls.service_offering = ServiceOffering.create( cls.apiclient, cls.services["service_offerings"] ) + cls._cleanup.append(cls.service_offering) cls.virtual_machine = VirtualMachine.create( cls.apiclient, cls.services["server"], @@ -86,10 +89,6 @@ class TestVmSnapshot(cloudstackTestCase): cls.random_data_0 = random_gen(size=100) cls.test_dir = "/tmp" cls.random_data = "random.data" - cls._cleanup = [ - cls.service_offering, - cls.account, - ] return @classmethod @@ -105,6 +104,10 @@ class TestVmSnapshot(cloudstackTestCase): self.apiclient = self.testClient.getApiClient() self.dbclient = self.testClient.getDbConnection() self.cleanup = [] + + if self.unsupportedHypervisor: + self.skipTest("Skipping test because unsupported hypervisor\ + %s" % self.hypervisor) return def tearDown(self): @@ -285,10 +288,11 @@ class TestSnapshots(cloudstackTestCase): cls.testClient = super(TestSnapshots, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.services = cls.testClient.getParsedTestDataConfig() + cls.unsupportedHypervisor = False cls.hypervisor = cls.testClient.getHypervisorInfo() if cls.hypervisor.lower() in (KVM.lower(), "hyperv", "lxc"): - raise unittest.SkipTest( - "VM snapshot feature is not supported on KVM, Hyper-V or LXC") + cls.unsupportedHypervisor = True + return # Get Domain, Zone, Template cls.domain = get_domain(cls.api_client) cls.zone = get_zone( @@ -335,6 +339,10 @@ class TestSnapshots(cloudstackTestCase): self.apiclient = self.testClient.getApiClient() self.cleanup = [] + if self.unsupportedHypervisor: + self.skipTest("Skipping test because unsupported\ + hypervisor %s" % self.hypervisor) + def tearDown(self): # Clean up, terminate the created resources cleanup_resources(self.apiclient, self.cleanup) http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bede34d2/test/integration/smoke/test_volumes.py ---------------------------------------------------------------------- diff --git a/test/integration/smoke/test_volumes.py b/test/integration/smoke/test_volumes.py index 3362396..1b7ef33 100644 --- a/test/integration/smoke/test_volumes.py +++ b/test/integration/smoke/test_volumes.py @@ -17,7 +17,7 @@ """ BVT tests for Volumes """ #Import Local Modules -from marvin.cloudstackTestCase import cloudstackTestCase, unittest +from marvin.cloudstackTestCase import cloudstackTestCase #from marvin.cloudstackException import * from marvin.cloudstackAPI import (deleteVolume, extractVolume, @@ -57,12 +57,16 @@ class TestCreateVolume(cloudstackTestCase): # Get Zone, Domain and templates cls.domain = get_domain(cls.apiclient) cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests()) + cls._cleanup = [] cls.hypervisor = testClient.getHypervisorInfo() cls.services['mode'] = cls.zone.networktype + cls.invalidStoragePoolType = 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 LXC") + # RBD storage type is required for data volumes for LXC + cls.invalidStoragePoolType = True + return cls.disk_offering = DiskOffering.create( cls.apiclient, cls.services["disk_offering"] @@ -120,6 +124,10 @@ class TestCreateVolume(cloudstackTestCase): self.dbclient = self.testClient.getDbConnection() self.cleanup = [] + if self.invalidStoragePoolType: + self.skipTest("Skipping test because of valid storage\ + pool not available") + @attr(tags = ["advanced", "advancedns", "smoke", "basic"], required_hardware="true") def test_01_create_volume(self): """Test Volume creation for all Disk Offerings (incl. custom) @@ -264,16 +272,19 @@ class TestVolumes(cloudstackTestCase): testClient = super(TestVolumes, cls).getClsTestClient() cls.apiclient = testClient.getApiClient() cls.services = testClient.getParsedTestDataConfig() - + cls._cleanup = [] # Get Zone, Domain and templates cls.domain = get_domain(cls.apiclient) cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests()) cls.services['mode'] = cls.zone.networktype cls.hypervisor = testClient.getHypervisorInfo() + cls.invalidStoragePoolType = 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 LXC") + # RBD storage type is required for data volumes for LXC + cls.invalidStoragePoolType = True + return cls.disk_offering = DiskOffering.create( cls.apiclient, cls.services["disk_offering"] @@ -321,16 +332,7 @@ class TestVolumes(cloudstackTestCase): serviceofferingid=cls.service_offering.id, mode=cls.services["mode"] ) - pools = StoragePool.list(cls.apiclient) - # cls.assertEqual( - # validateList(pools)[0], - # PASS, - # "storage pool list validation failed") - - - if cls.hypervisor.lower() == 'lxc' and cls.storage_pools.type.lower() != 'rbd': - raise unittest.SkipTest("Snapshots not supported on Hyper-V or LXC") cls.volume = Volume.create( cls.apiclient, cls.services, @@ -359,6 +361,10 @@ class TestVolumes(cloudstackTestCase): self.attached = False self.cleanup = [] + if self.invalidStoragePoolType: + self.skipTest("Skipping test because valid storage pool not\ + available") + def tearDown(self): #Clean up, terminate the created volumes if self.attached: @@ -454,7 +460,7 @@ class TestVolumes(cloudstackTestCase): #with self.assertRaises(Exception): with self.assertRaises(Exception): self.apiClient.deleteVolume(cmd) - + @attr(tags = ["advanced", "advancedns", "smoke", "basic"], required_hardware="false") def test_05_detach_volume(self): """Detach a Volume attached to a VM @@ -590,7 +596,6 @@ class TestVolumes(cloudstackTestCase): cmd.id = self.volume.id cmd.diskofferingid = self.services['diskofferingid'] cmd.size = 4 - currentSize = self.volume.size self.debug( "Attaching volume (ID: %s) to VM (ID: %s)" % ( @@ -619,7 +624,7 @@ class TestVolumes(cloudstackTestCase): if hosts[0].hypervisor == "XenServer": self.virtual_machine.start(self.apiClient) time.sleep(30) - return + return @attr(tags = ["advanced", "advancedns", "smoke", "basic"], required_hardware="true")