from __future__ import absolute_import
import logging
+import multiprocessing
from yardstick.network_services.traffic_profile.base import TrafficProfile
+from yardstick.network_services.vnf_generic.vnf.prox_helpers import ProxProfileHelper
LOG = logging.getLogger(__name__)
This profile adds a single stream at the beginning of the traffic session
"""
+ @staticmethod
+ def sort_vpci(traffic_gen):
+ """Return the list of external interfaces ordered by vpci and name
+
+ :param traffic_gen: (ProxTrafficGen) traffic generator
+ :return: list of ordered interfaces
+ """
+ def key_func(interface):
+ return interface['virtual-interface']['vpci'], interface['name']
+
+ return sorted(traffic_gen.vnfd_helper['vdu'][0]['external-interface'],
+ key=key_func)
+
@staticmethod
def fill_samples(samples, traffic_gen):
- for vpci_idx, intf in enumerate(traffic_gen.vpci_if_name_ascending):
+ vpci_if_name_ascending = ProxProfile.sort_vpci(traffic_gen)
+ for vpci_idx, intf in enumerate(vpci_if_name_ascending):
name = intf[1]
# TODO: VNFDs KPIs values needs to be mapped to TRex structure
xe_port = traffic_gen.resource_helper.sut.port_stats([vpci_idx])
def __init__(self, tp_config):
super(ProxProfile, self).__init__(tp_config)
self.queue = None
- self.done = False
+ self.done = multiprocessing.Event()
self.results = []
# TODO: get init values from tp_config
self.lower_bound = float(self.prox_config.get('lower_bound', 10.0))
self.upper_bound = float(self.prox_config.get('upper_bound', 100.0))
self.step_value = float(self.prox_config.get('step_value', 10.0))
+ self._profile_helper = None
+
+ def make_profile_helper(self, traffic_gen):
+ if self._profile_helper is None:
+ self._profile_helper = ProxProfileHelper.make_profile_helper(traffic_gen)
+ return self._profile_helper
def init(self, queue):
self.pkt_size_iterator = iter(self.pkt_sizes)
self.queue = queue
+ self.queue.cancel_join_thread()
def bounds_iterator(self, logger=None):
if logger:
def run_test_with_pkt_size(self, traffic_generator, pkt_size, duration):
raise NotImplementedError
- def execute(self, traffic_generator):
+ def execute_traffic(self, traffic_generator):
+ self.make_profile_helper(traffic_generator)
+
try:
pkt_size = next(self.pkt_size_iterator)
except StopIteration:
- self.done = True
+ self.done.set()
return
# Adjust packet size upwards if it's less than the minimum