Merge "Add common openstack opertation scenarios: network"
[yardstick.git] / yardstick / network_services / vnf_generic / vnf / sample_vnf.py
index e08f517..0434f6a 100644 (file)
@@ -39,7 +39,7 @@ from yardstick.network_services.utils import get_nsb_option
 
 from stl.trex_stl_lib.trex_stl_client import STLClient
 from stl.trex_stl_lib.trex_stl_client import LoggerApi
-from stl.trex_stl_lib.trex_stl_exceptions import STLError, STLStateError
+from stl.trex_stl_lib.trex_stl_exceptions import STLError
 
 from yardstick.ssh import AutoConnectSSH
 
@@ -165,6 +165,7 @@ class DpdkVnfSetupEnvHelper(SetupEnvHelper):
         self.bound_pci = None
         self._dpdk_nic_bind = None
         self.socket = None
+        self.used_drivers = None
 
     @property
     def dpdk_nic_bind(self):
@@ -456,7 +457,7 @@ class ClientResourceHelper(ResourceHelper):
     def get_stats(self, *args, **kwargs):
         try:
             return self.client.get_stats(*args, **kwargs)
-        except STLStateError:
+        except STLError:
             LOG.exception("TRex client not connected")
             return {}
 
@@ -496,18 +497,24 @@ class ClientResourceHelper(ResourceHelper):
     def run_traffic(self, traffic_profile):
         # fixme: fix passing correct trex config file,
         # instead of searching the default path
-        self._build_ports()
-        self.client = self._connect()
-        self.client.reset(ports=self.my_ports)
-        self.client.remove_all_streams(self.my_ports)  # remove all streams
-        traffic_profile.register_generator(self)
-
-        while self._terminated.value == 0:
-            self._run_traffic_once(traffic_profile)
-
-        self.client.stop(self.my_ports)
-        self.client.disconnect()
-        self._terminated.value = 0
+        try:
+            self._build_ports()
+            self.client = self._connect()
+            self.client.reset(ports=self.my_ports)
+            self.client.remove_all_streams(self.my_ports)  # remove all streams
+            traffic_profile.register_generator(self)
+
+            while self._terminated.value == 0:
+                self._run_traffic_once(traffic_profile)
+
+            self.client.stop(self.my_ports)
+            self.client.disconnect()
+            self._terminated.value = 0
+        except STLError:
+            if self._terminated.value:
+                LOG.debug("traffic generator is stopped")
+                return  # return if trex/tg server is stopped.
+            raise
 
     def terminate(self):
         self._terminated.value = 1  # stop client
@@ -636,8 +643,7 @@ class SampleVNFDeployHelper(object):
         build_script = os.path.join(self.SAMPLE_REPO_DIR, 'tools/vnf_build.sh')
         time.sleep(2)
         http_proxy = os.environ.get('http_proxy', '')
-        https_proxy = os.environ.get('https_proxy', '')
-        cmd = "sudo -E %s --silent '%s' '%s'" % (build_script, http_proxy, https_proxy)
+        cmd = "sudo -E %s -s -p='%s'" % (build_script, http_proxy)
         LOG.debug(cmd)
         self.ssh_helper.execute(cmd)
         vnf_bin_loc = os.path.join(self.SAMPLE_REPO_DIR, "VNFs", app_name, "build", app_name)
@@ -925,6 +931,7 @@ class SampleVNFTrafficGen(GenericTrafficGen):
         self._tg_process.start()
 
     def wait_for_instantiate(self):
+        # overridden by subclasses
         return self._wait_for_process()
 
     def _check_status(self):