Merge "Cleanup ScenarioGeneral unit tests"
[yardstick.git] / yardstick / benchmark / scenarios / networking / vnf_generic.py
index 78f866e..eb62d62 100644 (file)
 # limitations under the License.
 
 import copy
-import logging
-import time
-
 import ipaddress
 from itertools import chain
+import logging
 import os
 import sys
+import time
 
 import six
 import yaml
 
+from yardstick.benchmark.contexts import base as context_base
 from yardstick.benchmark.scenarios import base as scenario_base
-from yardstick.error import IncorrectConfig
 from yardstick.common.constants import LOG_DIR
+from yardstick.common import exceptions
 from yardstick.common.process import terminate_children
 from yardstick.common import utils
 from yardstick.network_services.collector.subscriber import Collector
@@ -37,6 +37,7 @@ from yardstick.network_services.traffic_profile import base as tprofile_base
 from yardstick.network_services.utils import get_nsb_option
 from yardstick import ssh
 
+
 traffic_profile.register_modules()
 
 
@@ -134,11 +135,10 @@ class NetworkServiceTestCase(scenario_base.Scenario):
         with utils.open_relative_file(profile, path) as infile:
             return infile.read()
 
-    def _get_topology(self):
-        topology = self.scenario_cfg["topology"]
-        path = self.scenario_cfg["task_path"]
-        with utils.open_relative_file(topology, path) as infile:
-            return infile.read()
+    def _get_duration(self):
+        options = self.scenario_cfg.get('options', {})
+        return options.get('duration',
+                           tprofile_base.TrafficProfileConfig.DEFAULT_DURATION)
 
     def _fill_traffic_profile(self):
         tprofile = self._get_traffic_profile()
@@ -148,12 +148,17 @@ class NetworkServiceTestCase(scenario_base.Scenario):
             'imix': self._get_traffic_imix(),
             tprofile_base.TrafficProfile.UPLINK: {},
             tprofile_base.TrafficProfile.DOWNLINK: {},
-            'extra_args': extra_args
-        }
-
+            'extra_args': extra_args,
+            'duration': self._get_duration()}
         traffic_vnfd = vnfdgen.generate_vnfd(tprofile, tprofile_data)
         self.traffic_profile = tprofile_base.TrafficProfile.get(traffic_vnfd)
 
+    def _get_topology(self):
+        topology = self.scenario_cfg["topology"]
+        path = self.scenario_cfg["task_path"]
+        with utils.open_relative_file(topology, path) as infile:
+            return infile.read()
+
     def _render_topology(self):
         topology = self._get_topology()
         topology_args = self.scenario_cfg.get('extra_args', {})
@@ -190,8 +195,9 @@ class NetworkServiceTestCase(scenario_base.Scenario):
             try:
                 node0_data, node1_data = vld["vnfd-connection-point-ref"]
             except (ValueError, TypeError):
-                raise IncorrectConfig("Topology file corrupted, "
-                                      "wrong endpoint count for connection")
+                raise exceptions.IncorrectConfig(
+                    error_msg='Topology file corrupted, wrong endpoint count '
+                              'for connection')
 
             node0_name = self._find_vnf_name_from_id(node0_data["member-vnf-index-ref"])
             node1_name = self._find_vnf_name_from_id(node1_data["member-vnf-index-ref"])
@@ -237,15 +243,17 @@ class NetworkServiceTestCase(scenario_base.Scenario):
 
             except KeyError:
                 LOG.exception("")
-                raise IncorrectConfig("Required interface not found, "
-                                      "topology file corrupted")
+                raise exceptions.IncorrectConfig(
+                    error_msg='Required interface not found, topology file '
+                              'corrupted')
 
         for vld in self.topology['vld']:
             try:
                 node0_data, node1_data = vld["vnfd-connection-point-ref"]
             except (ValueError, TypeError):
-                raise IncorrectConfig("Topology file corrupted, "
-                                      "wrong endpoint count for connection")
+                raise exceptions.IncorrectConfig(
+                    error_msg='Topology file corrupted, wrong endpoint count '
+                              'for connection')
 
             node0_name = self._find_vnf_name_from_id(node0_data["member-vnf-index-ref"])
             node1_name = self._find_vnf_name_from_id(node1_data["member-vnf-index-ref"])
@@ -330,8 +338,9 @@ class NetworkServiceTestCase(scenario_base.Scenario):
         except StopIteration:
             pass
 
-        raise IncorrectConfig("No implementation for %s found in %s" %
-                              (expected_name, classes_found))
+        message = ('No implementation for %s found in %s'
+                   % (expected_name, classes_found))
+        raise exceptions.IncorrectConfig(error_msg=message)
 
     @staticmethod
     def create_interfaces_from_node(vnfd, node):
@@ -441,7 +450,7 @@ class NetworkServiceTestCase(scenario_base.Scenario):
             traffic_gen.listen_traffic(self.traffic_profile)
 
         # register collector with yardstick for KPI collection.
-        self.collector = Collector(self.vnfs)
+        self.collector = Collector(self.vnfs, context_base.Context.get_physical_nodes())
         self.collector.start()
 
         # Start the actual traffic