aboutsummaryrefslogtreecommitdiffstats
path: root/yardstick
diff options
context:
space:
mode:
authorRoss Brattain <ross.b.brattain@intel.com>2017-11-02 16:54:56 -0700
committerRoss Brattain <ross.b.brattain@intel.com>2017-12-14 04:17:20 +0000
commite947f924af1fbd0012690f535b1e0922e2cb1d20 (patch)
tree3ba76f37ac941ccd1a31aeac0677dc681795001b /yardstick
parent71f18a582481c3d51c8e2a1450f4ca71bd2a20d7 (diff)
NSB TRex: convert DPDK port number to logical TRex port number
when we create TRex config we sort based on PCI bus address and create a logical port ordering. We need to save this port ordering and re-use it everywhere. redirect vnfd_helper.port_num() to resource_helper.port_num() to use the logical mapping Change-Id: Ibff628556d5e11e686e15716a66a3210758c4ff0 Signed-off-by: Ross Brattain <ross.b.brattain@intel.com> (cherry picked from commit ce52059f5f78912eeff2d97235c1028c218bf960)
Diffstat (limited to 'yardstick')
-rw-r--r--yardstick/network_services/traffic_profile/rfc2544.py4
-rw-r--r--yardstick/network_services/vnf_generic/vnf/sample_vnf.py4
-rw-r--r--yardstick/network_services/vnf_generic/vnf/tg_trex.py32
3 files changed, 33 insertions, 7 deletions
diff --git a/yardstick/network_services/traffic_profile/rfc2544.py b/yardstick/network_services/traffic_profile/rfc2544.py
index 16e809b65..b1ca8a345 100644
--- a/yardstick/network_services/traffic_profile/rfc2544.py
+++ b/yardstick/network_services/traffic_profile/rfc2544.py
@@ -62,7 +62,7 @@ class RFC2544Profile(TrexProfile):
self.generator.rfc2544_helper.correlated_traffic:
continue
for intf in intfs:
- port = self.generator.vnfd_helper.port_num(intf)
+ port = self.generator.port_num(intf)
self.ports.append(port)
self.generator.client.add_streams(self.get_streams(profile_data), ports=port)
@@ -170,7 +170,7 @@ class RFC2544Profile(TrexProfile):
self.generator.rfc2544_helper.correlated_traffic:
continue
for intf in intfs:
- port = self.generator.vnfd_helper.port_num(intf)
+ port = self.generator.port_num(intf)
self.ports.append(port)
self.generator.client.add_streams(self.get_streams(profile_data), ports=port)
diff --git a/yardstick/network_services/vnf_generic/vnf/sample_vnf.py b/yardstick/network_services/vnf_generic/vnf/sample_vnf.py
index 08ec44f65..5599c0a3b 100644
--- a/yardstick/network_services/vnf_generic/vnf/sample_vnf.py
+++ b/yardstick/network_services/vnf_generic/vnf/sample_vnf.py
@@ -433,6 +433,10 @@ class ClientResourceHelper(ResourceHelper):
self.vnfd_helper.port_nums(self.vnfd_helper.port_pairs.downlink_ports)
self.all_ports = self.vnfd_helper.port_nums(self.vnfd_helper.port_pairs.all_ports)
+ def port_num(self, intf):
+ # by default return port num
+ return self.vnfd_helper.port_num(intf)
+
def get_stats(self, *args, **kwargs):
try:
return self.client.get_stats(*args, **kwargs)
diff --git a/yardstick/network_services/vnf_generic/vnf/tg_trex.py b/yardstick/network_services/vnf_generic/vnf/tg_trex.py
index 458f1b844..93ba8557a 100644
--- a/yardstick/network_services/vnf_generic/vnf/tg_trex.py
+++ b/yardstick/network_services/vnf_generic/vnf/tg_trex.py
@@ -48,27 +48,38 @@ class TrexResourceHelper(ClientResourceHelper):
ASYNC_PORT = 4500
SYNC_PORT = 4501
+ def __init__(self, setup_helper):
+ super(TrexResourceHelper, self).__init__(setup_helper)
+ self.port_map = {}
+ self.dpdk_to_trex_port_map = {}
+
def generate_cfg(self):
port_names = self.vnfd_helper.port_pairs.all_ports
vpci_list = []
port_list = []
+ self.port_map = {}
+ self.dpdk_to_trex_port_map = {}
- port_nums = sorted(self.vnfd_helper.port_nums(port_names))
- for port_num in port_nums:
- interface = self.vnfd_helper.find_interface_by_port(port_num)
+ sorted_ports = sorted((self.vnfd_helper.port_num(port_name), port_name) for port_name in
+ port_names)
+ for index, (port_num, port_name) in enumerate(sorted_ports):
+ interface = self.vnfd_helper.find_interface(name=port_name)
virtual_interface = interface['virtual-interface']
dst_mac = virtual_interface["dst_mac"]
- # why skip?, ordering is based on DPDK port number so we can't skip
+ # this is to check for unused ports, all ports in the topology
+ # will always have dst_mac
if not dst_mac:
continue
- # TRex ports must be in DPDK port number, so order of append matters
+ # TRex ports are in logical order roughly based on DPDK port number sorting
vpci_list.append(virtual_interface["vpci"])
local_mac = virtual_interface["local_mac"]
port_list.append({
"src_mac": mac_address_to_hex_list(local_mac),
"dest_mac": mac_address_to_hex_list(dst_mac),
})
+ self.port_map[port_name] = index
+ self.dpdk_to_trex_port_map[port_num] = index
trex_cfg = {
'interfaces': vpci_list,
'port_info': port_list,
@@ -80,6 +91,17 @@ class TrexResourceHelper(ClientResourceHelper):
cfg_str = yaml.safe_dump(cfg_file, default_flow_style=False, explicit_start=True)
self.ssh_helper.upload_config_file(os.path.basename(self.CONF_FILE), cfg_str)
+ def _build_ports(self):
+ super(TrexResourceHelper, self)._build_ports()
+ # override with TRex logic port number
+ self.uplink_ports = [self.dpdk_to_trex_port_map[p] for p in self.uplink_ports]
+ self.downlink_ports = [self.dpdk_to_trex_port_map[p] for p in self.downlink_ports]
+ self.all_ports = [self.dpdk_to_trex_port_map[p] for p in self.all_ports]
+
+ def port_num(self, intf):
+ # return logical TRex port
+ return self.port_map[intf]
+
def check_status(self):
status, _, _ = self.ssh_helper.execute("sudo lsof -i:%s" % self.SYNC_PORT)
return status