Merge "Adding new test case for prox Standalone L3FWD."
[yardstick.git] / yardstick / network_services / traffic_profile / prox_profile.py
index 170dfd9..be450c9 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2017 Intel Corporation
+# Copyright (c) 2016-2018 Intel Corporation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -16,6 +16,8 @@
 from __future__ import absolute_import
 
 import logging
+import multiprocessing
+import time
 
 from yardstick.network_services.traffic_profile.base import TrafficProfile
 from yardstick.network_services.vnf_generic.vnf.prox_helpers import ProxProfileHelper
@@ -28,9 +30,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])
@@ -42,7 +58,7 @@ class ProxProfile(TrafficProfile):
     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
@@ -102,7 +118,8 @@ class ProxProfile(TrafficProfile):
         try:
             pkt_size = next(self.pkt_size_iterator)
         except StopIteration:
-            self.done = True
+            time.sleep(5)
+            self.done.set()
             return
 
         # Adjust packet size upwards if it's less than the minimum