Increase Shaker timeout before init message in console
[functest.git] / functest / opnfv_tests / openstack / shaker / shaker.py
index fd31ea6..57e033e 100644 (file)
@@ -19,6 +19,7 @@ and list of tests to execute.
 import logging
 import os
 
+import json
 import scp
 
 from functest.core import singlevm
@@ -31,23 +32,25 @@ class Shaker(singlevm.SingleVm2):
 
     __logger = logging.getLogger(__name__)
 
-    filename = '/home/opnfv/functest/images/shaker-image.qcow2'
+    filename = '/home/opnfv/functest/images/shaker-image-1.3.0+stretch.qcow2'
     flavor_ram = 512
     flavor_vcpus = 1
     flavor_disk = 3
-    username = 'ubuntu'
+    username = 'debian'
     port = 9000
     ssh_connect_loops = 12
     create_server_timeout = 300
     shaker_timeout = '3600'
     quota_instances = -1
+    quota_cores = -1
+    check_console_loop = 12
 
     def __init__(self, **kwargs):
         super(Shaker, self).__init__(**kwargs)
         self.role = None
 
     def check_requirements(self):
-        if len(self.orig_cloud.list_hypervisors()) < 2:
+        if self.count_hypervisors() < 2:
             self.__logger.warning("Shaker requires at least 2 hypervisors")
             self.is_skipped = True
             self.project.clean()
@@ -85,7 +88,8 @@ class Shaker(singlevm.SingleVm2):
             domain=self.project.domain.id)
         self.orig_cloud.set_compute_quotas(
             self.project.project.name,
-            instances=self.quota_instances)
+            instances=self.quota_instances,
+            cores=self.quota_cores)
         scpc = scp.SCPClient(self.ssh.get_transport())
         scpc.put('/home/opnfv/functest/conf/env_file', remote_path='~/')
         if os.environ.get('OS_CACERT'):
@@ -100,10 +104,10 @@ class Shaker(singlevm.SingleVm2):
             'unset OS_TENANT_NAME && '
             'unset OS_TENANT_ID && '
             'unset OS_ENDPOINT_TYPE && '
-            'export OS_PASSWORD={} && '
+            'export OS_PASSWORD="{}" && '
             '{}'
             'env && '
-            'timeout {} shaker --image-name {} --flavor-name {} '
+            'timeout {} shaker --debug --image-name {} --flavor-name {} '
             '--server-endpoint {}:9000 --external-net {} --dns-nameservers {} '
             '--scenario openstack/full_l2,'
             'openstack/full_l3_east_west,'
@@ -127,6 +131,13 @@ class Shaker(singlevm.SingleVm2):
         except scp.SCPException:
             self.__logger.exception("cannot get report files")
             return 1
+        with open(os.path.join(self.res_dir, 'report.json')) as json_file:
+            data = json.load(json_file)
+            for value in data["records"].values():
+                if value["status"] != "ok":
+                    self.__logger.error(
+                        "%s failed\n%s", value["scenario"], value["stderr"])
+                    return 1
         return stdout.channel.recv_exit_status()
 
     def clean(self):