Merge "Allow to see steady state status in the yardstick logs"
[yardstick.git] / yardstick / network_services / vnf_generic / vnf / sample_vnf.py
index a37f4f7..a09f2a7 100644 (file)
@@ -426,7 +426,8 @@ class ClientResourceHelper(ResourceHelper):
             iteration_index = 0
             while self._terminated.value == 0:
                 iteration_index += 1
-                self._run_traffic_once(traffic_profile)
+                if self._run_traffic_once(traffic_profile):
+                    self._terminated.value = 1
                 mq_producer.tg_method_iteration(iteration_index)
 
             self.client.stop(self.all_ports)
@@ -619,6 +620,7 @@ class ScenarioHelper(object):
         test_timeout = self.options.get('timeout', constants.DEFAULT_VNF_TIMEOUT)
         return test_duration if test_duration > test_timeout else test_timeout
 
+
 class SampleVNF(GenericVNF):
     """ Class providing file-like API for generic VNF implementation """
 
@@ -628,8 +630,9 @@ class SampleVNF(GenericVNF):
     APP_NAME = "SampleVNF"
     # we run the VNF interactively, so the ssh command will timeout after this long
 
-    def __init__(self, name, vnfd, setup_env_helper_type=None, resource_helper_type=None):
-        super(SampleVNF, self).__init__(name, vnfd)
+    def __init__(self, name, vnfd, task_id, setup_env_helper_type=None,
+                 resource_helper_type=None):
+        super(SampleVNF, self).__init__(name, vnfd, task_id)
         self.bin_path = get_nsb_option('bin_path', '')
 
         self.scenario_helper = ScenarioHelper(self.name)
@@ -860,8 +863,9 @@ class SampleVNFTrafficGen(GenericTrafficGen):
     APP_NAME = 'Sample'
     RUN_WAIT = 1
 
-    def __init__(self, name, vnfd, setup_env_helper_type=None, resource_helper_type=None):
-        super(SampleVNFTrafficGen, self).__init__(name, vnfd)
+    def __init__(self, name, vnfd, task_id, setup_env_helper_type=None,
+                 resource_helper_type=None):
+        super(SampleVNFTrafficGen, self).__init__(name, vnfd, task_id)
         self.bin_path = get_nsb_option('bin_path', '')
 
         self.scenario_helper = ScenarioHelper(self.name)
@@ -918,12 +922,12 @@ class SampleVNFTrafficGen(GenericTrafficGen):
                 LOG.info("%s TG Server is up and running.", self.APP_NAME)
                 return self._tg_process.exitcode
 
-    def _traffic_runner(self, traffic_profile, mq_pid):
+    def _traffic_runner(self, traffic_profile, mq_id):
         # always drop connections first thing in new processes
         # so we don't get paramiko errors
         self.ssh_helper.drop_connection()
         LOG.info("Starting %s client...", self.APP_NAME)
-        self._mq_producer = self._setup_mq_producer(mq_pid)
+        self._mq_producer = self._setup_mq_producer(mq_id)
         self.resource_helper.run_traffic(traffic_profile, self._mq_producer)
 
     def run_traffic(self, traffic_profile):
@@ -937,9 +941,9 @@ class SampleVNFTrafficGen(GenericTrafficGen):
         name = '{}-{}-{}-{}'.format(self.name, self.APP_NAME,
                                     traffic_profile.__class__.__name__,
                                     os.getpid())
-        mq_pid = uuid.uuid1().int
-        self._traffic_process = Process(name=name, target=self._traffic_runner,
-                                        args=(traffic_profile, mq_pid))
+        self._traffic_process = Process(
+            name=name, target=self._traffic_runner,
+            args=(traffic_profile, uuid.uuid1().int))
         self._traffic_process.start()
         # Wait for traffic process to start
         while self.resource_helper.client_started.value == 0:
@@ -948,8 +952,6 @@ class SampleVNFTrafficGen(GenericTrafficGen):
             if not self._traffic_process.is_alive():
                 break
 
-        return mq_pid
-
     def collect_kpi(self):
         # check if the tg processes have exited
         physical_node = Context.get_physical_node_from_server(