CLOUDSTACK-8096: Fixed test_ssvm.py for issues while checking the result of diagnostic scripts
Signed-off-by: SrikanteswaraRao Talluri <tall...@apache.org> Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/1413efca Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/1413efca Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/1413efca Branch: refs/heads/4.5 Commit: 1413efcac3c80e0dd6561a35cf8fa2df10c2ad46 Parents: ab3af7b Author: Gaurav Aradhye <gaurav.arad...@clogeny.com> Authored: Mon Dec 22 14:49:25 2014 +0530 Committer: SrikanteswaraRao Talluri <tall...@apache.org> Committed: Tue Dec 23 14:24:32 2014 +0530 ---------------------------------------------------------------------- test/integration/smoke/test_ssvm.py | 1100 ++++++++++++++------------ tools/marvin/marvin/config/test_data.py | 3 +- 2 files changed, 611 insertions(+), 492 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1413efca/test/integration/smoke/test_ssvm.py ---------------------------------------------------------------------- diff --git a/test/integration/smoke/test_ssvm.py b/test/integration/smoke/test_ssvm.py index ed9eab0..0df0302 100644 --- a/test/integration/smoke/test_ssvm.py +++ b/test/integration/smoke/test_ssvm.py @@ -5,9 +5,9 @@ # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at -# +# # http://www.apache.org/licenses/LICENSE-2.0 -# +# # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -16,21 +16,29 @@ # under the License. """ BVT tests for SSVM """ -#Import Local Modules -import marvin -from marvin.cloudstackTestCase import * -from marvin.cloudstackAPI import * -from marvin.sshClient import SshClient -from marvin.lib.utils import * -from marvin.lib.base import * -from marvin.lib.common import * +# Import Local Modules +from marvin.cloudstackTestCase import cloudstackTestCase +from marvin.cloudstackAPI import (stopSystemVm, + rebootSystemVm, + destroySystemVm) +from marvin.lib.utils import (cleanup_resources, + get_process_status, + get_host_credentials) +from marvin.lib.base import (PhysicalNetwork, + NetScaler) +from marvin.lib.common import (get_zone, + list_hosts, + list_ssvms, + list_zones, + list_vlan_ipranges) from nose.plugins.attrib import attr import telnetlib -#Import System modules +# Import System modules import time _multiprocess_shared_ = True + class TestSSVMs(cloudstackTestCase): def setUp(self): @@ -43,7 +51,7 @@ class TestSSVMs(cloudstackTestCase): def tearDown(self): try: - #Clean up, terminate the created templates + # Clean up, terminate the created templates cleanup_resources(self.apiclient, self.cleanup) except Exception as e: @@ -55,9 +63,9 @@ class TestSSVMs(cloudstackTestCase): while True: list_host_response = list_hosts( - self.apiclient, - name=vmname - ) + self.apiclient, + name=vmname + ) if list_host_response and list_host_response[0].state == 'Up': break @@ -68,8 +76,14 @@ class TestSSVMs(cloudstackTestCase): time.sleep(self.services["sleep"]) timeout = timeout - 1 - - @attr(tags = ["advanced", "advancedns", "smoke", "basic", "sg"], required_hardware="false") + @attr( + tags=[ + "advanced", + "advancedns", + "smoke", + "basic", + "sg"], + required_hardware="false") def test_01_list_sec_storage_vm(self): """Test List secondary storage VMs """ @@ -85,117 +99,129 @@ class TestSSVMs(cloudstackTestCase): # 5. DNS entries must match those given for the zone list_ssvm_response = list_ssvms( - self.apiclient, - systemvmtype='secondarystoragevm', - state='Running', - ) - self.assertEqual( - isinstance(list_ssvm_response, list), - True, - "Check list response returns a valid list" - ) - #Verify SSVM response + self.apiclient, + systemvmtype='secondarystoragevm', + state='Running', + ) + self.assertEqual( + isinstance(list_ssvm_response, list), + True, + "Check list response returns a valid list" + ) + # Verify SSVM response self.assertNotEqual( - len(list_ssvm_response), - 0, - "Check list System VMs response" - ) + len(list_ssvm_response), + 0, + "Check list System VMs response" + ) list_zones_response = list_zones(self.apiclient) - + self.assertEqual( - isinstance(list_zones_response, list), - True, - "Check list response returns a valid list" - ) + isinstance(list_zones_response, list), + True, + "Check list response returns a valid list" + ) self.debug("Number of zones: %s" % len(list_zones_response)) self.debug("Number of SSVMs: %s" % len(list_ssvm_response)) # Number of Sec storage VMs = No of Zones self.assertEqual( - len(list_ssvm_response), - len(list_zones_response), - "Check number of SSVMs with number of zones" - ) - #For each secondary storage VM check private IP, - #public IP, link local IP and DNS + len(list_ssvm_response), + len(list_zones_response), + "Check number of SSVMs with number of zones" + ) + # For each secondary storage VM check private IP, + # public IP, link local IP and DNS for ssvm in list_ssvm_response: self.debug("SSVM state: %s" % ssvm.state) self.assertEqual( - ssvm.state, - 'Running', - "Check whether state of SSVM is running" - ) + ssvm.state, + 'Running', + "Check whether state of SSVM is running" + ) self.assertEqual( - hasattr(ssvm, 'privateip'), - True, - "Check whether SSVM has private IP field" - ) + hasattr(ssvm, 'privateip'), + True, + "Check whether SSVM has private IP field" + ) self.assertEqual( - hasattr(ssvm, 'linklocalip'), - True, - "Check whether SSVM has link local IP field" - ) + hasattr(ssvm, 'linklocalip'), + True, + "Check whether SSVM has link local IP field" + ) self.assertEqual( - hasattr(ssvm, 'publicip'), - True, - "Check whether SSVM has public IP field" - ) + hasattr(ssvm, 'publicip'), + True, + "Check whether SSVM has public IP field" + ) - #Fetch corresponding ip ranges information from listVlanIpRanges + # Fetch corresponding ip ranges information from listVlanIpRanges ipranges_response = list_vlan_ipranges( - self.apiclient, - zoneid=ssvm.zoneid - ) + self.apiclient, + zoneid=ssvm.zoneid + ) self.assertEqual( - isinstance(ipranges_response, list), - True, - "Check list response returns a valid list" - ) + isinstance(ipranges_response, list), + True, + "Check list response returns a valid list" + ) iprange = ipranges_response[0] - - #Fetch corresponding Physical Network of SSVM's Zone + + # Fetch corresponding Physical Network of SSVM's Zone listphyntwk = PhysicalNetwork.list( - self.apiclient, - zoneid=ssvm.zoneid - ) - + self.apiclient, + zoneid=ssvm.zoneid + ) + # Execute the following assertion in all zones except EIP-ELB Zones - if not (self.zone.networktype.lower() == 'basic' and isinstance(NetScaler.list(self.apiclient,physicalnetworkid=listphyntwk[0].id), list) is True): + if not ( + self.zone.networktype.lower() == 'basic' and isinstance( + NetScaler.list( + self.apiclient, + physicalnetworkid=listphyntwk[0].id), + list) is True): self.assertEqual( - ssvm.gateway, - iprange.gateway, - "Check gateway with that of corresponding ip range" - ) + ssvm.gateway, + iprange.gateway, + "Check gateway with that of corresponding ip range" + ) - #Fetch corresponding zone information from listZones + # Fetch corresponding zone information from listZones zone_response = list_zones( - self.apiclient, - id=ssvm.zoneid - ) + self.apiclient, + id=ssvm.zoneid + ) self.assertEqual( - isinstance(zone_response, list), - True, - "Check list response returns a valid list" - ) + isinstance(zone_response, list), + True, + "Check list response returns a valid list" + ) self.assertEqual( - ssvm.dns1, - zone_response[0].dns1, - "Check DNS1 with that of corresponding zone" - ) + ssvm.dns1, + zone_response[0].dns1, + "Check DNS1 with that of corresponding zone" + ) self.assertEqual( - ssvm.dns2, - zone_response[0].dns2, - "Check DNS2 with that of corresponding zone" - ) + ssvm.dns2, + zone_response[0].dns2, + "Check DNS2 with that of corresponding zone" + ) return - @attr(tags = ["advanced", "advancedns", "smoke", "basic", "sg"], required_hardware="false") + @attr( + tags=[ + "advanced", + "advancedns", + "smoke", + "basic", + "sg"], + required_hardware="false") def test_02_list_cpvm_vm(self): """Test List console proxy VMs """ @@ -211,111 +237,123 @@ class TestSSVMs(cloudstackTestCase): # 5. DNS entries must match those given for the zone list_cpvm_response = list_ssvms( - self.apiclient, - systemvmtype='consoleproxy', - state='Running', - ) - self.assertEqual( - isinstance(list_cpvm_response, list), - True, - "Check list response returns a valid list" - ) - #Verify CPVM response + self.apiclient, + systemvmtype='consoleproxy', + state='Running', + ) + self.assertEqual( + isinstance(list_cpvm_response, list), + True, + "Check list response returns a valid list" + ) + # Verify CPVM response self.assertNotEqual( - len(list_cpvm_response), - 0, - "Check list System VMs response" - ) + len(list_cpvm_response), + 0, + "Check list System VMs response" + ) list_zones_response = list_zones(self.apiclient) # Number of Console Proxy VMs = No of Zones - + self.assertEqual( - isinstance(list_zones_response, list), - True, - "Check list response returns a valid list" - ) - + isinstance(list_zones_response, list), + True, + "Check list response returns a valid list" + ) + self.debug("Number of zones: %s" % len(list_zones_response)) self.debug("Number of CPVMs: %s" % len(list_cpvm_response)) self.assertEqual( - len(list_cpvm_response), - len(list_zones_response), - "Check number of CPVMs with number of zones" - ) - #For each CPVM check private IP, public IP, link local IP and DNS + len(list_cpvm_response), + len(list_zones_response), + "Check number of CPVMs with number of zones" + ) + # For each CPVM check private IP, public IP, link local IP and DNS for cpvm in list_cpvm_response: self.debug("CPVM state: %s" % cpvm.state) self.assertEqual( - cpvm.state, - 'Running', - "Check whether state of CPVM is running" - ) + cpvm.state, + 'Running', + "Check whether state of CPVM is running" + ) self.assertEqual( - hasattr(cpvm, 'privateip'), - True, - "Check whether CPVM has private IP field" - ) + hasattr(cpvm, 'privateip'), + True, + "Check whether CPVM has private IP field" + ) self.assertEqual( - hasattr(cpvm, 'linklocalip'), - True, - "Check whether CPVM has link local IP field" - ) + hasattr(cpvm, 'linklocalip'), + True, + "Check whether CPVM has link local IP field" + ) self.assertEqual( - hasattr(cpvm, 'publicip'), - True, - "Check whether CPVM has public IP field" - ) - #Fetch corresponding ip ranges information from listVlanIpRanges + hasattr(cpvm, 'publicip'), + True, + "Check whether CPVM has public IP field" + ) + # Fetch corresponding ip ranges information from listVlanIpRanges ipranges_response = list_vlan_ipranges( - self.apiclient, - zoneid=cpvm.zoneid - ) + self.apiclient, + zoneid=cpvm.zoneid + ) self.assertEqual( - isinstance(ipranges_response, list), - True, - "Check list response returns a valid list" - ) + isinstance(ipranges_response, list), + True, + "Check list response returns a valid list" + ) iprange = ipranges_response[0] - #Fetch corresponding Physical Network of SSVM's Zone + # Fetch corresponding Physical Network of SSVM's Zone listphyntwk = PhysicalNetwork.list( - self.apiclient, - zoneid=cpvm.zoneid - ) - + self.apiclient, + zoneid=cpvm.zoneid + ) + # Execute the following assertion in all zones except EIP-ELB Zones - if not (self.zone.networktype.lower() == 'basic' and isinstance(NetScaler.list(self.apiclient,physicalnetworkid=listphyntwk[0].id), list) is True): + if not ( + self.zone.networktype.lower() == 'basic' and isinstance( + NetScaler.list( + self.apiclient, + physicalnetworkid=listphyntwk[0].id), + list) is True): self.assertEqual( - cpvm.gateway, - iprange.gateway, - "Check gateway with that of corresponding ip range" - ) + cpvm.gateway, + iprange.gateway, + "Check gateway with that of corresponding ip range" + ) - #Fetch corresponding zone information from listZones + # Fetch corresponding zone information from listZones zone_response = list_zones( - self.apiclient, - id=cpvm.zoneid - ) + self.apiclient, + id=cpvm.zoneid + ) self.assertEqual( - cpvm.dns1, - zone_response[0].dns1, - "Check DNS1 with that of corresponding zone" - ) + cpvm.dns1, + zone_response[0].dns1, + "Check DNS1 with that of corresponding zone" + ) self.assertEqual( - cpvm.dns2, - zone_response[0].dns2, - "Check DNS2 with that of corresponding zone" - ) + cpvm.dns2, + zone_response[0].dns2, + "Check DNS2 with that of corresponding zone" + ) return - @attr(tags = ["advanced", "advancedns", "smoke", "basic", "sg"], required_hardware="true") + @attr( + tags=[ + "advanced", + "advancedns", + "smoke", + "basic", + "sg"], + required_hardware="true") def test_03_ssvm_internals(self): """Test SSVM Internals""" @@ -329,106 +367,119 @@ class TestSSVMs(cloudstackTestCase): # then the test is a failure list_ssvm_response = list_ssvms( - self.apiclient, - systemvmtype='secondarystoragevm', - state='Running', - zoneid=self.zone.id - ) - self.assertEqual( - isinstance(list_ssvm_response, list), - True, - "Check list response returns a valid list" - ) + self.apiclient, + systemvmtype='secondarystoragevm', + state='Running', + zoneid=self.zone.id + ) + self.assertEqual( + isinstance(list_ssvm_response, list), + True, + "Check list response returns a valid list" + ) ssvm = list_ssvm_response[0] hosts = list_hosts( - self.apiclient, - id=ssvm.hostid - ) - self.assertEqual( - isinstance(hosts, list), - True, - "Check list response returns a valid list" - ) + self.apiclient, + id=ssvm.hostid + ) + self.assertEqual( + isinstance(hosts, list), + True, + "Check list response returns a valid list" + ) host = hosts[0] self.debug("Running SSVM check script") if self.hypervisor.lower() in ('vmware', 'hyperv'): - #SSH into SSVMs is done via management server for Vmware and Hyper-V + # SSH into SSVMs is done via management server for Vmware and + # Hyper-V result = get_process_status( - self.apiclient.connection.mgtSvr, - 22, - self.apiclient.connection.user, - self.apiclient.connection.passwd, - ssvm.privateip, - "/usr/local/cloud/systemvm/ssvm-check.sh |grep -e ERROR -e WARNING -e FAIL", - hypervisor=self.hypervisor - ) + self.apiclient.connection.mgtSvr, + 22, + self.apiclient.connection.user, + self.apiclient.connection.passwd, + ssvm.privateip, + "/usr/local/cloud/systemvm/ssvm-check.sh |grep -e ERROR -e WARNING -e FAIL", + hypervisor=self.hypervisor) else: try: - host.user, host.passwd = get_host_credentials(self.config, host.ipaddress) + host.user, host.passwd = get_host_credentials( + self.config, host.ipaddress) result = get_process_status( - host.ipaddress, - 22, - host.user, - host.passwd, - ssvm.linklocalip, - "/usr/local/cloud/systemvm/ssvm-check.sh |grep -e ERROR -e WARNING -e FAIL" - ) + host.ipaddress, + 22, + host.user, + host.passwd, + ssvm.linklocalip, + "/usr/local/cloud/systemvm/ssvm-check.sh |grep -e ERROR -e WARNING -e FAIL") except KeyError: - self.skipTest("Marvin configuration has no host credentials to check router services") + self.skipTest( + "Marvin configuration has no host\ + credentials to check router services") res = str(result) self.debug("SSVM script output: %s" % res) self.assertEqual( - res.count("ERROR"), - 1, - "Check for Errors in tests" - ) + res.count("ERROR"), + 1, + "Check for Errors in tests" + ) self.assertEqual( - res.count("WARNING"), - 1, - "Check for warnings in tests" - ) + res.count("WARNING"), + 1, + "Check for warnings in tests" + ) - #Check status of cloud service + # Check status of cloud service if self.hypervisor.lower() in ('vmware', 'hyperv'): - #SSH into SSVMs is done via management server for Vmware and Hyper-V + # SSH into SSVMs is done via management server for Vmware and + # Hyper-V result = get_process_status( - self.apiclient.connection.mgtSvr, - 22, - self.apiclient.connection.user, - self.apiclient.connection.passwd, - ssvm.privateip, - "service cloud status", - hypervisor=self.hypervisor - ) + self.apiclient.connection.mgtSvr, + 22, + self.apiclient.connection.user, + self.apiclient.connection.passwd, + ssvm.privateip, + "service cloud status", + hypervisor=self.hypervisor + ) else: try: - host.user, host.passwd = get_host_credentials(self.config, host.ipaddress) + host.user, host.passwd = get_host_credentials( + self.config, host.ipaddress) result = get_process_status( - host.ipaddress, - 22, - host.user, - host.passwd, - ssvm.linklocalip, - "service cloud status" - ) + host.ipaddress, + 22, + host.user, + host.passwd, + ssvm.linklocalip, + "service cloud status" + ) except KeyError: - self.skipTest("Marvin configuration has no host credentials to check router services") + self.skipTest( + "Marvin configuration has no host\ + credentials to check router services") res = str(result) self.debug("Cloud Process status: %s" % res) # cloud.com service (type=secstorage) is running: process id: 2346 self.assertEqual( - res.count("is running"), - 1, - "Check cloud service is running or not" - ) + res.count("is running"), + 1, + "Check cloud service is running or not" + ) return - @attr(tags = ["advanced", "advancedns", "smoke", "basic", "sg"], required_hardware="true") + @attr( + tags=[ + "advanced", + "advancedns", + "smoke", + "basic", + "sg"], + required_hardware="true") def test_04_cpvm_internals(self): """Test CPVM Internals""" @@ -440,78 +491,89 @@ class TestSSVMs(cloudstackTestCase): # running list_cpvm_response = list_ssvms( - self.apiclient, - systemvmtype='consoleproxy', - state='Running', - zoneid=self.zone.id - ) - self.assertEqual( - isinstance(list_cpvm_response, list), - True, - "Check list response returns a valid list" - ) + self.apiclient, + systemvmtype='consoleproxy', + state='Running', + zoneid=self.zone.id + ) + self.assertEqual( + isinstance(list_cpvm_response, list), + True, + "Check list response returns a valid list" + ) cpvm = list_cpvm_response[0] hosts = list_hosts( - self.apiclient, - id=cpvm.hostid - ) - self.assertEqual( - isinstance(hosts, list), - True, - "Check list response returns a valid list" - ) + self.apiclient, + id=cpvm.hostid + ) + self.assertEqual( + isinstance(hosts, list), + True, + "Check list response returns a valid list" + ) host = hosts[0] try: - telnet = telnetlib.Telnet( - str(self.apiclient.connection.mgtSvr), - '8250' - ) - self.debug("Telnet management server (IP: %s)" % - self.apiclient.connection.mgtSvr) + telnetlib.Telnet( + str(self.apiclient.connection.mgtSvr), + '8250' + ) + self.debug("Telnet management server (IP: %s)" % + self.apiclient.connection.mgtSvr) except Exception as e: self.fail( - "Telnet Access failed for %s: %s" % \ - (self.apiclient.connection.mgtSvr, e) - ) + "Telnet Access failed for %s: %s" % + (self.apiclient.connection.mgtSvr, e) + ) self.debug("Checking cloud process status") if self.hypervisor.lower() in ('vmware', 'hyperv'): - #SSH into SSVMs is done via management server for Vmware and Hyper-V + # SSH into SSVMs is done via management server for Vmware and + # Hyper-V result = get_process_status( - self.apiclient.connection.mgtSvr, - 22, - self.apiclient.connection.user, - self.apiclient.connection.passwd, - cpvm.privateip, - "service cloud status", - hypervisor=self.hypervisor - ) + self.apiclient.connection.mgtSvr, + 22, + self.apiclient.connection.user, + self.apiclient.connection.passwd, + cpvm.privateip, + "service cloud status", + hypervisor=self.hypervisor + ) else: try: - host.user, host.passwd = get_host_credentials(self.config, host.ipaddress) + host.user, host.passwd = get_host_credentials( + self.config, host.ipaddress) result = get_process_status( - host.ipaddress, - 22, - host.user, - host.passwd, - cpvm.linklocalip, - "service cloud status" - ) + host.ipaddress, + 22, + host.user, + host.passwd, + cpvm.linklocalip, + "service cloud status" + ) except KeyError: - self.skipTest("Marvin configuration has no host credentials to check router services") + self.skipTest( + "Marvin configuration has no host\ + credentials to check router services") res = str(result) self.debug("Cloud Process status: %s" % res) self.assertEqual( - res.count("is running"), - 1, - "Check cloud service is running or not" - ) + res.count("is running"), + 1, + "Check cloud service is running or not" + ) return - @attr(tags = ["advanced", "advancedns", "smoke", "basic", "sg"], required_hardware="true") + @attr( + tags=[ + "advanced", + "advancedns", + "smoke", + "basic", + "sg"], + required_hardware="true") def test_05_stop_ssvm(self): """Test stop SSVM """ @@ -524,70 +586,81 @@ class TestSSVMs(cloudstackTestCase): # 3. If either of the two above steps fail the test is a failure list_ssvm_response = list_ssvms( - self.apiclient, - systemvmtype='secondarystoragevm', - state='Running', - zoneid=self.zone.id - ) - self.assertEqual( - isinstance(list_ssvm_response, list), - True, - "Check list response returns a valid list" - ) + self.apiclient, + systemvmtype='secondarystoragevm', + state='Running', + zoneid=self.zone.id + ) + self.assertEqual( + isinstance(list_ssvm_response, list), + True, + "Check list response returns a valid list" + ) ssvm = list_ssvm_response[0] hosts = list_hosts( - self.apiclient, - id=ssvm.hostid - ) - self.assertEqual( - isinstance(hosts, list), - True, - "Check list response returns a valid list" - ) - host = hosts[0] + self.apiclient, + id=ssvm.hostid + ) + self.assertEqual( + isinstance(hosts, list), + True, + "Check list response returns a valid list" + ) self.debug("Stopping SSVM: %s" % ssvm.id) cmd = stopSystemVm.stopSystemVmCmd() cmd.id = ssvm.id self.apiclient.stopSystemVm(cmd) - + timeout = self.services["timeout"] while True: list_ssvm_response = list_ssvms( - self.apiclient, - id=ssvm.id - ) + self.apiclient, + id=ssvm.id + ) if isinstance(list_ssvm_response, list): if list_ssvm_response[0].state == 'Running': break if timeout == 0: raise Exception("List SSVM call failed!") - + time.sleep(self.services["sleep"]) timeout = timeout - 1 - + self.assertEqual( - isinstance(list_ssvm_response, list), - True, - "Check list response returns a valid list" - ) + isinstance(list_ssvm_response, list), + True, + "Check list response returns a valid list" + ) ssvm_response = list_ssvm_response[0] self.debug("SSVM state after debug: %s" % ssvm_response.state) self.assertEqual( - ssvm_response.state, - 'Running', - "Check whether SSVM is running or not" - ) + ssvm_response.state, + 'Running', + "Check whether SSVM is running or not" + ) # Wait for the agent to be up self.waitForSystemVMAgent(ssvm_response.name) # Call above tests to ensure SSVM is properly running self.test_01_list_sec_storage_vm() + + # Wait for some time before running diagnostic scripts on SSVM + # as it may take some time to start all service properly + time.sleep(int(self.services["configurableData"]["systemVmDelay"])) + self.test_03_ssvm_internals() return - @attr(tags = ["advanced", "advancedns", "smoke", "basic", "sg"], required_hardware="true") + @attr( + tags=[ + "advanced", + "advancedns", + "smoke", + "basic", + "sg"], + required_hardware="true") def test_06_stop_cpvm(self): """Test stop CPVM """ @@ -600,28 +673,27 @@ class TestSSVMs(cloudstackTestCase): # 3. If either of the two above steps fail the test is a failure list_cpvm_response = list_ssvms( - self.apiclient, - systemvmtype='consoleproxy', - state='Running', - zoneid=self.zone.id - ) - self.assertEqual( - isinstance(list_cpvm_response, list), - True, - "Check list response returns a valid list" - ) + self.apiclient, + systemvmtype='consoleproxy', + state='Running', + zoneid=self.zone.id + ) + self.assertEqual( + isinstance(list_cpvm_response, list), + True, + "Check list response returns a valid list" + ) cpvm = list_cpvm_response[0] hosts = list_hosts( - self.apiclient, - id=cpvm.hostid - ) - self.assertEqual( - isinstance(hosts, list), - True, - "Check list response returns a valid list" - ) - host = hosts[0] + self.apiclient, + id=cpvm.hostid + ) + self.assertEqual( + isinstance(hosts, list), + True, + "Check list response returns a valid list" + ) self.debug("Stopping CPVM: %s" % cpvm.id) cmd = stopSystemVm.stopSystemVmCmd() @@ -631,15 +703,15 @@ class TestSSVMs(cloudstackTestCase): timeout = self.services["timeout"] while True: list_cpvm_response = list_ssvms( - self.apiclient, - id=cpvm.id - ) + self.apiclient, + id=cpvm.id + ) if isinstance(list_cpvm_response, list): if list_cpvm_response[0].state == 'Running': break if timeout == 0: raise Exception("List CPVM call failed!") - + time.sleep(self.services["sleep"]) timeout = timeout - 1 @@ -648,20 +720,32 @@ class TestSSVMs(cloudstackTestCase): self.debug("CPVM state after debug: %s" % cpvm_response.state) self.assertEqual( - cpvm_response.state, - 'Running', - "Check whether CPVM is running or not" - ) + cpvm_response.state, + 'Running', + "Check whether CPVM is running or not" + ) # Wait for the agent to be up self.waitForSystemVMAgent(cpvm_response.name) # Call above tests to ensure CPVM is properly running self.test_02_list_cpvm_vm() + + # Wait for some time before running diagnostic scripts on SSVM + # as it may take some time to start all service properly + time.sleep(int(self.services["configurableData"]["systemVmDelay"])) + self.test_04_cpvm_internals() return - @attr(tags = ["advanced", "advancedns", "smoke", "basic", "sg"], required_hardware="true") + @attr( + tags=[ + "advanced", + "advancedns", + "smoke", + "basic", + "sg"], + required_hardware="true") def test_07_reboot_ssvm(self): """Test reboot SSVM """ @@ -672,32 +756,31 @@ class TestSSVMs(cloudstackTestCase): # 3. The cloud process should still be running within the SSVM list_ssvm_response = list_ssvms( - self.apiclient, - systemvmtype='secondarystoragevm', - state='Running', - zoneid=self.zone.id - ) - - self.assertEqual( - isinstance(list_ssvm_response, list), - True, - "Check list response returns a valid list" - ) - + self.apiclient, + systemvmtype='secondarystoragevm', + state='Running', + zoneid=self.zone.id + ) + + self.assertEqual( + isinstance(list_ssvm_response, list), + True, + "Check list response returns a valid list" + ) + ssvm_response = list_ssvm_response[0] hosts = list_hosts( - self.apiclient, - id=ssvm_response.hostid - ) - self.assertEqual( - isinstance(hosts, list), - True, - "Check list response returns a valid list" - ) - host = hosts[0] + self.apiclient, + id=ssvm_response.hostid + ) + self.assertEqual( + isinstance(hosts, list), + True, + "Check list response returns a valid list" + ) - #Store the public & private IP values before reboot + # Store the public & private IP values before reboot old_public_ip = ssvm_response.publicip old_private_ip = ssvm_response.privateip @@ -709,46 +792,57 @@ class TestSSVMs(cloudstackTestCase): timeout = self.services["timeout"] while True: list_ssvm_response = list_ssvms( - self.apiclient, - id=ssvm_response.id - ) + self.apiclient, + id=ssvm_response.id + ) if isinstance(list_ssvm_response, list): if list_ssvm_response[0].state == 'Running': break if timeout == 0: raise Exception("List SSVM call failed!") - + time.sleep(self.services["sleep"]) timeout = timeout - 1 ssvm_response = list_ssvm_response[0] self.debug("SSVM State: %s" % ssvm_response.state) self.assertEqual( - 'Running', - str(ssvm_response.state), - "Check whether CPVM is running or not" - ) + 'Running', + str(ssvm_response.state), + "Check whether CPVM is running or not" + ) self.assertEqual( - ssvm_response.publicip, - old_public_ip, - "Check Public IP after reboot with that of before reboot" - ) + ssvm_response.publicip, + old_public_ip, + "Check Public IP after reboot with that of before reboot" + ) self.assertEqual( - ssvm_response.privateip, - old_private_ip, - "Check Private IP after reboot with that of before reboot" - ) + ssvm_response.privateip, + old_private_ip, + "Check Private IP after reboot with that of before reboot" + ) # Wait for the agent to be up self.waitForSystemVMAgent(ssvm_response.name) - #Call to verify cloud process is running + # Wait for some time before running diagnostic scripts on SSVM + # as it may take some time to start all service properly + time.sleep(int(self.services["configurableData"]["systemVmDelay"])) + + # Call to verify cloud process is running self.test_03_ssvm_internals() return - @attr(tags = ["advanced", "advancedns", "smoke", "basic", "sg"], required_hardware="true") + @attr( + tags=[ + "advanced", + "advancedns", + "smoke", + "basic", + "sg"], + required_hardware="true") def test_08_reboot_cpvm(self): """Test reboot CPVM """ @@ -758,32 +852,30 @@ class TestSSVMs(cloudstackTestCase): # the same before and after reboot # 3. the cloud process should still be running within the CPVM - list_cpvm_response = list_ssvms( - self.apiclient, - systemvmtype='consoleproxy', - state='Running', - zoneid=self.zone.id - ) - self.assertEqual( - isinstance(list_cpvm_response, list), - True, - "Check list response returns a valid list" - ) + self.apiclient, + systemvmtype='consoleproxy', + state='Running', + zoneid=self.zone.id + ) + self.assertEqual( + isinstance(list_cpvm_response, list), + True, + "Check list response returns a valid list" + ) cpvm_response = list_cpvm_response[0] hosts = list_hosts( - self.apiclient, - id=cpvm_response.hostid - ) - self.assertEqual( - isinstance(hosts, list), - True, - "Check list response returns a valid list" - ) - host = hosts[0] + self.apiclient, + id=cpvm_response.hostid + ) + self.assertEqual( + isinstance(hosts, list), + True, + "Check list response returns a valid list" + ) - #Store the public & private IP values before reboot + # Store the public & private IP values before reboot old_public_ip = cpvm_response.publicip old_private_ip = cpvm_response.privateip @@ -796,15 +888,15 @@ class TestSSVMs(cloudstackTestCase): timeout = self.services["timeout"] while True: list_cpvm_response = list_ssvms( - self.apiclient, - id=cpvm_response.id - ) + self.apiclient, + id=cpvm_response.id + ) if isinstance(list_cpvm_response, list): if list_cpvm_response[0].state == 'Running': break if timeout == 0: raise Exception("List CPVM call failed!") - + time.sleep(self.services["sleep"]) timeout = timeout - 1 @@ -812,30 +904,41 @@ class TestSSVMs(cloudstackTestCase): self.debug("CPVM state: %s" % cpvm_response.state) self.assertEqual( - 'Running', - str(cpvm_response.state), - "Check whether CPVM is running or not" - ) + 'Running', + str(cpvm_response.state), + "Check whether CPVM is running or not" + ) self.assertEqual( - cpvm_response.publicip, - old_public_ip, - "Check Public IP after reboot with that of before reboot" - ) + cpvm_response.publicip, + old_public_ip, + "Check Public IP after reboot with that of before reboot" + ) self.assertEqual( - cpvm_response.privateip, - old_private_ip, - "Check Private IP after reboot with that of before reboot" - ) + cpvm_response.privateip, + old_private_ip, + "Check Private IP after reboot with that of before reboot" + ) # Wait for the agent to be up self.waitForSystemVMAgent(cpvm_response.name) - #Call to verify cloud process is running + # Wait for some time before running diagnostic scripts on SSVM + # as it may take some time to start all service properly + time.sleep(int(self.services["configurableData"]["systemVmDelay"])) + + # Call to verify cloud process is running self.test_04_cpvm_internals() return - @attr(tags = ["advanced", "advancedns", "smoke", "basic", "sg"], required_hardware="true") + @attr( + tags=[ + "advanced", + "advancedns", + "smoke", + "basic", + "sg"], + required_hardware="true") def test_09_destroy_ssvm(self): """Test destroy SSVM """ @@ -848,16 +951,16 @@ class TestSSVMs(cloudstackTestCase): # 4. cloud process within SSVM must be up and running list_ssvm_response = list_ssvms( - self.apiclient, - systemvmtype='secondarystoragevm', - state='Running', - zoneid=self.zone.id - ) - self.assertEqual( - isinstance(list_ssvm_response, list), - True, - "Check list response returns a valid list" - ) + self.apiclient, + systemvmtype='secondarystoragevm', + state='Running', + zoneid=self.zone.id + ) + self.assertEqual( + isinstance(list_ssvm_response, list), + True, + "Check list response returns a valid list" + ) ssvm_response = list_ssvm_response[0] old_name = ssvm_response.name @@ -870,16 +973,16 @@ class TestSSVMs(cloudstackTestCase): timeout = self.services["timeout"] while True: list_ssvm_response = list_ssvms( - self.apiclient, - zoneid=self.zone.id, - systemvmtype='secondarystoragevm' - ) + self.apiclient, + zoneid=self.zone.id, + systemvmtype='secondarystoragevm' + ) if isinstance(list_ssvm_response, list): if list_ssvm_response[0].state == 'Running': break if timeout == 0: raise Exception("List SSVM call failed!") - + time.sleep(self.services["sleep"]) timeout = timeout - 1 @@ -888,36 +991,47 @@ class TestSSVMs(cloudstackTestCase): # Verify Name, Public IP, Private IP and Link local IP # for newly created SSVM self.assertNotEqual( - ssvm_response.name, - old_name, - "Check SSVM new name with name of destroyed SSVM" - ) + ssvm_response.name, + old_name, + "Check SSVM new name with name of destroyed SSVM" + ) self.assertEqual( - hasattr(ssvm_response, 'privateip'), - True, - "Check whether SSVM has private IP field" - ) + hasattr(ssvm_response, 'privateip'), + True, + "Check whether SSVM has private IP field" + ) self.assertEqual( - hasattr(ssvm_response, 'linklocalip'), - True, - "Check whether SSVM has link local IP field" - ) + hasattr(ssvm_response, 'linklocalip'), + True, + "Check whether SSVM has link local IP field" + ) self.assertEqual( - hasattr(ssvm_response, 'publicip'), - True, - "Check whether SSVM has public IP field" - ) - + hasattr(ssvm_response, 'publicip'), + True, + "Check whether SSVM has public IP field" + ) + # Wait for the agent to be up self.waitForSystemVMAgent(ssvm_response.name) - #Call to verify cloud process is running + # Wait for some time before running diagnostic scripts on SSVM + # as it may take some time to start all service properly + time.sleep(int(self.services["configurableData"]["systemVmDelay"])) + + # Call to verify cloud process is running self.test_03_ssvm_internals() return - @attr(tags = ["advanced", "advancedns", "smoke", "basic", "sg"], required_hardware="true") + @attr( + tags=[ + "advanced", + "advancedns", + "smoke", + "basic", + "sg"], + required_hardware="true") def test_10_destroy_cpvm(self): """Test destroy CPVM """ @@ -930,15 +1044,15 @@ class TestSSVMs(cloudstackTestCase): # 4. cloud process within CPVM must be up and running list_cpvm_response = list_ssvms( - self.apiclient, - systemvmtype='consoleproxy', - zoneid=self.zone.id - ) - self.assertEqual( - isinstance(list_cpvm_response, list), - True, - "Check list response returns a valid list" - ) + self.apiclient, + systemvmtype='consoleproxy', + zoneid=self.zone.id + ) + self.assertEqual( + isinstance(list_cpvm_response, list), + True, + "Check list response returns a valid list" + ) cpvm_response = list_cpvm_response[0] old_name = cpvm_response.name @@ -951,16 +1065,16 @@ class TestSSVMs(cloudstackTestCase): timeout = self.services["timeout"] while True: list_cpvm_response = list_ssvms( - self.apiclient, - systemvmtype='consoleproxy', - zoneid=self.zone.id - ) + self.apiclient, + systemvmtype='consoleproxy', + zoneid=self.zone.id + ) if isinstance(list_cpvm_response, list): if list_cpvm_response[0].state == 'Running': break if timeout == 0: raise Exception("List CPVM call failed!") - + time.sleep(self.services["sleep"]) timeout = timeout - 1 @@ -969,31 +1083,35 @@ class TestSSVMs(cloudstackTestCase): # Verify Name, Public IP, Private IP and Link local IP # for newly created CPVM self.assertNotEqual( - cpvm_response.name, - old_name, - "Check SSVM new name with name of destroyed CPVM" - ) + cpvm_response.name, + old_name, + "Check SSVM new name with name of destroyed CPVM" + ) self.assertEqual( - hasattr(cpvm_response, 'privateip'), - True, - "Check whether CPVM has private IP field" - ) + hasattr(cpvm_response, 'privateip'), + True, + "Check whether CPVM has private IP field" + ) self.assertEqual( - hasattr(cpvm_response, 'linklocalip'), - True, - "Check whether CPVM has link local IP field" - ) + hasattr(cpvm_response, 'linklocalip'), + True, + "Check whether CPVM has link local IP field" + ) self.assertEqual( - hasattr(cpvm_response, 'publicip'), - True, - "Check whether CPVM has public IP field" - ) - + hasattr(cpvm_response, 'publicip'), + True, + "Check whether CPVM has public IP field" + ) + # Wait for the agent to be up self.waitForSystemVMAgent(cpvm_response.name) - #Call to verify cloud process is running + # Wait for some time before running diagnostic scripts on SSVM + # as it may take some time to start all service properly + time.sleep(int(self.services["configurableData"]["systemVmDelay"])) + + # Call to verify cloud process is running self.test_04_cpvm_internals() return http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1413efca/tools/marvin/marvin/config/test_data.py ---------------------------------------------------------------------- diff --git a/tools/marvin/marvin/config/test_data.py b/tools/marvin/marvin/config/test_data.py index 4ab7e56..ba2fb24 100644 --- a/tools/marvin/marvin/config/test_data.py +++ b/tools/marvin/marvin/config/test_data.py @@ -1460,6 +1460,7 @@ test_data = { "publicport": 22, "username": "root", "password": "password", - } + }, + "systemVmDelay": 120 } }