Post configuration tests to check

- if system VMs are up and running
- if built-in template is downloaded and ready to launch


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

Branch: refs/heads/master
Commit: aa4ff878127f94ef125d8db1d32e988610209b80
Parents: 326655d
Author: Prasanna Santhanam <[email protected]>
Authored: Fri Jun 29 13:39:04 2012 +0530
Committer: Prasanna Santhanam <[email protected]>
Committed: Mon Jul 30 15:27:55 2012 +0530

----------------------------------------------------------------------
 tools/marvin/marvin/testSetupSuccess.py |   64 ++++++++++++++++++++++++++
 1 files changed, 64 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/aa4ff878/tools/marvin/marvin/testSetupSuccess.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/testSetupSuccess.py 
b/tools/marvin/marvin/testSetupSuccess.py
new file mode 100644
index 0000000..ed167a1
--- /dev/null
+++ b/tools/marvin/marvin/testSetupSuccess.py
@@ -0,0 +1,64 @@
+import marvin
+import unittest
+from marvin.cloudstackTestCase import *
+from marvin.cloudstackAPI import *
+from time import sleep as delay
+
+class TestSetupSuccess(cloudstackTestCase):
+    """
+    Test to verify if the cloudstack is ready to launch tests upon
+    1. Verify that system VMs are up and running in all zones
+    2. Verify that built-in templates are Ready in all zones
+    """
+    @classmethod
+    def setUpClass(cls):
+        cls.apiClient = super(TestSetupSuccess, 
cls).getClsTestClient().getApiClient()
+        
+        zones = listZones.listZonesCmd()
+        cls.zones_list = cls.apiClient.listZones(zones)
+        cls.retry = 50
+        
+    def test_systemVmReady(self):
+        """
+        system VMs need to be ready and Running for each zone in cloudstack
+        """
+        for z in self.zones_list:
+            retry = self.retry
+            while retry != 0:
+                self.debug("looking for system VMs in zone: %s, %s"%(z.id, 
z.name))
+                sysvms = listSystemVms.listSystemVmsCmd()
+                sysvms.zoneid = z.id
+                sysvms.state = 'Running'
+                sysvms_list = self.apiClient.listSystemVms(sysvms)
+                if sysvms_list is not None and len(sysvms_list) == 2:
+                    assert len(sysvms_list) == 2
+                    self.debug("found %d system VMs running 
{%s}"%(len(sysvms_list), sysvms_list))
+                    break
+                retry = retry - 1
+                delay(60) #wait a minute for retry
+            self.assertNotEqual(retry, 0, "system VMs not Running in zone 
%s"%z.name)
+    
+    def test_templateBuiltInReady(self):
+        """
+        built-in templates CentOS to be ready
+        """
+        for z in self.zones_list:
+            retry = self.retry
+            while retry != 0:
+                self.debug("Looking for at least one ready builtin template")
+                templates = listTemplates.listTemplatesCmd()
+                templates.templatefilter = 'featured'
+                templates.listall = 'true'
+                templates_list = self.apiClient.listTemplates(templates)
+                if templates_list is not None:
+                    builtins = [tmpl for tmpl in templates_list if 
tmpl.templatetype == 'BUILTIN' and tmpl.isready == True]
+                    if len(builtins) > 0:
+                        self.debug("Found %d builtins ready for use 
%s"%(len(builtins), builtins))
+                        break
+                retry = retry - 1
+                delay(60) #wait a minute for retry
+            self.assertNotEqual(retry, 0, "builtIn templates not ready in zone 
%s"%z.name)
+            
+    @classmethod
+    def tearDownClass(cls):
+        pass

Reply via email to