Set utf-8 in decode and encode calls
[functest.git] / functest / opnfv_tests / openstack / shaker / shaker.py
index 097d9b2..1ee669c 100644 (file)
@@ -22,6 +22,7 @@ import os
 import scp
 
 from functest.core import singlevm
+from functest.utils import env
 
 
 class Shaker(singlevm.SingleVm2):
@@ -37,12 +38,19 @@ class Shaker(singlevm.SingleVm2):
     username = 'ubuntu'
     port = 9000
     ssh_connect_loops = 12
-    create_server_timeout = 360
+    create_server_timeout = 300
+    shaker_timeout = '3600'
 
     def __init__(self, **kwargs):
         super(Shaker, self).__init__(**kwargs)
         self.role = None
 
+    def check_requirements(self):
+        if len(self.orig_cloud.list_hypervisors()) < 2:
+            self.__logger.warning("Shaker requires at least 2 hypervisors")
+            self.is_skipped = True
+            self.project.clean()
+
     def prepare(self):
         super(Shaker, self).prepare()
         self.cloud.create_security_group_rule(
@@ -87,12 +95,13 @@ class Shaker(singlevm.SingleVm2):
             'export OS_PROJECT_ID={} && '
             'unset OS_TENANT_NAME && '
             'unset OS_TENANT_ID && '
+            'unset OS_ENDPOINT_TYPE && '
             'export OS_PASSWORD={} && '
             '{}'
             'env && '
-            'shaker --image-name {} --flavor-name {} '
-            '--server-endpoint {}:9000 --scenario '
-            'openstack/full_l2,'
+            'timeout {} shaker --image-name {} --flavor-name {} '
+            '--server-endpoint {}:9000 --external-net {} --dns-nameservers {} '
+            '--scenario openstack/full_l2,'
             'openstack/full_l3_east_west,'
             'openstack/full_l3_north_south,'
             'openstack/perf_l3_north_south '
@@ -101,10 +110,11 @@ class Shaker(singlevm.SingleVm2):
                 self.project.project.id, self.project.password,
                 'export OS_CACERT=~/os_cacert && ' if os.environ.get(
                     'OS_CACERT') else '',
-                self.image.name, self.flavor.name,
-                self.fip.floating_ip_address))
-        self.__logger.info("output:\n%s", stdout.read())
-        self.__logger.info("error:\n%s", stderr.read())
+                self.shaker_timeout, self.image.name, self.flavor.name,
+                self.fip.floating_ip_address, self.ext_net.id,
+                env.get('NAMESERVER')))
+        self.__logger.info("output:\n%s", stdout.read().decode("utf-8"))
+        self.__logger.info("error:\n%s", stderr.read().decode("utf-8"))
         if not os.path.exists(self.res_dir):
             os.makedirs(self.res_dir)
         try: