X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=yardstick%2Fnetwork_services%2Ftraffic_profile%2Fprox_profile.py;h=343ef1da26eefe1898040ff4541585a0da13ab5b;hb=b38a0ef766ca5025a09b85573e770c34b389ea17;hp=0a9de9bb6ef9b4768b7c5eb6a0e5e3cb404c9ea5;hpb=62c775f7261dca0081283fadcaa18e53cf2f181c;p=yardstick.git diff --git a/yardstick/network_services/traffic_profile/prox_profile.py b/yardstick/network_services/traffic_profile/prox_profile.py index 0a9de9bb6..343ef1da2 100644 --- a/yardstick/network_services/traffic_profile/prox_profile.py +++ b/yardstick/network_services/traffic_profile/prox_profile.py @@ -18,6 +18,7 @@ from __future__ import absolute_import import logging from yardstick.network_services.traffic_profile.base import TrafficProfile +from yardstick.network_services.vnf_generic.vnf.prox_helpers import ProxProfileHelper LOG = logging.getLogger(__name__) @@ -27,9 +28,23 @@ class ProxProfile(TrafficProfile): 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]) @@ -56,10 +71,17 @@ class ProxProfile(TrafficProfile): 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: @@ -89,6 +111,8 @@ class ProxProfile(TrafficProfile): raise NotImplementedError def execute_traffic(self, traffic_generator): + self.make_profile_helper(traffic_generator) + try: pkt_size = next(self.pkt_size_iterator) except StopIteration: