* [dts] [PATCH V1 0/6] etgen: remove etgen
@ 2021-08-31 8:12 Yufen Mo
2021-08-31 8:12 ` [dts] [PATCH V1 1/6] framework/etgen: " Yufen Mo
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Yufen Mo @ 2021-08-31 8:12 UTC (permalink / raw)
To: dts, lijuan.tu, yingyax.han, junx.w.zhou; +Cc: Yufen Mo
v1:
- remove etgen relevant source code.
Yufen Mo (6):
framework/etgen: remove etgen
tests: remove etgen
tests/vxlan: move to pktgen from etgen
tests/eventdev_perf: move to pktgen from etgen
tests/eventdev_pipeline_perf: move to pktgen from etgen
tests/fdir: move to pktgen from etgen
conf/crbs.cfg | 2 -
conf/ixia.cfg | 15 -
framework/config.py | 67 +-
framework/crb.py | 2 +-
framework/crbs.py | 1 -
framework/dts.py | 6 -
framework/etgen.py | 972 ------------------
framework/logger.py | 20 -
framework/project_dpdk.py | 12 +-
framework/settings.py | 1 -
framework/tester.py | 90 +-
tests/TestSuite_af_xdp_2.py | 2 +-
tests/TestSuite_distributor.py | 2 -
tests/TestSuite_efd.py | 1 -
tests/TestSuite_eventdev_perf.py | 293 ++++--
tests/TestSuite_eventdev_pipeline_perf.py | 170 +--
tests/TestSuite_fdir.py | 45 +-
tests/TestSuite_iavf.py | 1 -
tests/TestSuite_multiprocess.py | 1 -
tests/TestSuite_ntb.py | 1 -
tests/TestSuite_packet_ordering.py | 1 -
tests/TestSuite_performance_thread.py | 1 -
tests/TestSuite_pmd.py | 1 -
tests/TestSuite_rteflow_priority.py | 1 -
tests/TestSuite_userspace_ethtool.py | 127 +--
tests/TestSuite_vhost_virtio_pmd_interrupt.py | 1 -
tests/TestSuite_virtio_event_idx_interrupt.py | 1 -
tests/TestSuite_vm_power_manager.py | 3 +-
tests/TestSuite_vmdq.py | 1 -
tests/TestSuite_vmdq_dcb.py | 1 -
tests/TestSuite_vxlan.py | 186 ++--
31 files changed, 473 insertions(+), 1555 deletions(-)
delete mode 100644 conf/ixia.cfg
delete mode 100644 framework/etgen.py
--
2.21.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [dts] [PATCH V1 1/6] framework/etgen: remove etgen
2021-08-31 8:12 [dts] [PATCH V1 0/6] etgen: remove etgen Yufen Mo
@ 2021-08-31 8:12 ` Yufen Mo
2021-08-31 8:12 ` [dts] [PATCH V1 2/6] tests: " Yufen Mo
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Yufen Mo @ 2021-08-31 8:12 UTC (permalink / raw)
To: dts, lijuan.tu, yingyax.han, junx.w.zhou; +Cc: Yufen Mo
remove etgen relevant source code.
Signed-off-by: Yufen Mo <yufengx.mo@intel.com>
---
conf/crbs.cfg | 2 -
conf/ixia.cfg | 15 -
framework/config.py | 67 +--
framework/crb.py | 2 +-
framework/crbs.py | 1 -
framework/dts.py | 6 -
framework/etgen.py | 972 --------------------------------------
framework/logger.py | 20 -
framework/project_dpdk.py | 12 +-
framework/settings.py | 1 -
framework/tester.py | 90 +---
11 files changed, 5 insertions(+), 1183 deletions(-)
delete mode 100644 conf/ixia.cfg
delete mode 100644 framework/etgen.py
diff --git a/conf/crbs.cfg b/conf/crbs.cfg
index 0ba9d1fc..b6c0a9af 100644
--- a/conf/crbs.cfg
+++ b/conf/crbs.cfg
@@ -6,7 +6,6 @@
# os: operation system type linux or freebsd
# tester_ip: Tester ip address
# tester_passwd: Tester password
-# ixia_group: IXIA group name
# pktgen_group: packet generator group name: ixia/trex/ixia_network
# channels: Board channel number
# bypass_core0: Whether by pass core0
@@ -36,7 +35,6 @@ os=linux
dut_arch=
tester_ip=yyy.yyy.yyy.yyy
tester_passwd=
-ixia_group=
pktgen_group=
channels=4
bypass_core0=True
diff --git a/conf/ixia.cfg b/conf/ixia.cfg
deleted file mode 100644
index 9deba603..00000000
--- a/conf/ixia.cfg
+++ /dev/null
@@ -1,15 +0,0 @@
-# IXIA port Configuration
-# IxiaGroup: Group name for IXIA ports
-# Version : IXIA TCL server version
-# IP : IXIA server IP address
-# Ports : [IXIA port list]
-# ixia_force100g: We need to set this to enable if we need IXIA port work in 100G mode.
-[IXIA Group]
-ixia_version=6.62
-ixia_ip=xxx.xxx.xxx.xxx
-ixia_ports=
- card=1,port=1;
- card=1,port=2;
- card=1,port=3;
- card=1,port=4;
-ixia_force100g=disable
diff --git a/framework/config.py b/framework/config.py
index 88ae8ea5..ac075233 100644
--- a/framework/config.py
+++ b/framework/config.py
@@ -36,7 +36,7 @@ import os
import re
import configparser # config parse module
import argparse # parse arguments module
-from settings import (IXIA, PKTGEN, PKTGEN_DPDK, PKTGEN_TREX, PKTGEN_IXIA, PKTGEN_IXIA_NETWORK,
+from settings import (PKTGEN, PKTGEN_DPDK, PKTGEN_TREX, PKTGEN_IXIA, PKTGEN_IXIA_NETWORK,
CONFIG_ROOT_PATH, SUITE_SECTION_NAME)
from settings import load_global_setting, DTS_CFG_FOLDER
from exception import ConfigParseException, VirtConfigParseException, PortConfigParseException
@@ -268,7 +268,7 @@ class PortConf(UserConf):
class CrbsConf(UserConf):
DEF_CRB = {'IP': '', 'board': 'default', 'user': '',
'pass': '', 'tester IP': '', 'tester pass': '',
- IXIA: None, 'memory channels': 4,
+ 'memory channels': 4,
PKTGEN: None,
'bypass core0': True, 'dut_cores': '',
'snapshot_load_side': 'tester'}
@@ -309,11 +309,6 @@ class CrbsConf(UserConf):
crb['tester IP'] = value
elif key == 'tester_passwd':
crb['tester pass'] = value
- elif key == 'ixia_group':
- # None type will be check later
- if value.lower() == 'none':
- value = None
- crb[IXIA] = value
elif key == 'pktgen_group':
crb[PKTGEN] = value.lower()
elif key == 'channels':
@@ -336,64 +331,6 @@ class CrbsConf(UserConf):
return self.crbs_cfg
-class IxiaConf(UserConf):
-
- def __init__(self, ixia_conf=IXIACONF):
- self.config_file = ixia_conf
- self.ixia_cfg = {}
- try:
- self.ixia_conf = UserConf(self.config_file)
- except ConfigParseException:
- self.ixia_conf = None
- raise ConfigParseException
-
- def load_ixia_config(self):
- port_reg = r'card=(\d+),port=(\d+)'
- groups = self.ixia_conf.get_sections()
- if not groups:
- return self.ixia_cfg
-
- for group in groups:
- ixia_group = {}
- ixia_confs = self.ixia_conf.load_section(group)
- if not ixia_confs:
- continue
-
- # convert file configuration to dts ixiacfg
- for conf in ixia_confs:
- key, value = conf
- if key == 'ixia_version':
- ixia_group['Version'] = value
- elif key == 'ixia_ip':
- ixia_group['IP'] = value
- elif key == 'ixia_ports':
- ports = self.ixia_conf.load_config(value)
- ixia_ports = []
- for port in ports:
- m = re.match(port_reg, port)
- if m:
- ixia_port = {}
- ixia_port["card"] = int(m.group(1))
- ixia_port["port"] = int(m.group(2))
- ixia_ports.append(ixia_port)
- ixia_group['Ports'] = ixia_ports
- elif key == 'ixia_enable_rsfec':
- ixia_group['enable_rsfec'] = value
-
- if 'Version' not in ixia_group:
- print('ixia configuration file request ixia_version option!!!')
- continue
- if 'IP' not in ixia_group:
- print('ixia configuration file request ixia_ip option!!!')
- continue
- if 'Ports' not in ixia_group:
- print('ixia configuration file request ixia_ports option!!!')
- continue
-
- self.ixia_cfg[group] = ixia_group
-
- return self.ixia_cfg
-
class PktgenConf(UserConf):
def __init__(self, pktgen_type='ixia', pktgen_conf=PKTGENCONF):
diff --git a/framework/crb.py b/framework/crb.py
index 3964e213..40fe4fd1 100644
--- a/framework/crb.py
+++ b/framework/crb.py
@@ -32,7 +32,7 @@
import time
import re
import os
-from settings import TIMEOUT, IXIA
+from settings import TIMEOUT
from ssh_connection import SSHConnection
from logger import getLogger
from config import PortConf, PORTCONF, PktgenConf
diff --git a/framework/crbs.py b/framework/crbs.py
index 2ff937ac..c586caa1 100644
--- a/framework/crbs.py
+++ b/framework/crbs.py
@@ -1,7 +1,6 @@
"""
Static configuration data for any CRBs that can be used.
"""
-from settings import IXIA
crbs_desc = {
'CrownPassCRB1':
diff --git a/framework/dts.py b/framework/dts.py
index 6f621a51..e83a6ce5 100644
--- a/framework/dts.py
+++ b/framework/dts.py
@@ -281,9 +281,6 @@ def dts_log_testsuite(duts, tester, suite_obj, log_handler, test_classname):
hasattr(tester, 'pktgen') and \
getattr(tester, 'pktgen'):
tester.pktgen.logger.config_suite(test_classname, 'pktgen')
- elif hasattr(tester, 'ixia_packet_gen') and \
- getattr(tester, 'ixia_packet_gen'):
- tester.ixia_packet_gen.logger.config_suite(test_classname, 'ixia')
except Exception as ex:
pass
@@ -304,9 +301,6 @@ def dts_log_execution(duts, tester, log_handler):
hasattr(tester, 'pktgen') and \
getattr(tester, 'pktgen'):
tester.pktgen.logger.config_execution('pktgen')
- elif hasattr(tester, 'ixia_packet_gen') and \
- getattr(tester, 'ixia_packet_gen'):
- tester.ixia_packet_gen.logger.config_execution('ixia')
except Exception as ex:
pass
diff --git a/framework/etgen.py b/framework/etgen.py
deleted file mode 100644
index acfa2960..00000000
--- a/framework/etgen.py
+++ /dev/null
@@ -1,972 +0,0 @@
-# BSD LICENSE
-#
-# Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in
-# the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Intel Corporation nor the names of its
-# contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import re
-import string
-import time
-from config import IxiaConf
-from ssh_connection import SSHConnection
-from settings import SCAPY2IXIA
-from logger import getLogger
-from exception import VerifyFailure
-from utils import create_mask
-
-
-class SoftwarePacketGenerator():
-
- """
- Software WindRiver packet generator for performance measurement.
- """
-
- def __init__(self, tester):
- self.tester = tester
-
- def packet_generator(self, portList, rate_percent):
- # bind ports
- self.tester.send_expect("insmod igb_uio.ko", "#")
-
- bind_cmd = ""
- allow_list = ""
- ports = []
- tx_ports = []
- for (tx_port, rx_port, pcap_file) in portList:
- if tx_port not in ports:
- ports.append(tx_port)
- tx_ports.append(tx_port)
- if rx_port not in ports:
- ports.append(rx_port)
-
- for port in ports:
- bind_cmd += " %s" % self.tester.ports_info[port]['pci']
- allow_list += " -w %s" % self.tester.ports_info[port]['pci']
-
- self.tester.send_expect("./dpdk-devbind.py --bind=igb_uio %s" % bind_cmd, "#")
-
- # assign core for ports
- map_cmd = ""
- port_index = list(range(len(ports)))
- port_map = dict(list(zip(ports, port_index)))
- self.tester.init_reserved_core()
-
- # reserve one core for master process
- used_cores = list()
- master_core = self.tester.get_reserved_core("1C", socket=0)
-
- if len(master_core) < 1:
- raise VerifyFailure("Not enough core for performance!!!")
-
- used_cores.append(int(master_core[0]))
-
- # allocate cores for each port
- for port in ports:
- numa = self.tester.get_port_numa(port)
- cores = self.tester.get_reserved_core("2C", socket=numa)
-
- if len(cores) < 2:
- raise VerifyFailure("Not enough cores for performance!!!")
-
- map_cmd += "[%s:%s].%d, " % (cores[0], cores[1], port_map[port])
- used_cores.append(int(cores[0]))
- used_cores.append(int(cores[1]))
-
- # prepare pcap for every port
- pcap_cmd = ""
- for (tx_port, rx_port, pcap_file) in portList:
- pcap_cmd += " -s %d:%s" % (port_map[tx_port], pcap_file)
-
- # Selected 2 for -n to optimize results on Burage
- cores_mask = create_mask(used_cores)
-
- # allocate enough memory for 4 ports
- socket_mem = "--socket-mem 1024,1024"
-
- # current support version is dpdk v18.02 + pktgen v3.5.0
- pkt_cmd = "./pktgen -n 2 -c {CORE} --file-prefix=pktgen {ALLOW} " \
- "{MEM} -- -P -m \"{CORE_MAP}\" {PCAP}".format(CORE=cores_mask,
- ALLOW=allow_list, MEM=socket_mem, CORE_MAP=map_cmd, PCAP=pcap_cmd)
-
- self.tester.send_expect(pkt_cmd, "Pktgen:/>", 100)
- self.tester.send_expect("disable screen", "Pktgen:/>")
-
- if rate_percent != 100:
- self.tester.send_expect("set all rate %s" % rate_percent, "Pktgen:/>")
- else:
- self.tester.send_expect("set all rate 100", "Pktgen:/>")
-
- self.tester.send_expect("start all", "Pktgen:/>")
- time.sleep(10)
- out = self.tester.send_expect("lua \"prints('portRates', pktgen.portStats('all', 'rate'))\"", "Pktgen:/>")
- rx_bps = 0
- rx_pps = 0
- tx_bps = 0
- rx_match = r"\[\"mbits_rx\"\] = (\d+),"
- port_stats = re.findall(rx_match, out)
- for port_stat in port_stats:
- rx_bps += int(port_stat)
-
- tx_match = r"\[\"mbits_tx\"\] = (\d+),"
- port_stats = re.findall(tx_match, out)
- for port_stat in port_stats:
- tx_bps += int(port_stat)
-
- pps_match = r"\[\"pkts_rx\"\] = (\d+),"
- port_stats = re.findall(pps_match, out)
- for port_stat in port_stats:
- rx_pps += int(port_stat)
-
- self.tester.send_expect("stop all", "Pktgen:/>")
- self.tester.send_expect("quit", "#")
- # restore stty setting
- self.tester.send_expect('stty -echo', '#')
- self.tester.kill_all(killall=True)
- self.tester.restore_interfaces()
-
- return rx_bps, tx_bps, rx_pps
-
- def throughput(self, portList, rate_percent=100):
- (bps_rx, _, pps_rx) = self.packet_generator(portList, rate_percent)
- return bps_rx, pps_rx
-
- def loss(self, portList, ratePercent):
- (bps_rx, bps_tx, _) = self.packet_generator(portList, ratePercent)
- assert bps_tx != 0
- return (float(bps_tx) - float(bps_rx)) / float(bps_tx), float(bps_tx), float(bps_rx)
-
-
-class IxiaPacketGenerator(SSHConnection):
-
- """
- IXIA packet generator for performance measurement.
- """
-
- def __init__(self, tester):
- self.tester = tester
- self.NAME = 'ixia'
- self.logger = getLogger(self.NAME)
- super(IxiaPacketGenerator, self).__init__(self.get_ip_address(),
- self.NAME, self.tester.get_username(),
- self.get_password())
- super(IxiaPacketGenerator, self).init_log(self.logger)
-
- self.tcl_cmds = []
- self.chasId = None
- self.conRelation = {}
-
- ixiaRef = self.tester.get_external_traffic_generator()
-
- ixiacfg = IxiaConf()
- ixiaPorts = ixiacfg.load_ixia_config()
- if ixiaRef is None or ixiaRef not in ixiaPorts:
- return
-
- self.ixiaVersion = ixiaPorts[ixiaRef]["Version"]
- self.ports = ixiaPorts[ixiaRef]["Ports"]
-
- if 'force100g' in ixiaPorts[ixiaRef]:
- self.enable100g = ixiaPorts[ixiaRef]['force100g']
- else:
- self.enable100g = 'disable'
-
- self.logger.info(self.ixiaVersion)
- self.logger.info(self.ports)
-
- self.tclServerIP = ixiaPorts[ixiaRef]["IP"]
-
- # prepare tcl shell and ixia library
- self.send_expect("tclsh", "% ")
- self.send_expect("source ./IxiaWish.tcl", "% ")
- self.send_expect("set ::env(IXIA_VERSION) %s" % self.ixiaVersion, "% ")
- out = self.send_expect("package req IxTclHal", "% ")
- self.logger.debug("package req IxTclHal return:" + out)
- if self.ixiaVersion in out:
- if not self.tcl_server_login():
- self.close()
- self.session = None
- for port in self.ports:
- port['speed'] = self.get_line_rate(self.chasId, port)
-
- def get_line_rate(self, chasid, port):
- return self.send_expect("stat getLineSpeed %s %s %s" % (chasid, port['card'], port['port']), '%')
-
- def get_ip_address(self):
- return self.tester.get_ip_address()
-
- def get_password(self):
- return self.tester.get_password()
-
- def add_tcl_cmd(self, cmd):
- """
- Add one tcl command into command list.
- """
- self.tcl_cmds.append(cmd)
-
- def clean(self):
- """
- Clean ownership of IXIA devices and logout tcl session.
- """
- self.close()
- self.send_expect("clearOwnershipAndLogout", "% ")
-
- def parse_pcap(self, fpcap):
- dump_str1 = "cmds = []\n"
- dump_str2 = "for i in rdpcap('%s', -1):\n" % fpcap
- dump_str3 = " if 'VXLAN' in i.command():\n" + \
- " vxlan_str = ''\n" + \
- " l = len(i[VXLAN])\n" + \
- " vxlan = str(i[VXLAN])\n" + \
- " first = True\n" + \
- " for j in range(l):\n" + \
- " if first:\n" + \
- " vxlan_str += \"VXLAN(hexval='%02X\" %ord(vxlan[j])\n" + \
- " first = False\n" + \
- " else:\n" + \
- " vxlan_str += \" %02X\" %ord(vxlan[j])\n" + \
- " vxlan_str += \"\')\"\n" + \
- " command = re.sub(r\"VXLAN(.*)\", vxlan_str, i.command())\n" + \
- " else:\n" + \
- " command = i.command()\n" + \
- " cmds.append(command)\n" + \
- "print cmds\n" + \
- "exit()"
-
- f = open("dumppcap.py", "w")
- f.write(dump_str1)
- f.write(dump_str2)
- f.write(dump_str3)
- f.close()
-
- self.session.copy_file_to("dumppcap.py")
- out = self.send_expect("scapy -c dumppcap.py 2>/dev/null", "% ", 120)
- flows = eval(out)
- return flows
-
- def ether(self, port, src, dst, type):
- """
- Configure Ether protocol.
- """
- self.add_tcl_cmd("protocol config -ethernetType ethernetII")
- self.add_tcl_cmd('stream config -sa "%s"' % self.macToTclFormat(src))
- self.add_tcl_cmd('stream config -da "%s"' % self.macToTclFormat(dst))
-
- def ip(self, port, frag, src, proto, tos, dst, chksum, len, version, flags, ihl, ttl, id, options=None):
- """
- Configure IP protocol.
- """
- self.add_tcl_cmd("protocol config -name ip")
- self.add_tcl_cmd('ip config -sourceIpAddr "%s"' % src)
- self.add_tcl_cmd('ip config -destIpAddr "%s"' % dst)
- self.add_tcl_cmd("ip config -ttl %d" % ttl)
- self.add_tcl_cmd("ip config -totalLength %d" % len)
- self.add_tcl_cmd("ip config -fragment %d" % frag)
- self.add_tcl_cmd("ip config -ipProtocol %d" % proto)
- self.add_tcl_cmd("ip config -identifier %d" % id)
- self.add_tcl_cmd("stream config -framesize %d" % (len + 18))
- self.add_tcl_cmd("ip set %d %d %d" % (self.chasId, port['card'], port['port']))
-
- def macToTclFormat(self, macAddr):
- """
- Convert normal mac address format into IXIA's format.
- """
- macAddr = macAddr.upper()
- return "%s %s %s %s %s %s" % (macAddr[:2], macAddr[3:5], macAddr[6:8], macAddr[9:11], macAddr[12:14], macAddr[15:17])
-
- def ipv6(self, port, version, tc, fl, plen, nh, hlim, src, dst):
- """
- Configure IPv6 protocol.
- """
- self.add_tcl_cmd("protocol config -name ipV6")
- self.add_tcl_cmd('ipV6 setDefault')
- self.add_tcl_cmd('ipV6 config -destAddr "%s"' % self.ipv6_to_tcl_format(dst))
- self.add_tcl_cmd('ipV6 config -sourceAddr "%s"' % self.ipv6_to_tcl_format(src))
- self.add_tcl_cmd('ipV6 config -flowLabel %d' % fl)
- self.add_tcl_cmd('ipV6 config -nextHeader %d' % nh)
- self.add_tcl_cmd('ipV6 config -hopLimit %d' % hlim)
- self.add_tcl_cmd('ipV6 config -trafficClass %d' % tc)
- self.add_tcl_cmd("ipV6 clearAllExtensionHeaders")
- self.add_tcl_cmd("ipV6 addExtensionHeader %d" % nh)
-
- self.add_tcl_cmd("stream config -framesize %d" % (plen + 40 + 18))
- self.add_tcl_cmd("ipV6 set %d %d %d" % (self.chasId, port['card'], port['port']))
-
- def udp(self, port, dport, sport, len, chksum):
- """
- Configure UDP protocol.
- """
- self.add_tcl_cmd("udp setDefault")
- self.add_tcl_cmd("udp config -sourcePort %d" % sport)
- self.add_tcl_cmd("udp config -destPort %d" % dport)
- self.add_tcl_cmd("udp config -length %d" % len)
- self.add_tcl_cmd("udp set %d %d %d" %
- (self.chasId, port['card'], port['port']))
-
- def vxlan(self, port, hexval):
- self.add_tcl_cmd("protocolPad setDefault")
- self.add_tcl_cmd("protocol config -enableProtocolPad true")
- self.add_tcl_cmd("protocolPad config -dataBytes \"%s\"" % hexval)
- self.add_tcl_cmd("protocolPad set %d %d %d" %
- (self.chasId, port['card'], port['port']))
-
- def tcp(self, port, sport, dport, seq, ack, dataofs, reserved, flags, window, chksum, urgptr, options=None):
- """
- Configure TCP protocol.
- """
- self.add_tcl_cmd("tcp setDefault")
- self.add_tcl_cmd("tcp config -sourcePort %d" % sport)
- self.add_tcl_cmd("tcp config -destPort %d" % dport)
- self.add_tcl_cmd("tcp set %d %d %d" % (self.chasId, port['card'], port['port']))
-
- def sctp(self, port, sport, dport, tag, chksum):
- """
- Configure SCTP protocol.
- """
- self.add_tcl_cmd("tcp config -sourcePort %d" % sport)
- self.add_tcl_cmd("tcp config -destPort %d" % dport)
- self.add_tcl_cmd("tcp set %d %d %d" % (self.chasId, port['card'], port['port']))
-
- def dot1q(self, port, prio, id, vlan, type):
- """
- Configure 8021Q protocol.
- """
- self.add_tcl_cmd("protocol config -enable802dot1qTag true")
- self.add_tcl_cmd("vlan config -vlanID %d" % vlan)
- self.add_tcl_cmd("vlan config -userPriority %d" % prio)
- self.add_tcl_cmd("vlan set %d %d %d" % (self.chasId, port['card'], port['port']))
-
- def config_stream(self, fpcap, txport, rate_percent, stream_id=1, latency=False):
- """
- Configure IXIA stream and enable multiple flows.
- """
- flows = self.parse_pcap(fpcap)
-
- self.add_tcl_cmd("ixGlobalSetDefault")
- self.config_ixia_stream(rate_percent, flows, latency)
-
- pat = re.compile(r"(\w+)\((.*)\)")
- for flow in flows:
- for header in flow.split('/'):
- match = pat.match(header)
- params = eval('dict(%s)' % match.group(2))
- method_name = match.group(1)
- if method_name == 'VXLAN':
- method = getattr(self, method_name.lower())
- method(txport, **params)
- break
- if method_name in SCAPY2IXIA:
- method = getattr(self, method_name.lower())
- method(txport, **params)
-
- self.add_tcl_cmd("stream set %d %d %d %d" % (self.chasId, txport[
- 'card'], txport['port'], stream_id))
- stream_id += 1
-
- if len(flows) > 1:
- stream_id -= 1
- self.add_tcl_cmd("stream config -dma gotoFirst")
- self.add_tcl_cmd("stream set %d %d %d %d" %
- (self.chasId, txport['card'], txport['port'], stream_id))
-
- def config_ixia_stream(self, rate_percent, flows, latency):
- """
- Configure IXIA stream with rate and latency.
- Override this method if you want to add custom stream configuration.
- """
- self.add_tcl_cmd("stream config -rateMode usePercentRate")
- self.add_tcl_cmd("stream config -percentPacketRate %s" % rate_percent)
- self.add_tcl_cmd("stream config -numFrames 1")
- if len(flows) == 1:
- self.add_tcl_cmd("stream config -dma contPacket")
- else:
- self.add_tcl_cmd("stream config -dma advance")
- # request by packet Group
- if latency is not False:
- self.add_tcl_cmd("stream config -fir true")
-
- def tcl_server_login(self):
- """
- Connect to tcl server and take ownership of all the ports needed.
- """
- out = self.send_expect("ixConnectToTclServer %s" % self.tclServerIP, "% ", 30)
- self.logger.debug("ixConnectToTclServer return:" + out)
- if out.strip()[-1] != '0':
- return False
-
- self.send_expect("ixLogin IxiaTclUser", "% ")
-
- out = self.send_expect("ixConnectToChassis %s" % self.tclServerIP, "% ", 30)
- if out.strip()[-1] != '0':
- return False
-
- out = self.send_expect("set chasId [ixGetChassisID %s]" % self.tclServerIP, "% ")
- self.chasId = int(out.strip())
-
- out = self.send_expect("ixClearOwnership [list %s]" % ' '.join(
- ['[list %d %d %d]' % (self.chasId, item['card'], item['port']) for item in self.ports]), "% ", 10)
- if out.strip()[-1] != '0':
- return False
- out = self.send_expect("ixTakeOwnership [list %s] force" % ' '.join(
- ['[list %d %d %d]' % (self.chasId, item['card'], item['port']) for item in self.ports]), "% ", 10)
- if out.strip()[-1] != '0':
- return False
-
- return True
-
- def tcl_server_logout(self):
- """
- Disconnect to tcl server and make sure has been logged out.
- """
- self.send_expect("ixDisconnectFromChassis %s" % self.tclServerIP, "%")
- self.send_expect("ixLogout", "%")
- self.send_expect("ixDisconnectTclServer %s" % self.tclServerIP, "%")
-
- def config_port(self, pList):
- """
- Configure ports and make them ready for performance validation.
- """
- pl = list()
- for item in pList:
- self.add_tcl_cmd("port setFactoryDefaults chasId %d %d" % (
- item['card'], item['port']))
- # if the line rate is 100G and we need this port work in 100G mode,
- # we need to add some configure to make it so.
- if int(self.get_line_rate(self.chasId, item).strip()) == 100000 and self.enable100g == 'enable':
- self.add_tcl_cmd("port config -ieeeL1Defaults 0")
- self.add_tcl_cmd("port config -autonegotiate false")
- self.add_tcl_cmd("port config -enableRsFec true")
- self.add_tcl_cmd("port set %d %d %d" % (self.chasId, item['card'], item['port']))
-
- pl.append('[list %d %d %d]' % (self.chasId, item['card'], item['port']))
-
- self.add_tcl_cmd("set portList [list %s]" % ' '.join(pl))
-
- self.add_tcl_cmd("ixClearTimeStamp portList")
- self.add_tcl_cmd("ixWritePortsToHardware portList")
- self.add_tcl_cmd("ixCheckLinkState portList")
-
- def set_ixia_port_list(self, pList):
- """
- Implement ports/streams configuration on specified ports.
- """
- self.add_tcl_cmd("set portList [list %s]" %
- ' '.join(['[list %d %d %d]' %
- (self.chasId, item['card'], item['port']) for item in pList]))
-
- def send_ping6(self, pci, mac, ipv6):
- """
- Send ping6 packet from IXIA ports.
- """
- self.send_expect("source ./ixTcl1.0/ixiaPing6.tcl", "% ")
- out = self.send_expect('ping6 "%s" "%s" %d %d %d' %
- (self.ipv6_to_tcl_format(ipv6), self.macToTclFormat(mac), self.chasId, self.pci_to_port(pci)['card'], self.pci_to_port(pci)['port']), "% ", 90)
- return out
-
- def ipv6_to_tcl_format(self, ipv6):
- """
- Convert normal IPv6 address to IXIA format.
- """
- ipv6 = ipv6.upper()
- singleAddr = ipv6.split(":")
- if '' == singleAddr[0]:
- singleAddr = singleAddr[1:]
- if '' in singleAddr:
- tclFormatAddr = ''
- addStr = '0:' * (8 - len(singleAddr)) + '0'
- for i in range(len(singleAddr)):
- if singleAddr[i] == '':
- tclFormatAddr += addStr + ":"
- else:
- tclFormatAddr += singleAddr[i] + ":"
- tclFormatAddr = tclFormatAddr[0:len(tclFormatAddr) - 1]
- return tclFormatAddr
- else:
- return ipv6
-
- def get_ports(self):
- """
- API to get ixia ports
- """
- plist = list()
- if self.session is None:
- return plist
-
- for p in self.ports:
- plist.append({'type': 'ixia', 'pci': 'IXIA:%d.%d' % (p['card'], p['port'])})
- return plist
-
- def pci_to_port(self, pci):
- """
- Convert IXIA fake pci to IXIA port.
- """
- ixia_pci_regex = "IXIA:(\d*).(\d*)"
- m = re.match(ixia_pci_regex, pci)
- if m is None:
- return {'card': -1, 'port': -1}
-
- return {'card': int(m.group(1)), 'port': int(m.group(2))}
-
- def loss(self, portList, ratePercent, delay=5):
- """
- Run loss performance test and return loss rate.
- """
- rxPortlist, txPortlist = self._configure_everything(portList, ratePercent)
- return self.get_loss_packet_rate(rxPortlist, txPortlist, delay)
-
- def get_loss_packet_rate(self, rxPortlist, txPortlist, delay=5):
- """
- Get RX/TX packet statistics and calculate loss rate.
- """
- time.sleep(delay)
-
- self.send_expect("ixStopTransmit portList", "%", 10)
- time.sleep(2)
- sendNumber = 0
- for port in txPortlist:
- self.stat_get_stat_all_stats(port)
- sendNumber += self.get_frames_sent()
- time.sleep(0.5)
-
- self.logger.info("send :%f" % sendNumber)
-
- assert sendNumber != 0
-
- revNumber = 0
- for port in rxPortlist:
- self.stat_get_stat_all_stats(port)
- revNumber += self.get_frames_received()
- self.logger.info("rev :%f" % revNumber)
-
- return float(sendNumber - revNumber) / sendNumber, sendNumber, revNumber
-
- def latency(self, portList, ratePercent, delay=5):
- """
- Run latency performance test and return latency statistics.
- """
- rxPortlist, txPortlist = self._configure_everything(portList, ratePercent, True)
- return self.get_packet_latency(rxPortlist)
-
- def get_packet_latency(self, rxPortlist):
- """
- Stop IXIA transmit and return latency statistics.
- """
- latencyList = []
- time.sleep(10)
- self.send_expect("ixStopTransmit portList", "%", 10)
- for rx_port in rxPortlist:
- self.pktGroup_get_stat_all_stats(rx_port)
- latency = {"port": rx_port,
- "min": self.get_min_latency(),
- "max": self.get_max_latency(),
- "average": self.get_average_latency()}
- latencyList.append(latency)
- return latencyList
-
- def throughput(self, port_list, rate_percent=100, delay=5):
- """
- Run throughput performance test and return throughput statistics.
- """
- rxPortlist, txPortlist = self._configure_everything(port_list, rate_percent)
- return self.get_transmission_results(rxPortlist, txPortlist, delay)
-
- """
- This function could be used to check the packets' order whether same as the receive sequence.
- Please notice that this function only support single-stream mode.
- """
- def is_packet_ordered(self, port_list, delay):
- rxPortlist, txPortlist = self.prepare_port_list(port_list)
- self.prepare_ixia_for_transmission(txPortlist, rxPortlist)
- self.send_expect('port config -receiveMode [expr $::portCapture|$::portRxSequenceChecking|$::portRxModeWidePacketGroup]', '%')
- self.send_expect('port config -autonegotiate true', '%')
- self.send_expect('ixWritePortsToHardware portList', '%')
- self.send_expect('set streamId 1', '%')
- self.send_expect('stream setDefault', '%')
- self.send_expect('ixStartPortPacketGroups %d %d %d' % (self.chasId, self.ports[0]['card'], self.ports[0]['port']), '%')
- self.send_expect('ixStartTransmit portList', '%')
- self.send_expect('after 1000 * %d' % delay, '%')
- self.send_expect('ixStopTransmit portList', '%')
- self.send_expect('ixStopPortPacketGroups %d %d %d' % (self.chasId, self.ports[0]['card'], self.ports[0]['port']), '%')
- self.send_expect('packetGroupStats get %d %d %d 1 1' % (self.chasId, self.ports[0]['card'], self.ports[0]['port']), '%')
- self.send_expect('packetroupStats getGroup 1', '%')
- self.send_expect('set reverseSequenceError [packetGroupStats cget -reverseSequenceError]]', '%')
- output = self.send_expect('puts $reverseSequenceError', '%')
- return int(output[:-2])
-
- def _configure_everything(self, port_list, rate_percent, latency=False):
- """
- Prepare and configure IXIA ports for performance test.
- """
- rxPortlist, txPortlist = self.prepare_port_list(port_list, rate_percent, latency)
- self.prepare_ixia_for_transmission(txPortlist, rxPortlist)
- self.configure_transmission()
- self.start_transmission()
- self.clear_tcl_commands()
- return rxPortlist, txPortlist
-
- def clear_tcl_commands(self):
- """
- Clear all commands in command list.
- """
- del self.tcl_cmds[:]
-
- def start_transmission(self):
- """
- Run commands in command list.
- """
- fileContent = "\n".join(self.tcl_cmds) + "\n"
- self.tester.create_file(fileContent, 'ixiaConfig.tcl')
- self.send_expect("source ixiaConfig.tcl", "% ", 75)
-
- def configure_transmission(self, latency=False):
- """
- Start IXIA ports transmission.
- """
- self.add_tcl_cmd("ixStartTransmit portList")
-
- def prepare_port_list(self, portList, rate_percent=100, latency=False):
- """
- Configure stream and flow on every IXIA ports.
- """
- txPortlist = set()
- rxPortlist = set()
-
- for (txPort, rxPort, pcapFile) in portList:
- txPortlist.add(txPort)
- rxPortlist.add(rxPort)
-
- # port init
- self.config_port([self.pci_to_port(
- self.tester.get_pci(port)) for port in txPortlist.union(rxPortlist)])
-
- # stream/flow setting
- for (txPort, rxPort, pcapFile) in portList:
- self.config_stream(pcapFile, self.pci_to_port(self.tester.get_pci(txPort)), rate_percent, 1, latency)
-
- # config stream before packetGroup
- if latency is not False:
- for (txPort, rxPort, pcapFile) in portList:
- flow_num = len(self.parse_pcap(pcapFile))
- self.config_pktGroup_rx(self.pci_to_port(self.tester.get_pci(rxPort)))
- self.config_pktGroup_tx(self.pci_to_port(self.tester.get_pci(txPort)))
- return rxPortlist, txPortlist
-
- def prepare_ixia_for_transmission(self, txPortlist, rxPortlist):
- """
- Clear all statistics and implement configuration to IXIA hardware.
- """
- self.add_tcl_cmd("ixClearStats portList")
- self.set_ixia_port_list([self.pci_to_port(self.tester.get_pci(port)) for port in txPortlist])
- self.add_tcl_cmd("ixWriteConfigToHardware portList")
- for port in txPortlist:
- self.start_pktGroup(self.pci_to_port(self.tester.get_pci(port)))
- for port in rxPortlist:
- self.start_pktGroup(self.pci_to_port(self.tester.get_pci(port)))
-
- def hook_transmission_func(self):
- pass
-
- def get_transmission_results(self, rx_port_list, tx_port_list, delay=5):
- """
- Override this method if you want to change the way of getting results
- back from IXIA.
- """
- time.sleep(delay)
- bpsRate = 0
- rate = 0
- oversize = 0
- for port in rx_port_list:
- self.stat_get_rate_stat_all_stats(port)
- out = self.send_expect("stat cget -framesReceived", '%', 10)
- rate += int(out.strip())
- out = self.send_expect("stat cget -bitsReceived", '% ', 10)
- self.logger.debug("port %d bits rate:" % (port) + out)
- bpsRate += int(out.strip())
- out = self.send_expect("stat cget -oversize", '%', 10)
- oversize += int(out.strip())
-
- self.logger.info("Rate: %f Mpps" % (rate * 1.0 / 1000000))
- self.logger.info("Mbps rate: %f Mbps" % (bpsRate * 1.0 / 1000000))
-
- self.hook_transmission_func()
-
- self.send_expect("ixStopTransmit portList", "%", 30)
-
- if rate == 0 and oversize > 0:
- return (bpsRate, oversize)
- else:
- return (bpsRate, rate)
-
- def config_ixia_dcb_init(self, rxPort, txPort):
- """
- Configure Ixia for DCB.
- """
- self.send_expect("source ./ixTcl1.0/ixiaDCB.tcl", "% ")
- self.send_expect("configIxia %d %s" % (self.chasId, ' '.join(["%s" % (
- repr(self.conRelation[port][n])) for port in [rxPort, txPort] for n in range(3)])), "% ", 100)
-
- def config_port_dcb(self, direction, tc):
- """
- Configure Port for DCB.
- """
- self.send_expect("configPort %s %s" % (direction, tc), "% ", 100)
-
- def cfgStreamDcb(self, stream, rate, prio, types):
- """
- Configure Stream for DCB.
- """
- self.send_expect("configStream %s %s %s %s" % (stream, rate, prio, types), "% ", 100)
-
- def get_connection_relation(self, dutPorts):
- """
- Get the connect relations between DUT and Ixia.
- """
- for port in dutPorts:
- info = self.tester.get_pci(self.tester.get_local_port(port)).split('.')
- self.conRelation[port] = [int(info[0]), int(info[1]), repr(self.tester.dut.get_mac_address(port).replace(':', ' ').upper())]
- return self.conRelation
-
- def config_pktGroup_rx(self, rxport):
- """
- Sets the transmit Packet Group configuration of the stream
- Default streamID is 1
- """
- self.add_tcl_cmd("port config -receiveMode $::portRxModeWidePacketGroup")
- self.add_tcl_cmd("port set %d %d %d" % (self.chasId, rxport['card'], rxport['port']))
- self.add_tcl_cmd("packetGroup setDefault")
- self.add_tcl_cmd("packetGroup config -latencyControl cutThrough")
- self.add_tcl_cmd("packetGroup setRx %d %d %d" % (self.chasId, rxport['card'], rxport['port']))
- self.add_tcl_cmd("packetGroup setTx %d %d %d 1" % (self.chasId, rxport['card'], rxport['port']))
-
- def config_pktGroup_tx(self, txport):
- """
- Configure tx port pktGroup for latency.
- """
- self.add_tcl_cmd("packetGroup setDefault")
- self.add_tcl_cmd("packetGroup config -insertSignature true")
- self.add_tcl_cmd("packetGroup setTx %d %d %d 1" % (self.chasId,
- txport['card'], txport['port']))
-
- def start_pktGroup(self, port):
- """
- Start tx port pktGroup for latency.
- """
- self.add_tcl_cmd("ixStartPortPacketGroups %d %d %d" % (self.chasId,
- port['card'], port['port']))
-
- def pktGroup_get_stat_all_stats(self, port_number):
- """
- Stop Packet Group operation on port and get current Packet Group
- statistics on port.
- """
- port = self.pci_to_port(self.tester.get_pci(port_number))
- self.send_expect("ixStopPortPacketGroups %d %d %d" % (self.chasId, port['card'], port['port']), "%", 100)
- self.send_expect("packetGroupStats get %d %d %d 0 16384" % (self.chasId, port['card'], port['port']), "%", 100)
- self.send_expect("packetGroupStats getGroup 0", "%", 100)
-
- def close(self):
- """
- We first close the tclsh session opened at the beginning,
- then the SSH session.
- """
- if self.isalive():
- self.send_expect('exit', '# ')
- super(IxiaPacketGenerator, self).close()
-
- def stat_get_stat_all_stats(self, port_number):
- """
- Sends a IXIA TCL command to obtain all the stat values on a given port.
- """
- port = self.pci_to_port(self.tester.get_pci(port_number))
- command = 'stat get statAllStats {0} {1} {2}'
- command = command.format(self.chasId, port['card'], port['port'])
- self.send_expect(command, '% ', 10)
-
- def prepare_ixia_internal_buffers(self, port_number):
- """
- Tells IXIA to prepare the internal buffers were the frames were captured.
- """
- port = self.pci_to_port(self.tester.get_pci(port_number))
- command = 'capture get {0} {1} {2}'
- command = command.format(self.chasId, port['card'], port['port'])
- self.send_expect(command, '% ', 30)
-
- def stat_get_rate_stat_all_stats(self, port_number):
- """
- All statistics of specified IXIA port.
- """
- port = self.pci_to_port(self.tester.get_pci(port_number))
- command = 'stat getRate statAllStats {0} {1} {2}'
- command = command.format(self.chasId, port['card'], port['port'])
- self.send_expect(command, '% ', 30)
- out = self.send_expect(command, '% ', 30)
-
- def ixia_capture_buffer(self, port_number, first_frame, last_frame):
- """
- Tells IXIA to load the captured frames into the internal buffers.
- """
- port = self.pci_to_port(self.tester.get_pci(port_number))
- command = 'captureBuffer get {0} {1} {2} {3} {4}'
- command = command.format(self.chasId, port['card'], port['port'],
- first_frame, last_frame)
- self.send_expect(command, '%', 60)
-
- def ixia_export_buffer_to_file(self, frames_filename):
- """
- Tells IXIA to dump the frames it has loaded in its internal buffer to a
- text file.
- """
- command = 'captureBuffer export %s' % frames_filename
- self.send_expect(command, '%', 30)
-
- def _stat_cget_value(self, requested_value):
- """
- Sends a IXIA TCL command to obtain a given stat value.
- """
- command = "stat cget -" + requested_value
- result = self.send_expect(command, '%', 10)
- return int(result.strip())
-
- def _capture_cget_value(self, requested_value):
- """
- Sends a IXIA TCL command to capture certain number of packets.
- """
- command = "capture cget -" + requested_value
- result = self.send_expect(command, '%', 10)
- return int(result.strip())
-
- def _packetgroup_cget_value(self, requested_value):
- """
- Sends a IXIA TCL command to get pktGroup stat value.
- """
- command = "packetGroupStats cget -" + requested_value
- result = self.send_expect(command, '%', 10)
- return int(result.strip())
-
- def number_of_captured_packets(self):
- """
- Returns the number of packets captured by IXIA on a previously set
- port. Call self.stat_get_stat_all_stats(port) before.
- """
- return self._capture_cget_value('nPackets')
-
- def get_frames_received(self):
- """
- Returns the number of packets captured by IXIA on a previously set
- port. Call self.stat_get_stat_all_stats(port) before.
- """
- if self._stat_cget_value('framesReceived') != 0:
- return self._stat_cget_value('framesReceived')
- else:
- # if the packet size is large than 1518, this line will avoid return
- # a wrong number
- return self._stat_cget_value('oversize')
-
- def get_flow_control_frames(self):
- """
- Returns the number of control frames captured by IXIA on a
- previously set port. Call self.stat_get_stat_all_stats(port) before.
- """
- return self._stat_cget_value('flowControlFrames')
-
- def get_frames_sent(self):
- """
- Returns the number of packets sent by IXIA on a previously set
- port. Call self.stat_get_stat_all_stats(port) before.
- """
- return self._stat_cget_value('framesSent')
-
- def get_transmit_duration(self):
- """
- Returns the duration in nanosecs of the last transmission on a
- previously set port. Call self.stat_get_stat_all_stats(port) before.
- """
- return self._stat_cget_value('transmitDuration')
-
- def get_min_latency(self):
- """
- Returns the minimum latency in nanoseconds of the frames in the
- retrieved capture buffer. Call packetGroupStats get before.
- """
- return self._packetgroup_cget_value('minLatency')
-
- def get_max_latency(self):
- """
- Returns the maximum latency in nanoseconds of the frames in the
- retrieved capture buffer. Call packetGroupStats get before.
- """
- return self._packetgroup_cget_value('maxLatency')
-
- def get_average_latency(self):
- """
- Returns the average latency in nanoseconds of the frames in the
- retrieved capture buffer. Call packetGroupStats get before.
- """
- return self._packetgroup_cget_value('averageLatency')
-
- def _transmission_pre_config(self, port_list, rate_percent, latency=False):
- """
- Prepare and configure IXIA ports for performance test. And remove the transmission step in this config sequence.
- This function is set only for function send_number_packets for nic_single_core_perf test case use
- """
- rxPortlist, txPortlist = self.prepare_port_list(port_list, rate_percent, latency)
- self.prepare_ixia_for_transmission(txPortlist, rxPortlist)
- self.start_transmission()
- self.clear_tcl_commands()
- return rxPortlist, txPortlist
-
- def send_number_packets(self, portList, ratePercent, packetNum):
- """
- Configure ixia to send fixed number of packets
- Note that this function is only set for test_suite nic_single_core_perf,
- Not for common use
- """
- rxPortlist, txPortlist = self._transmission_pre_config(portList, ratePercent)
-
- self.send_expect("stream config -numFrames %s" % packetNum, "%", 5)
- self.send_expect("stream config -dma stopStream", "%", 5)
- for txPort in txPortlist:
- port = self.pci_to_port(self.tester.get_pci(txPort))
- self.send_expect("stream set %d %d %d 1" % (self.chasId, port['card'], port['port']), "%", 5)
-
- self.send_expect("ixWritePortsToHardware portList", "%", 5)
- self.send_expect("ixClearStats portList", "%", 5)
- self.send_expect("ixStartTransmit portList", "%", 5)
- time.sleep(10)
-
- rxPackets = 0
- for port in txPortlist:
- self.stat_get_stat_all_stats(port)
- txPackets = self.get_frames_sent()
- while txPackets != packetNum:
- time.sleep(10)
- self.stat_get_stat_all_stats(port)
- txPackets = self.get_frames_sent()
- rxPackets += self.get_frames_received()
- self.logger.info("Received packets :%s" % rxPackets)
-
- return rxPackets
diff --git a/framework/logger.py b/framework/logger.py
index 63e1d831..5a04bdd2 100644
--- a/framework/logger.py
+++ b/framework/logger.py
@@ -58,9 +58,6 @@ logging.SUITE_DUT_OUTPUT = logging.DEBUG + 3
logging.SUITE_TESTER_CMD = logging.INFO + 4
logging.SUITE_TESTER_OUTPUT = logging.DEBUG + 4
-logging.DTS_IXIA_CMD = logging.INFO + 5
-logging.DTS_IXIA_OUTPUT = logging.DEBUG + 5
-
logging.DTS_VIRTDUT_CMD = logging.INFO + 6
logging.DTS_VIRTDUT_OUTPUT = logging.DEBUG + 6
@@ -75,9 +72,6 @@ logging.addLevelName(logging.DTS_TESTER_CMD, 'DTS_TESTER_CMD')
logging.addLevelName(logging.DTS_TESTER_OUTPUT, 'DTS_TESTER_OUTPUT')
logging.addLevelName(logging.DTS_TESTER_RESULT, 'DTS_TESTER_RESULT')
-logging.addLevelName(logging.DTS_IXIA_CMD, 'DTS_IXIA_CMD')
-logging.addLevelName(logging.DTS_IXIA_OUTPUT, 'DTS_IXIA_OUTPUT')
-
logging.addLevelName(logging.DTS_VIRTDUT_CMD, 'VIRTDUT_CMD')
logging.addLevelName(logging.DTS_VIRTDUT_OUTPUT, 'VIRTDUT_OUTPUT')
@@ -140,12 +134,6 @@ class BaseLoggerAdapter(logging.LoggerAdapter):
def suite_tester_output(self, msg, *args, **kwargs):
self.log(logging.SUITE_TESTER_OUTPUT, msg, *args, **kwargs)
- def dts_ixia_cmd(self, msg, *args, **kwargs):
- self.log(logging.DTS_IXIA_CMD, msg, *args, **kwargs)
-
- def dts_ixia_output(self, msg, *args, **kwargs):
- self.log(logging.DTS_IXIA_OUTPUT, msg, *args, **kwargs)
-
def dts_virtdut_cmd(self, msg, *args, **kwargs):
self.log(logging.DTS_VIRTDUT_CMD, msg, *args, **kwargs)
@@ -174,8 +162,6 @@ class ColorHandler(logging.StreamHandler):
logging.DTS_TESTER_CMD: '', # SYSTEM
logging.SUITE_DUT_CMD: '', # SYSTEM
logging.SUITE_TESTER_CMD: '', # SYSTEM
- logging.DTS_IXIA_CMD: '', # SYSTEM
- logging.DTS_IXIA_OUTPUT: '', # SYSTEM
logging.DTS_PKTGEN_CMD: '', # SYSTEM
logging.DTS_PKTGEN_OUTPUT: '', # SYSTEM
logging.DTS_VIRTDUT_CMD: '', # SYSTEM
@@ -317,9 +303,6 @@ class DTSLOG(BaseLoggerAdapter):
self.info_lvl = logging.DTS_TESTER_CMD
self.debug_lvl = logging.DTS_TESTER_OUTPUT
self.warn_lvl = logging.DTS_TESTER_RESULT
- elif crb.startswith('ixia'):
- self.info_lvl = logging.DTS_IXIA_CMD
- self.debug_lvl = logging.DTS_IXIA_OUTPUT
elif crb.startswith('pktgen'):
self.info_lvl = logging.DTS_PKTGEN_CMD
self.debug_lvl = logging.DTS_PKTGEN_OUTPUT
@@ -352,9 +335,6 @@ class DTSLOG(BaseLoggerAdapter):
elif crb == 'tester':
self.info_lvl = logging.SUITE_TESTER_CMD
self.debug_lvl = logging.SUITE_TESTER_OUTPUT
- elif crb == 'ixia':
- self.info_lvl = logging.DTS_IXIA_CMD
- self.debug_lvl = logging.DTS_IXIA_OUTPUT
elif crb == 'pktgen':
self.info_lvl = logging.DTS_PKTGEN_CMD
self.debug_lvl = logging.DTS_PKTGEN_OUTPUT
diff --git a/framework/project_dpdk.py b/framework/project_dpdk.py
index d96f8d63..51d32229 100644
--- a/framework/project_dpdk.py
+++ b/framework/project_dpdk.py
@@ -40,7 +40,7 @@ from crb import Crb
from dut import Dut
from tester import Tester
from logger import getLogger
-from settings import IXIA, DRIVERS
+from settings import DRIVERS
from utils import RED
@@ -707,16 +707,6 @@ class DPDKtester(Tester):
self.tester_prerequisites()
self.set_promisc()
- # use software pktgen for performance test
- if perf_test is True:
- try:
- if self.crb[IXIA] is not None:
- self.logger.info("Use hardware packet generator")
- except Exception as e:
- self.logger.warning("Use default software pktgen")
- out = self.send_expect("ls /root/igb_uio.ko", "# ")
- assert ("No such file or directory" not in out), "Can not find /root/igb_uio.ko for performance"
- self.setup_memory()
self.stage = "post-init"
diff --git a/framework/settings.py b/framework/settings.py
index fe7c01b5..c08b8709 100644
--- a/framework/settings.py
+++ b/framework/settings.py
@@ -226,7 +226,6 @@ TIMEOUT = 15
"""
Global macro for dts.
"""
-IXIA = "ixia"
PKTGEN = "pktgen"
PKTGEN_DPDK = "dpdk"
PKTGEN_TREX = "trex"
diff --git a/framework/tester.py b/framework/tester.py
index ec233b8a..8f6e97ae 100644
--- a/framework/tester.py
+++ b/framework/tester.py
@@ -38,10 +38,9 @@ import subprocess
import os
from time import sleep
from settings import NICS, load_global_setting, PERF_SETTING
-from settings import IXIA, USERNAME, PKTGEN, PKTGEN_GRP
+from settings import USERNAME, PKTGEN, PKTGEN_GRP
from crb import Crb
from net_device import GetNicObj
-from etgen import IxiaPacketGenerator, SoftwarePacketGenerator
import random
from utils import (GREEN, convert_int2ip, convert_ip2int,
check_crb_python_version)
@@ -78,7 +77,6 @@ class Tester(Crb):
self.bgItf = ''
self.re_run_time = 0
self.pktgen = None
- self.ixia_packet_gen = None
self.tmp_scapy_module_dir = '/tmp/dep'
# prepare for scapy env
self.scapy_sessions_li = list()
@@ -130,10 +128,7 @@ class Tester(Crb):
if self.it_uses_external_generator():
if self.is_pktgen:
self.pktgen_init()
- else:
- self.ixia_packet_gen = IxiaPacketGenerator(self)
return
- self.packet_gen = SoftwarePacketGenerator(self)
def set_re_run(self, re_run_time):
"""
@@ -183,20 +178,12 @@ class Tester(Crb):
try:
# if pktgen_group is set, take pktgen config file as first selection
if self.is_pktgen:
- return True
- elif self.crb[IXIA] is not None:
return True
except Exception as e:
return False
return False
- def get_external_traffic_generator(self):
- """
- Return IXIA object.
- """
- return self.crb[IXIA]
-
def it_uses_external_generator(self):
"""
Check whether IXIA generator is ready for performance test.
@@ -456,8 +443,6 @@ class Tester(Crb):
if self.it_uses_external_generator():
if self.is_pktgen:
self._scan_pktgen_ports()
- else:
- self.ports_info.extend(self.ixia_packet_gen.get_ports())
self.save_serializer_ports()
for port_info in self.ports_info:
@@ -572,8 +557,6 @@ class Tester(Crb):
self.ports_info[localPort]['pci'], mac, ipv6)
elif self.ports_info[localPort]['type'].lower() == 'trex':
return "Not implemented yet"
- elif self.ports_info[localPort]['type'].lower() in 'ixia':
- return self.ixia_packet_gen.send_ping6(self.ports_info[localPort]['pci'], mac, ipv6)
else:
return self.send_expect("ping6 -w 5 -c 5 -A %s%%%s" % (ipv6, self.ports_info[localPort]['intf']), "# ", 10)
@@ -671,60 +654,6 @@ class Tester(Crb):
return out
- def traffic_generator_throughput(self, portList, rate_percent=100, delay=5):
- """
- Run throughput performance test on specified ports.
- """
- if self.check_port_list(portList, 'ixia'):
- return self.ixia_packet_gen.throughput(portList, rate_percent, delay)
- if not self.check_port_list(portList):
- self.logger.warning("exception by mixed port types")
- return None
- return self.packet_gen.throughput(portList, rate_percent)
-
- def verify_packet_order(self, portList, delay):
- if self.check_port_list(portList, 'ixia'):
- return self.ixia_packet_gen.is_packet_ordered(portList, delay)
- else:
- self.logger.warning("Only ixia port support check verify packet order function")
- return False
-
- def run_rfc2544(self, portlist, delay=120, permit_loss_rate=0):
- """
- test_rate: the line rate we are going to test.
- """
- test_rate = float(100)
-
- self.logger.info("test rate: %f " % test_rate)
- loss_rate, tx_num, rx_num = self.traffic_generator_loss(portlist, test_rate, delay)
- while loss_rate > permit_loss_rate:
- test_rate = float(1 - loss_rate) * test_rate
- loss_rate, tx_num, rx_num = self.traffic_generator_loss(portlist, test_rate, delay)
-
- self.logger.info("zero loss rate is %s" % test_rate)
- return test_rate, tx_num, rx_num
-
-
- def traffic_generator_loss(self, portList, ratePercent, delay=60):
- """
- Run loss performance test on specified ports.
- """
- if self.check_port_list(portList, 'ixia'):
- return self.ixia_packet_gen.loss(portList, ratePercent, delay)
- elif not self.check_port_list(portList):
- self.logger.warning("exception by mixed port types")
- return None
- return self.packet_gen.loss(portList, ratePercent)
-
- def traffic_generator_latency(self, portList, ratePercent=100, delay=5):
- """
- Run latency performance test on specified ports.
- """
- if self.check_port_list(portList, 'ixia'):
- return self.ixia_packet_gen.latency(portList, ratePercent, delay)
- else:
- return None
-
def parallel_transmit_ptks(self, pkt=None, intf='', send_times=1, interval=0.01):
"""
Callable function for parallel processes
@@ -824,20 +753,6 @@ class Tester(Crb):
return True
- def extend_external_packet_generator(self, clazz, instance):
- """
- Update packet generator function, will implement later.
- """
- # packet generator has forbidden suite class to override parent class methods
- if self.is_pktgen:
- return
- # discard this in future
- if self.it_uses_external_generator():
- self.ixia_packet_gen.__class__ = clazz
- current_attrs = instance.__dict__
- instance.__dict__ = self.ixia_packet_gen.__dict__
- instance.__dict__.update(current_attrs)
-
def tcpdump_sniff_packets(self, intf, count=0, filters=None, lldp_forbid=True):
"""
Wrapper for packet module sniff_packets
@@ -879,9 +794,6 @@ class Tester(Crb):
if 'start_trex' in list(self.pktgen.conf.keys()):
self.restore_trex_interfaces()
self.pktgen = None
- elif self.ixia_packet_gen:
- self.ixia_packet_gen.close()
- self.ixia_packet_gen = None
if self.scapy_sessions_li:
for i in self.scapy_sessions_li:
--
2.21.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [dts] [PATCH V1 2/6] tests: remove etgen
2021-08-31 8:12 [dts] [PATCH V1 0/6] etgen: remove etgen Yufen Mo
2021-08-31 8:12 ` [dts] [PATCH V1 1/6] framework/etgen: " Yufen Mo
@ 2021-08-31 8:12 ` Yufen Mo
2021-08-31 8:12 ` [dts] [PATCH V1 3/6] tests/vxlan: move to pktgen from etgen Yufen Mo
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Yufen Mo @ 2021-08-31 8:12 UTC (permalink / raw)
To: dts, lijuan.tu, yingyax.han, junx.w.zhou; +Cc: Yufen Mo
remove etgen relevant source code.
Signed-off-by: Yufen Mo <yufengx.mo@intel.com>
---
tests/TestSuite_af_xdp_2.py | 2 +-
tests/TestSuite_distributor.py | 2 -
tests/TestSuite_efd.py | 1 -
tests/TestSuite_iavf.py | 1 -
tests/TestSuite_multiprocess.py | 1 -
tests/TestSuite_ntb.py | 1 -
tests/TestSuite_packet_ordering.py | 1 -
tests/TestSuite_performance_thread.py | 1 -
tests/TestSuite_pmd.py | 1 -
tests/TestSuite_rteflow_priority.py | 1 -
tests/TestSuite_userspace_ethtool.py | 127 +++---------------
tests/TestSuite_vhost_virtio_pmd_interrupt.py | 1 -
tests/TestSuite_virtio_event_idx_interrupt.py | 1 -
tests/TestSuite_vm_power_manager.py | 3 +-
tests/TestSuite_vmdq.py | 1 -
tests/TestSuite_vmdq_dcb.py | 1 -
16 files changed, 23 insertions(+), 123 deletions(-)
diff --git a/tests/TestSuite_af_xdp_2.py b/tests/TestSuite_af_xdp_2.py
index 40a3d416..bcc9a751 100644
--- a/tests/TestSuite_af_xdp_2.py
+++ b/tests/TestSuite_af_xdp_2.py
@@ -45,7 +45,7 @@ class TestAfXdp(TestCase):
Run at the start of each test suite.
"""
#self.verify(self.nic in ("fortville_spirit"), "the port can not run this suite")
- self.tester.extend_external_packet_generator(TestAfXdp, self)
+
self.frame_sizes = [64, 128, 256, 512, 1024, 1518]
self.dut_ports = self.dut.get_ports()
self.verify(len(self.dut_ports) >= 2, "Insufficient ports for testing")
diff --git a/tests/TestSuite_distributor.py b/tests/TestSuite_distributor.py
index cd88977d..09a493b3 100644
--- a/tests/TestSuite_distributor.py
+++ b/tests/TestSuite_distributor.py
@@ -45,8 +45,6 @@ class TestDistributor(TestCase):
"""
Run at the start of each test suite.
"""
- self.tester.extend_external_packet_generator(TestDistributor, self)
-
# reduce tx queues for enable many workers
self.dut.send_expect("sed -i -e 's/.*txRings = .*/\\tconst uint16_t rxRings = 1, txRings = 1;/' ./examples/distributor/main.c", "#")
out = self.dut.build_dpdk_apps("./examples/distributor")
diff --git a/tests/TestSuite_efd.py b/tests/TestSuite_efd.py
index 787733ca..7d1e0a86 100644
--- a/tests/TestSuite_efd.py
+++ b/tests/TestSuite_efd.py
@@ -44,7 +44,6 @@ class TestEFD(TestCase):
"""
Run at the start of each test suite.
"""
- self.tester.extend_external_packet_generator(TestEFD, self)
self.build_server_node_efd()
diff --git a/tests/TestSuite_iavf.py b/tests/TestSuite_iavf.py
index 9656b4fc..adaa1304 100644
--- a/tests/TestSuite_iavf.py
+++ b/tests/TestSuite_iavf.py
@@ -57,7 +57,6 @@ class TestIavf(TestCase):
supported_vf_driver = ['pci-stub', 'vfio-pci']
def set_up_all(self):
- self.tester.extend_external_packet_generator(TestIavf, self)
self.dut_ports = self.dut.get_ports(self.nic)
self.verify(len(self.dut_ports) > 1, "Insufficient ports")
self.vm0 = None
diff --git a/tests/TestSuite_multiprocess.py b/tests/TestSuite_multiprocess.py
index 743ca1f3..8752a727 100644
--- a/tests/TestSuite_multiprocess.py
+++ b/tests/TestSuite_multiprocess.py
@@ -58,7 +58,6 @@ class TestMultiprocess(TestCase):
# self.verify('bsdapp' not in self.target, "Multiprocess not support freebsd")
self.verify(len(self.dut.get_all_cores()) >= 4, "Not enough Cores")
- self.tester.extend_external_packet_generator(TestMultiprocess, self)
self.dut_ports = self.dut.get_ports()
self.socket = self.dut.get_numa_id(self.dut_ports[0])
diff --git a/tests/TestSuite_ntb.py b/tests/TestSuite_ntb.py
index e5013132..01e10620 100644
--- a/tests/TestSuite_ntb.py
+++ b/tests/TestSuite_ntb.py
@@ -55,7 +55,6 @@ class TestNtb(TestCase):
self.host_mac = self.ntb_host.get_mac_address(self.host_port)
self.client_mac = self.ntb_client.get_mac_address(self.client_port)
- self.tester.extend_external_packet_generator(TestNtb, self)
self.frame_sizes = [64, 128, 256, 512, 1024, 1518]
self.header_size = HEADER_SIZE['eth'] + HEADER_SIZE['ip'] + HEADER_SIZE['udp']
self.pktgen_helper = PacketGeneratorHelper()
diff --git a/tests/TestSuite_packet_ordering.py b/tests/TestSuite_packet_ordering.py
index 807a3c0d..2280b8b1 100644
--- a/tests/TestSuite_packet_ordering.py
+++ b/tests/TestSuite_packet_ordering.py
@@ -48,7 +48,6 @@ class TestPacketOrdering(TestCase):
Executes the Packet Ordering prerequisites. Creates a simple scapy
packet to be used later on the tests. It also compiles the example app.
"""
- self.tester.extend_external_packet_generator(TestPacketOrdering, self)
self.dut_ports = self.dut.get_ports(self.nic)
global valports
valports = [_ for _ in self.dut_ports if self.tester.get_local_port(_) != -1]
diff --git a/tests/TestSuite_performance_thread.py b/tests/TestSuite_performance_thread.py
index 3ff20150..459d9a11 100644
--- a/tests/TestSuite_performance_thread.py
+++ b/tests/TestSuite_performance_thread.py
@@ -47,7 +47,6 @@ class TestPerformanceThread(TestCase):
"""
Run at the start of each test suite.
"""
- self.tester.extend_external_packet_generator(TestPerformanceThread, self)
self.dut_ports = self.dut.get_ports(self.nic)
global valports
valports = [_ for _ in self.dut_ports if self.tester.get_local_port(_) != -1]
diff --git a/tests/TestSuite_pmd.py b/tests/TestSuite_pmd.py
index 48d35831..afc36d9f 100644
--- a/tests/TestSuite_pmd.py
+++ b/tests/TestSuite_pmd.py
@@ -58,7 +58,6 @@ class TestPmd(TestCase):
PMD prerequisites.
"""
- self.tester.extend_external_packet_generator(TestPmd, self)
self.frame_sizes = [64, 72, 128, 256, 512, 1024, 1280, 1518]
diff --git a/tests/TestSuite_rteflow_priority.py b/tests/TestSuite_rteflow_priority.py
index 353dc8f9..b0bbf245 100644
--- a/tests/TestSuite_rteflow_priority.py
+++ b/tests/TestSuite_rteflow_priority.py
@@ -42,7 +42,6 @@ from time import sleep
from scapy.utils import struct, socket, PcapWriter
import utils
-from etgen import IxiaPacketGenerator
from test_case import TestCase
from settings import HEADER_SIZE
from pmd_output import PmdOutput
diff --git a/tests/TestSuite_userspace_ethtool.py b/tests/TestSuite_userspace_ethtool.py
index fd65d718..4536b7d1 100644
--- a/tests/TestSuite_userspace_ethtool.py
+++ b/tests/TestSuite_userspace_ethtool.py
@@ -41,14 +41,14 @@ import re
from test_case import TestCase
from packet import Packet
import random
-from etgen import IxiaPacketGenerator
from settings import HEADER_SIZE
from settings import SCAPY2IXIA
+from pktgen import PacketGeneratorHelper
from utils import RED
from exception import VerifyFailure
-class TestUserspaceEthtool(TestCase, IxiaPacketGenerator):
+class TestUserspaceEthtool(TestCase):
def set_up_all(self):
"""
@@ -76,9 +76,8 @@ class TestUserspaceEthtool(TestCase, IxiaPacketGenerator):
self.pause_time = 65535
self.frame_size = 64
self.pause_rate = 0.50
-
- # update IxiaPacketGenerator function from local
- self.tester.extend_external_packet_generator(TestUserspaceEthtool, self)
+ # create an instance to set stream field setting
+ self.pktgen_helper = PacketGeneratorHelper()
def set_up(self):
"""
@@ -635,45 +634,6 @@ class TestUserspaceEthtool(TestCase, IxiaPacketGenerator):
self.dut.send_expect("quit", "# ")
- def test_perf_port_rx_pause(self):
- """
- Test ethtool app flow control configure
- """
- self.dut.send_expect(self.cmd, "EthApp>", 60)
- # enable pause rx
- self.dut.send_expect("pause 0 rx", "EthApp")
-
- # calculate number of packets
- pps = self.wirespeed(self.nic, self.frame_size, 1) * 1000000.0
- # get line rate
- linerate = pps * (self.frame_size + 20) * 8
- # calculate default sleep time for one pause frame
- sleep = (1 / linerate) * self.pause_time * 512
- # calculate packets dropped in sleep time
- self.n_pkts = int((sleep / (1 / pps)) * (1 / self.pause_rate))
-
- tgen_input = []
- headers_size = HEADER_SIZE['eth'] + HEADER_SIZE['ip'] + \
- HEADER_SIZE['udp']
- payload_size = self.frame_size - headers_size
- self.tester.scapy_append('wrpcap("pause_rx.pcap", [Ether()/IP()/UDP()/("X"*%d)])' % payload_size)
- self.tester.scapy_execute()
- # rx and tx is the same port
- tester_port = self.tester.get_local_port(self.ports[0])
- tgen_input.append((tester_port, tester_port, "pause_rx.pcap"))
-
- ori_func = self.config_stream
- self.config_stream = self.config_stream_pause_rx
- _, rx_pps = self.tester.traffic_generator_throughput(tgen_input)
- self.config_stream = ori_func
-
- rate = rx_pps / pps
- # rate should same as expected rate
- self.verify(rate > (self.pause_rate - 0.01) and
- rate < (self.pause_rate + 0.01), "Failed to handle Rx pause frame")
-
- self.dut.send_expect("quit", "# ")
-
def test_perf_port_tx_pause(self):
"""
Test ethtool app flow control configure
@@ -691,78 +651,33 @@ class TestUserspaceEthtool(TestCase, IxiaPacketGenerator):
headers_size = HEADER_SIZE['eth'] + HEADER_SIZE['ip'] + \
HEADER_SIZE['udp']
payload_size = self.frame_size - headers_size
- self.tester.scapy_append('wrpcap("pause_tx.pcap", [Ether()/IP()/UDP()/("X"*%d)])' % payload_size)
+ dst_mac = self.dut.get_mac_address(0)
+ self.tester.scapy_append(
+ 'wrpcap("/root/pause_tx.pcap", [Ether(dst="%s")/IP()/UDP()/("X"*%d)])' % (dst_mac, payload_size))
self.tester.scapy_execute()
# rx and tx is the same port
tester_port = self.tester.get_local_port(self.ports[0])
- tgen_input.append((tester_port, tester_port, "pause_tx.pcap"))
-
- self.wirespeed(self.nic, self.frame_size, 1) * 1000000.0
- _, tx_pps = self.tester.traffic_generator_throughput(tgen_input)
-
+ tgen_input.append((tester_port, tester_port, "/root/pause_tx.pcap"))
+
+ # run traffic generator
+ streams = self.pktgen_helper.prepare_stream_from_tginput(tgen_input, 100,
+ None, self.tester.pktgen)
+ traffic_opt = {'throughput_stat_flag': True}
+ loss, rx_throughput = self.tester.pktgen._measure_loss(
+ stream_ids=streams, options=traffic_opt)
+ tx_pps = rx_throughput[1]
+ sent_pkts, recv_pkts = list(loss.values())[0][1:]
+ self.dut.send_expect("quit", "# ")
+ self.dut.send_expect("sed -i -e '/usleep(10);$/d' %s" % main_file, "# ")
+ # rebuild sample app
+ self.build_ethtool()
# verify ixia transmit line rate dropped
pps = self.wirespeed(self.nic, self.frame_size, 1) * 1000000.0
rate = tx_pps / pps
self.verify(rate < 0.1, "Failed to slow down transmit speed")
-
# verify received packets more than sent
- self.stat_get_stat_all_stats(tester_port)
- sent_pkts = self.get_frames_sent()
- recv_pkts = self.get_frames_received()
self.verify((float(recv_pkts) / float(sent_pkts)) > 1.05, "Failed to transmit pause frame")
- self.dut.send_expect("quit", "# ")
- self.dut.send_expect("sed -i -e '/usleep(10);$/d' %s" % main_file, "# ")
- # rebuild sample app
- self.build_ethtool()
-
- def config_stream_pause_rx(self, fpcap, txport, rate_percent, stream_id=1, latency=False):
- """
- Configure IXIA stream with pause frame and normal packet
- """
- # enable flow control on port
- self.add_tcl_cmd("port config -flowControl true")
- self.add_tcl_cmd("port config -flowControlType ieee8023x")
- self.add_tcl_cmd("port set %d %d %d" % (self.chasId, txport['card'], txport['port']))
-
- flows = self.parse_pcap(fpcap)
-
- self.add_tcl_cmd("ixGlobalSetDefault")
- self.add_tcl_cmd("stream config -rateMode usePercentRate")
- self.add_tcl_cmd("stream config -percentPacketRate 100")
- self.add_tcl_cmd("stream config -numBursts 1")
- self.add_tcl_cmd("stream config -numFrames %d" % self.n_pkts)
- self.add_tcl_cmd("stream config -dma advance")
-
- pat = re.compile(r"(\w+)\((.*)\)")
- for header in flows[0].split('/'):
- match = pat.match(header)
- params = eval('dict(%s)' % match.group(2))
- method_name = match.group(1)
- if method_name in SCAPY2IXIA:
- method = getattr(self, method_name.lower())
- method(txport, **params)
-
- # stream id start from 1
- self.add_tcl_cmd("stream set %d %d %d %d" % (self.chasId, txport['card'], txport['port'], 1))
-
- # pause frame stream
- self.add_tcl_cmd("stream config -rateMode usePercentRate")
- self.add_tcl_cmd("stream config -percentPacketRate 100")
- self.add_tcl_cmd("stream config -numBursts 1")
- self.add_tcl_cmd("stream config -numFrames 1")
- self.add_tcl_cmd("stream config -dma gotoFirst")
-
- self.add_tcl_cmd("protocol setDefault")
- self.add_tcl_cmd("protocol config -name pauseControl")
- self.add_tcl_cmd("pauseControl setDefault")
- self.add_tcl_cmd("pauseControl config -da \"01 80 C2 00 00 01\"")
- self.add_tcl_cmd("pauseControl config -pauseTime %d" % self.pause_time)
- self.add_tcl_cmd("pauseControl config -pauseControlType ieee8023x")
- self.add_tcl_cmd("pauseControl set %d %d %d" % (self.chasId, txport['card'], txport['port']))
- self.add_tcl_cmd("stream set %d %d %d %d" %
- (self.chasId, txport['card'], txport['port'], 2))
-
def tear_down(self):
"""
Run after each test case.
diff --git a/tests/TestSuite_vhost_virtio_pmd_interrupt.py b/tests/TestSuite_vhost_virtio_pmd_interrupt.py
index 675a15ee..5dd2f830 100644
--- a/tests/TestSuite_vhost_virtio_pmd_interrupt.py
+++ b/tests/TestSuite_vhost_virtio_pmd_interrupt.py
@@ -49,7 +49,6 @@ class TestVhostVirtioPmdInterrupt(TestCase):
"""
Run at the start of each test suite.
"""
- self.tester.extend_external_packet_generator(TestVhostVirtioPmdInterrupt, self)
self.fix_ip = False
self.nb_cores = 4
self.queues = 4
diff --git a/tests/TestSuite_virtio_event_idx_interrupt.py b/tests/TestSuite_virtio_event_idx_interrupt.py
index 37634f05..09918992 100644
--- a/tests/TestSuite_virtio_event_idx_interrupt.py
+++ b/tests/TestSuite_virtio_event_idx_interrupt.py
@@ -49,7 +49,6 @@ class TestVirtioIdxInterrupt(TestCase):
"""
Run at the start of each test suite.
"""
- self.tester.extend_external_packet_generator(TestVirtioIdxInterrupt, self)
self.queues = 1
self.nb_cores = 1
self.dut_ports = self.dut.get_ports()
diff --git a/tests/TestSuite_vm_power_manager.py b/tests/TestSuite_vm_power_manager.py
index fca122bb..f650ba28 100644
--- a/tests/TestSuite_vm_power_manager.py
+++ b/tests/TestSuite_vm_power_manager.py
@@ -37,12 +37,11 @@ VM power manager test suite.
import re
import utils
from test_case import TestCase
-from etgen import IxiaPacketGenerator
from settings import HEADER_SIZE
from qemu_libvirt import LibvirtKvm
-class TestVmPowerManager(TestCase, IxiaPacketGenerator):
+class TestVmPowerManager(TestCase):
def set_up_all(self):
"""
diff --git a/tests/TestSuite_vmdq.py b/tests/TestSuite_vmdq.py
index 3f2ccde2..6dae54a4 100644
--- a/tests/TestSuite_vmdq.py
+++ b/tests/TestSuite_vmdq.py
@@ -50,7 +50,6 @@ class TestVmdq(TestCase):
"""
Run at the start of each test suite.
"""
- self.tester.extend_external_packet_generator(TestVmdq, self)
self.dut_ports = self.dut.get_ports(self.nic)
self.verify(len(self.dut_ports) >= 2, "Insufficient ports")
diff --git a/tests/TestSuite_vmdq_dcb.py b/tests/TestSuite_vmdq_dcb.py
index 5f0da0fb..2a248f8c 100644
--- a/tests/TestSuite_vmdq_dcb.py
+++ b/tests/TestSuite_vmdq_dcb.py
@@ -51,7 +51,6 @@ class TestVmdqDcb(TestCase):
"""
Run at the start of each test suite.
"""
- self.tester.extend_external_packet_generator(TestVmdqDcb, self)
self.dut_ports = self.dut.get_ports(self.nic)
self.verify(len(self.dut_ports) >= 2, "Insufficient ports")
self.socket = self.dut.get_numa_id(self.dut_ports[0])
--
2.21.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [dts] [PATCH V1 3/6] tests/vxlan: move to pktgen from etgen
2021-08-31 8:12 [dts] [PATCH V1 0/6] etgen: remove etgen Yufen Mo
2021-08-31 8:12 ` [dts] [PATCH V1 1/6] framework/etgen: " Yufen Mo
2021-08-31 8:12 ` [dts] [PATCH V1 2/6] tests: " Yufen Mo
@ 2021-08-31 8:12 ` Yufen Mo
2021-08-31 8:12 ` [dts] [PATCH V1 4/6] tests/eventdev_perf: " Yufen Mo
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Yufen Mo @ 2021-08-31 8:12 UTC (permalink / raw)
To: dts, lijuan.tu, yingyax.han, junx.w.zhou; +Cc: Yufen Mo
#. remove etgen relevant source code.
#. udpate perf test cases to pktgen.
#. dpdk remove legacy filter command, perf test cases need to use rte flow command.
Signed-off-by: Yufen Mo <yufengx.mo@intel.com>
---
tests/TestSuite_vxlan.py | 186 ++++++++++++++++++++++++++-------------
1 file changed, 124 insertions(+), 62 deletions(-)
diff --git a/tests/TestSuite_vxlan.py b/tests/TestSuite_vxlan.py
index fdb6616d..30ad3c31 100644
--- a/tests/TestSuite_vxlan.py
+++ b/tests/TestSuite_vxlan.py
@@ -57,7 +57,7 @@ from scapy.route import *
from test_case import TestCase
from settings import HEADER_SIZE, FOLDERS
-from etgen import IxiaPacketGenerator
+from pktgen import PacketGeneratorHelper
import packet
#
@@ -283,7 +283,7 @@ class VxlanTestConfig(object):
return len(self.pkt) + 4
-class TestVxlan(TestCase, IxiaPacketGenerator):
+class TestVxlan(TestCase):
def set_up_all(self):
"""
@@ -301,9 +301,6 @@ class TestVxlan(TestCase, IxiaPacketGenerator):
# Based on h/w type, choose how many ports to use
ports = self.dut.get_ports()
- # update IxiaPacketGenerator function by local
- self.tester.extend_external_packet_generator(TestVxlan, self)
-
# Verify that enough ports are available
self.verify(len(ports) >= 2, "Insufficient ports for testing")
global valports
@@ -396,6 +393,68 @@ class TestVxlan(TestCase, IxiaPacketGenerator):
'omac-imac-tenid', 'recvqueue': 'Multi'}
]
+ self.pktgen_helper = PacketGeneratorHelper()
+
+ def set_fields(self):
+ fields_config = {
+ 'ip': {
+ 'src': {'action': 'random'},
+ 'dst': {'action': 'random'},
+ },}
+ return fields_config
+
+ def suite_measure_throughput(self, tgen_input, use_vm=False):
+ vm_config = self.set_fields()
+ self.tester.pktgen.clear_streams()
+ streams = self.pktgen_helper.prepare_stream_from_tginput(
+ tgen_input, 100, vm_config if use_vm else None, self.tester.pktgen)
+ result = self.tester.pktgen.measure_throughput(stream_ids=streams)
+
+ return result
+
+ def perf_tunnel_filter_set_rule(self, rule_config):
+ rule_list = {
+ # check inner mac + inner vlan filter can work
+ 'imac-ivlan':
+ f'flow create {rule_config.get("dut_port")} ingress pattern eth / '
+ f'ipv4 / udp / vxlan / eth dst is {rule_config.get("inner_mac_dst")} / '
+ f'vlan tci is {rule_config.get("inner_vlan")} / end actions pf / '
+ f'queue index {rule_config.get("queue")} / end',
+ # check inner mac + inner vlan + tunnel id filter can work
+ 'imac-ivlan-tenid':
+ f'flow create {rule_config.get("dut_port")} ingress pattern eth / '
+ f'ipv4 / udp / vxlan vni is {rule_config.get("vni")} / '
+ f'eth dst is {rule_config.get("inner_mac_dst")} / '
+ f'vlan tci is {rule_config.get("inner_vlan")} / '
+ f'end actions pf / queue index {rule_config.get("queue")} / end',
+ # check inner mac + tunnel id filter can work
+ 'imac-tenid':
+ f'flow create {rule_config.get("dut_port")} ingress pattern eth / '
+ f'ipv4 / udp / vxlan vni is {rule_config.get("vni")} / '
+ f'eth dst is {rule_config.get("inner_mac_dst")} / end actions pf / '
+ f'queue index {rule_config.get("queue")} / end',
+ # check inner mac filter can work
+ 'imac':
+ f'flow create {rule_config.get("dut_port")} ingress pattern eth / '
+ f'ipv4 / udp / vxlan / eth dst is {rule_config.get("inner_mac_dst")} / end actions pf / '
+ f'queue index {rule_config.get("queue")} / end',
+ # check outer mac + inner mac + tunnel id filter can work
+ 'omac-imac-tenid':
+ f'flow create {rule_config.get("dut_port")} ingress pattern '
+ f'eth dst is {rule_config.get("outer_mac_dst")} / '
+ f'ipv4 / udp / vxlan vni is {rule_config.get("vni")} / '
+ f'eth dst is {rule_config.get("inner_mac_dst")} / '
+ f'end actions pf / queue index {rule_config.get("queue")} / end',
+ }
+ rule = rule_list.get(rule_config.get("tun_filter"))
+ if not rule:
+ msg = "not support format"
+ self.logger.error(msg)
+ return
+ out = self.dut.send_expect(rule, "testpmd>", 3)
+ pat = "Flow rule #\d+ created"
+ self.verify(re.findall(pat, out, re.M), "Flow rule create failed")
+
def send_and_detect(self, **kwargs):
"""
send vxlan packet and check whether testpmd detect the correct
@@ -886,11 +945,17 @@ class TestVxlan(TestCase, IxiaPacketGenerator):
self.enable_vxlan(dut_port)
if tun_filter != 'None':
- args = [dut_port, config.outer_mac_dst,
- config.inner_mac_dst, config.inner_ip_dst,
- config.inner_vlan, tun_filter,
- config.vni, 0]
- self.tunnel_filter_add(*args)
+ rule_config = {
+ 'dut_port': dut_port,
+ 'outer_mac_dst': config.outer_mac_dst,
+ 'inner_mac_dst': config.inner_mac_dst,
+ 'inner_ip_dst': config.inner_ip_dst,
+ 'inner_vlan': config.inner_vlan,
+ 'tun_filter': tun_filter,
+ 'vni': config.vni,
+ 'queue': 0
+ }
+ self.perf_tunnel_filter_set_rule(rule_config)
if perf_config['Packet'] == 'Normal':
config.outer_udp_dst = 63
@@ -917,35 +982,22 @@ class TestVxlan(TestCase, IxiaPacketGenerator):
pkt = config.create_pcap()
pkts.append(pkt)
- args = [dut_port, config.outer_mac_dst,
- config.inner_mac_dst, config.inner_ip_dst,
- config.inner_vlan, tun_filter,
- config.vni, (queue + 1)]
- self.tunnel_filter_add(*args)
+ rule_config = {
+ 'dut_port': dut_port,
+ 'outer_mac_dst': config.outer_mac_dst,
+ 'inner_mac_dst': config.inner_mac_dst,
+ 'inner_ip_dst': config.inner_ip_dst,
+ 'inner_vlan': config.inner_vlan,
+ 'tun_filter': tun_filter,
+ 'vni': config.vni,
+ 'queue': (queue + 1),
+ }
+ self.perf_tunnel_filter_set_rule(rule_config)
# save pkt list into pcap file
wrpcap(config.pcap_file, pkts)
self.tester.session.copy_file_to(config.pcap_file)
- def ip_random(self, port, frag, src, proto, tos, dst, chksum, len,
- options, version, flags, ihl, ttl, id):
- self.add_tcl_cmd("protocol config -name ip")
- self.add_tcl_cmd('ip config -sourceIpAddr "%s"' % src)
- self.add_tcl_cmd('ip config -sourceIpAddrMode ipIncrHost')
- self.add_tcl_cmd('ip config -sourceIpAddrRepeatCount %d' % 64)
- self.add_tcl_cmd('ip config -destIpAddr "%s"' % dst)
- self.add_tcl_cmd('ip config -destIpMask "255.255.0.0" ')
- self.add_tcl_cmd('ip config -destIpAddrMode ipRandom')
- self.add_tcl_cmd('ip config -destIpAddrRepeatCount 65536')
- self.add_tcl_cmd("ip config -ttl %d" % ttl)
- self.add_tcl_cmd("ip config -totalLength %d" % len)
- self.add_tcl_cmd("ip config -fragment %d" % frag)
- self.add_tcl_cmd("ip config -ipProtocol %d" % proto)
- self.add_tcl_cmd("ip config -identifier %d" % id)
- self.add_tcl_cmd("stream config -framesize %d" % (len + 18))
- self.add_tcl_cmd("ip set %d %d %d" %
- (self.chasId, port['card'], port['port']))
-
def combine_pcap(self, dest_pcap, src_pcap):
pkts = rdpcap(dest_pcap)
if len(pkts) != 1:
@@ -1002,15 +1054,9 @@ class TestVxlan(TestCase, IxiaPacketGenerator):
else:
wirespeed = self.wirespeed(self.nic, PACKET_LEN, 1)
- if recv_queue == 'Multi' and tun_filter == "None":
- ip_ori = self.ip
- self.ip = self.ip_random
-
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input)
-
- if recv_queue == 'Multi' and tun_filter == "None":
- self.ip = ip_ori
+ use_vm = True if recv_queue == 'Multi' and tun_filter == "None" else False
+ _, pps = self.suite_measure_throughput(tgen_input, use_vm=use_vm)
pps /= 1000000.0
perf_config['Mpps'] = pps
@@ -1020,8 +1066,9 @@ class TestVxlan(TestCase, IxiaPacketGenerator):
self.dut.send_expect("quit", "# ", 10)
# verify every queue work fine
+ check_queue = 0
if recv_queue == 'Multi':
- for queue in range(self.tunnel_multiqueue):
+ for queue in range(check_queue):
self.verify("Queue= %d -> TX Port"
% (queue) in out,
"Queue %d no traffic" % queue)
@@ -1033,6 +1080,7 @@ class TestVxlan(TestCase, IxiaPacketGenerator):
self.result_table_print()
+
def test_perf_vxlan_checksum_performance_2ports(self):
self.result_table_create(self.chksum_header)
vxlan = VxlanTestConfig(self, payload_size=self.vxlan_payload)
@@ -1053,8 +1101,10 @@ class TestVxlan(TestCase, IxiaPacketGenerator):
socket=self.ports_socket)
core_mask = utils.create_mask(core_list)
- tgen_dut = self.tester.get_local_port(self.dut_port)
- tgen_tester = self.tester.get_local_port(self.recv_port)
+ self.dut_ports = self.dut.get_ports_performance(force_different_nic=False)
+ tx_port = self.tester.get_local_port(self.dut_ports[0])
+ rx_port = self.tester.get_local_port(self.dut_ports[1])
+
for cal in self.cal_type:
recv_queue = cal['recvqueue']
print((utils.GREEN("Measure checksum performance of [%s %s %s]"
@@ -1063,9 +1113,10 @@ class TestVxlan(TestCase, IxiaPacketGenerator):
# configure flows
tgen_input = []
if recv_queue == 'Multi':
- self.combine_pcap("vxlan1.pcap", "vxlan1_1.pcap")
- self.tester.session.copy_file_to("vxlan1.pcap")
- tgen_input.append((tgen_dut, tgen_tester, "vxlan1.pcap"))
+ tgen_input.append((tx_port, rx_port, "vxlan1.pcap"))
+ tgen_input.append((tx_port, rx_port, "vxlan1_1.pcap"))
+ else:
+ tgen_input.append((tx_port, rx_port, "vxlan1.pcap"))
# multi queue and signle queue commands
if recv_queue == 'Multi':
@@ -1078,24 +1129,34 @@ class TestVxlan(TestCase, IxiaPacketGenerator):
self.dut.send_expect(pmd_cmd, "testpmd> ", 100)
self.dut.send_expect("set fwd csum", "testpmd>", 10)
- self.dut.send_expect("csum parse-tunnel on %d" %
- self.dut_port, "testpmd>", 10)
- self.dut.send_expect("csum parse-tunnel on %d" %
- self.recv_port, "testpmd>", 10)
self.enable_vxlan(self.dut_port)
self.enable_vxlan(self.recv_port)
# redirect flow to another queue by tunnel filter
- args = [self.dut_port, vxlan.outer_mac_dst,
- vxlan.inner_mac_dst, vxlan.inner_ip_dst,
- 0, 'imac', vxlan.vni, 0]
- self.tunnel_filter_add(*args)
+ rule_config = {
+ 'dut_port': self.dut_port,
+ 'outer_mac_dst': vxlan.outer_mac_dst,
+ 'inner_mac_dst': vxlan.inner_mac_dst,
+ 'inner_ip_dst': vxlan.inner_ip_dst,
+ 'inner_vlan': 0,
+ 'tun_filter': 'imac',
+ 'vni': vxlan.vni,
+ 'queue': 0
+ }
+ self.perf_tunnel_filter_set_rule(rule_config)
if recv_queue == 'Multi':
- args = [self.dut_port, vxlan_queue.outer_mac_dst,
- vxlan_queue.inner_mac_dst, vxlan_queue.inner_ip_dst,
- 0, 'imac', vxlan_queue.vni, 1]
- self.tunnel_filter_add(*args)
+ rule_config = {
+ 'dut_port': self.dut_port,
+ 'outer_mac_dst': vxlan_queue.outer_mac_dst,
+ 'inner_mac_dst': vxlan_queue.inner_mac_dst,
+ 'inner_ip_dst': vxlan_queue.inner_ip_dst,
+ 'inner_vlan': 0,
+ 'tun_filter': 'imac',
+ 'vni': vxlan.vni,
+ 'queue': 1
+ }
+ self.perf_tunnel_filter_set_rule(rule_config)
for pro in cal['csum']:
self.csum_set_type(pro, self.dut_port)
@@ -1106,7 +1167,7 @@ class TestVxlan(TestCase, IxiaPacketGenerator):
wirespeed = self.wirespeed(self.nic, PACKET_LEN, 1)
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input)
+ _, pps = self.suite_measure_throughput(tgen_input)
pps /= 1000000.0
cal['Mpps'] = pps
@@ -1116,8 +1177,9 @@ class TestVxlan(TestCase, IxiaPacketGenerator):
self.dut.send_expect("quit", "# ", 10)
# verify every queue work fine
+ check_queue = 1
if recv_queue == 'Multi':
- for queue in range(self.tunnel_multiqueue):
+ for queue in range(check_queue):
self.verify("Queue= %d -> TX Port"
% (queue) in out,
"Queue %d no traffic" % queue)
--
2.21.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [dts] [PATCH V1 4/6] tests/eventdev_perf: move to pktgen from etgen
2021-08-31 8:12 [dts] [PATCH V1 0/6] etgen: remove etgen Yufen Mo
` (2 preceding siblings ...)
2021-08-31 8:12 ` [dts] [PATCH V1 3/6] tests/vxlan: move to pktgen from etgen Yufen Mo
@ 2021-08-31 8:12 ` Yufen Mo
2021-08-31 8:12 ` [dts] [PATCH V1 5/6] tests/eventdev_pipeline_perf: " Yufen Mo
2021-08-31 8:12 ` [dts] [PATCH V1 6/6] tests/fdir: " Yufen Mo
5 siblings, 0 replies; 7+ messages in thread
From: Yufen Mo @ 2021-08-31 8:12 UTC (permalink / raw)
To: dts, lijuan.tu, yingyax.han, junx.w.zhou; +Cc: Yufen Mo
#. remove etgen relevant source code.
#. udpate perf test cases to pktgen.
#. update compile bin to meson build.
Signed-off-by: Yufen Mo <yufengx.mo@intel.com>
---
tests/TestSuite_eventdev_perf.py | 293 ++++++++++++++++++++-----------
1 file changed, 195 insertions(+), 98 deletions(-)
diff --git a/tests/TestSuite_eventdev_perf.py b/tests/TestSuite_eventdev_perf.py
index fd142e89..a0ab3263 100644
--- a/tests/TestSuite_eventdev_perf.py
+++ b/tests/TestSuite_eventdev_perf.py
@@ -43,14 +43,14 @@ from test_case import TestCase
from time import sleep
from settings import HEADER_SIZE
from pmd_output import PmdOutput
-from etgen import IxiaPacketGenerator
+from pktgen import PacketGeneratorHelper
from settings import FOLDERS
from system_info import SystemInfo
import perf_report
from datetime import datetime
-class TestEventdevPerf(TestCase,IxiaPacketGenerator):
+class TestEventdevPerf(TestCase):
def set_up_all(self):
"""
@@ -58,7 +58,6 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
PMD prerequisites.
"""
- self.tester.extend_external_packet_generator(TestEventdevPerf, self)
self.frame_sizes = [64, 128, 256, 512, 1024, 1518]
@@ -110,6 +109,30 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
self.ports_socket = self.dut.get_numa_id(self.dut_ports[0])
self.pmdout = PmdOutput(self.dut)
+
+ self.build_eventdev_app()
+
+ if self.logger.log_path.startswith(os.sep):
+ self.output_path = self.logger.log_path
+ else:
+ cur_path = os.path.dirname(
+ os.path.dirname(os.path.realpath(__file__)))
+ self.output_path = os.sep.join([cur_path, self.logger.log_path])
+
+ self.pktgen_helper = PacketGeneratorHelper()
+
+ def suite_measure_throughput(self, tgen_input, rate_percent, delay):
+ streams = self.pktgen_helper.prepare_stream_from_tginput(tgen_input, rate_percent,
+ None, self.tester.pktgen)
+ result = self.tester.pktgen.measure_throughput(stream_ids=streams)
+
+ return result
+
+ def build_eventdev_app(self):
+ self.app_command = self.dut.apps_name["eventdev_pipeline"]
+ out = self.dut.build_dpdk_apps("examples/eventdev_pipeline")
+ self.verify("Error" not in out, "compilation error 1")
+ self.verify("No such file" not in out, "compilation error 2")
def set_up(self):
"""
@@ -120,7 +143,7 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
def eventdev_cmd(self, test_type, stlist, nports, worker_cores):
self.Port_pci_ids = []
- command_line1 = "dpdk-test-eventdev -l %s -w %s"
+ command_line1 = self.app_command + " -l %s -w %s"
for i in range(0, nports):
self.Port_pci_ids.append(self.dut.ports_info[i]['pci'])
## Adding core-list and pci-ids
@@ -144,7 +167,7 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -174,12 +197,13 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -221,7 +245,7 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -251,12 +275,13 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -299,7 +324,7 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -329,12 +354,13 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -377,7 +403,7 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -407,12 +433,13 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -455,7 +482,7 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -485,12 +512,13 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -533,7 +561,7 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -563,12 +591,13 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -611,10 +640,10 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[1]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test1.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[1]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test2.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -645,11 +674,15 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (
+ os.sep.join([self.output_path, "event_test1.pcap"]), payload_size))
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:01")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (
+ os.sep.join([self.output_path, "event_test2.pcap"]), payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -692,10 +725,10 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[1]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test1.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[1]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test2.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -725,12 +758,16 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test1.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test2.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:01")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -773,10 +810,10 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[1]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test1.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[1]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test2.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -806,12 +843,16 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test1.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test2.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:01")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -854,10 +895,10 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[1]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test1.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[1]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test2.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -887,12 +928,16 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test1.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test2.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:01")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -935,10 +980,10 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[1]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test1.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[1]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test2.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -968,12 +1013,16 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test1.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test2.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:01")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -1016,10 +1065,10 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[1]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test1.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[1]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test2.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -1049,12 +1098,16 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test1.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test2.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -1098,16 +1151,16 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[1]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test1.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[2]),
self.tester.get_local_port(self.dut_ports[3]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test2.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[1]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test3.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[3]),
self.tester.get_local_port(self.dut_ports[2]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test4.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -1137,12 +1190,22 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test1.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test2.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:01")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test3.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:02")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test4.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:03")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -1184,16 +1247,16 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[1]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test1.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[2]),
self.tester.get_local_port(self.dut_ports[3]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test2.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[1]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test3.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[3]),
self.tester.get_local_port(self.dut_ports[2]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test4.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -1223,12 +1286,22 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test1.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test2.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:01")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test3.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:02")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test4.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:03")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -1271,16 +1344,16 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[1]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test1.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[2]),
self.tester.get_local_port(self.dut_ports[3]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test2.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[1]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test3.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[3]),
self.tester.get_local_port(self.dut_ports[2]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test4.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -1310,12 +1383,22 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test1.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test2.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:01")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test3.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:02")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test4.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:03")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -1358,16 +1441,16 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[1]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test1.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[2]),
self.tester.get_local_port(self.dut_ports[3]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test2.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[1]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test3.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[3]),
self.tester.get_local_port(self.dut_ports[2]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test4.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -1397,12 +1480,22 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test1.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test2.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:01")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test3.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:02")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test4.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:03")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -1445,16 +1538,16 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[1]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test1.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[2]),
self.tester.get_local_port(self.dut_ports[3]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test2.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[1]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test3.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[3]),
self.tester.get_local_port(self.dut_ports[2]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test4.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
core_config = test_cycle['cores']
@@ -1483,12 +1576,22 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test1.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test2.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:01")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test3.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:02")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test4.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:03")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -1531,16 +1634,16 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[1]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test1.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[2]),
self.tester.get_local_port(self.dut_ports[3]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test2.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[1]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test3.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[3]),
self.tester.get_local_port(self.dut_ports[2]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test4.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -1570,12 +1673,22 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test1.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test2.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:01")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test3.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:02")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test4.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:03")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -1603,22 +1716,6 @@ class TestEventdevPerf(TestCase,IxiaPacketGenerator):
self.result_table_print()
- def ip(self, port, frag, src, proto, tos, dst, chksum, len, options, version, flags, ihl, ttl, id):
- self.add_tcl_cmd("protocol config -name ip")
- self.add_tcl_cmd('ip config -sourceIpAddr "%s"' % src)
- self.add_tcl_cmd("ip config -sourceIpAddrMode ipIncrHost")
- self.add_tcl_cmd("ip config -sourceIpAddrRepeatCount 100")
- self.add_tcl_cmd('ip config -destIpAddr "%s"' % dst)
- self.add_tcl_cmd("ip config -destIpAddrMode ipIdle")
- self.add_tcl_cmd("ip config -ttl %d" % ttl)
- self.add_tcl_cmd("ip config -totalLength %d" % len)
- self.add_tcl_cmd("ip config -fragment %d" % frag)
- self.add_tcl_cmd("ip config -ipProtocol ipV4ProtocolReserved255")
- self.add_tcl_cmd("ip config -identifier %d" % id)
- self.add_tcl_cmd("stream config -framesize %d" % (len + 18))
- self.add_tcl_cmd("ip set %d %d %d" % (self.chasId, port['card'], port['port']))
-
-
def tear_down(self):
"""
Run after each test case.
--
2.21.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [dts] [PATCH V1 5/6] tests/eventdev_pipeline_perf: move to pktgen from etgen
2021-08-31 8:12 [dts] [PATCH V1 0/6] etgen: remove etgen Yufen Mo
` (3 preceding siblings ...)
2021-08-31 8:12 ` [dts] [PATCH V1 4/6] tests/eventdev_perf: " Yufen Mo
@ 2021-08-31 8:12 ` Yufen Mo
2021-08-31 8:12 ` [dts] [PATCH V1 6/6] tests/fdir: " Yufen Mo
5 siblings, 0 replies; 7+ messages in thread
From: Yufen Mo @ 2021-08-31 8:12 UTC (permalink / raw)
To: dts, lijuan.tu, yingyax.han, junx.w.zhou; +Cc: Yufen Mo
#. remove etgen relevant source code.
#. udpate perf test cases to pktgen.
#. update compile bin to meson build.
Signed-off-by: Yufen Mo <yufengx.mo@intel.com>
---
tests/TestSuite_eventdev_pipeline_perf.py | 170 ++++++++++++++--------
1 file changed, 111 insertions(+), 59 deletions(-)
diff --git a/tests/TestSuite_eventdev_pipeline_perf.py b/tests/TestSuite_eventdev_pipeline_perf.py
index 361b47ee..ee71f77a 100644
--- a/tests/TestSuite_eventdev_pipeline_perf.py
+++ b/tests/TestSuite_eventdev_pipeline_perf.py
@@ -43,14 +43,14 @@ from test_case import TestCase
from time import sleep
from settings import HEADER_SIZE
from pmd_output import PmdOutput
-from etgen import IxiaPacketGenerator
+from pktgen import PacketGeneratorHelper
from settings import FOLDERS
from system_info import SystemInfo
import perf_report
from datetime import datetime
-class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
+class TestEventdevPipelinePerf(TestCase):
def set_up_all(self):
"""
@@ -58,7 +58,6 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
PMD prerequisites.
"""
- self.tester.extend_external_packet_generator(TestEventdevPipelinePerf, self)
self.frame_sizes = [64, 128, 256, 512, 1024, 1518]
@@ -110,6 +109,30 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
self.ports_socket = self.dut.get_numa_id(self.dut_ports[0])
self.pmdout = PmdOutput(self.dut)
+
+ self.build_eventdev_app()
+
+ if self.logger.log_path.startswith(os.sep):
+ self.output_path = self.logger.log_path
+ else:
+ cur_path = os.path.dirname(
+ os.path.dirname(os.path.realpath(__file__)))
+ self.output_path = os.sep.join([cur_path, self.logger.log_path])
+
+ self.pktgen_helper = PacketGeneratorHelper()
+
+ def suite_measure_throughput(self, tgen_input, rate_percent, delay):
+ streams = self.pktgen_helper.prepare_stream_from_tginput(tgen_input, rate_percent,
+ None, self.tester.pktgen)
+ result = self.tester.pktgen.measure_throughput(stream_ids=streams)
+
+ return result
+
+ def build_eventdev_app(self):
+ self.app_command = self.dut.apps_name["eventdev_pipeline"]
+ out = self.dut.build_dpdk_apps("examples/eventdev_pipeline")
+ self.verify("Error" not in out, "compilation error 1")
+ self.verify("No such file" not in out, "compilation error 2")
def set_up(self):
"""
@@ -120,7 +143,7 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
def eventdev_cmd(self, stlist, nports, wmask):
self.Port_pci_ids = []
- command_line1 = "dpdk-eventdev_pipeline -c %s -w %s"
+ command_line1 = self.app_command + " -c %s -w %s"
for i in range(0, nports):
self.Port_pci_ids.append(self.dut.ports_info[i]['pci'])
## Adding core-list and pci-ids
@@ -143,7 +166,7 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -170,12 +193,13 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -217,7 +241,7 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -244,12 +268,13 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -291,7 +316,7 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -318,12 +343,13 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -365,10 +391,10 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[1]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test1.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[1]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test2.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -395,12 +421,16 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test1.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test2.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:01")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -442,10 +472,10 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[1]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test1.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[1]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test2.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -472,12 +502,16 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test1.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test2.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:01")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -519,10 +553,10 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[1]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test1.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[1]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test2.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -549,12 +583,16 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test1.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test2.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:01")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -596,16 +634,16 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[1]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test1.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[2]),
self.tester.get_local_port(self.dut_ports[3]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test2.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[1]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test3.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[3]),
self.tester.get_local_port(self.dut_ports[2]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test4.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -632,12 +670,22 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test1.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test2.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:01")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test3.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:02")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test4.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:03")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -679,16 +727,16 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[1]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test1.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[2]),
self.tester.get_local_port(self.dut_ports[3]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test2.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[1]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test3.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[3]),
self.tester.get_local_port(self.dut_ports[2]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test4.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -715,12 +763,22 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test1.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test2.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:01")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test3.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:02")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test4.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:03")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -762,16 +820,16 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
tgen_input = []
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[1]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test1.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[2]),
self.tester.get_local_port(self.dut_ports[3]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test2.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[1]),
self.tester.get_local_port(self.dut_ports[0]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test3.pcap"])))
tgen_input.append((self.tester.get_local_port(self.dut_ports[3]),
self.tester.get_local_port(self.dut_ports[2]),
- "event_test.pcap"))
+ os.sep.join([self.output_path, "event_test4.pcap"])))
# run testpmd for each core config
for test_cycle in self.test_cycles:
@@ -798,12 +856,22 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
# create pcap file
self.logger.info("Running with frame size %d " % frame_size)
payload_size = frame_size - self.headers_size
+ pcap = os.sep.join([self.output_path, "event_test1.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test2.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:01")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test3.pcap"])
self.tester.scapy_append(
- 'wrpcap("event_test.pcap", [Ether(src="52:00:00:00:00:00")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (payload_size))
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:02")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
+ pcap = os.sep.join([self.output_path, "event_test4.pcap"])
+ self.tester.scapy_append(
+ 'wrpcap("%s", [Ether(src="52:00:00:00:00:03")/IP(src="1.2.3.4",dst="1.1.1.1")/TCP()/("X"*%d)])' % (pcap, payload_size))
self.tester.scapy_execute()
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input, rate_percent=100, delay=60)
+ _, pps = self.suite_measure_throughput(tgen_input, 100, 60)
pps /= 1000000.0
pct = pps * 100 / wirespeed
test_cycle['Mpps'][frame_size] = float('%.3f' % pps)
@@ -831,22 +899,6 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
self.result_table_print()
- def ip(self, port, frag, src, proto, tos, dst, chksum, len, options, version, flags, ihl, ttl, id):
- self.add_tcl_cmd("protocol config -name ip")
- self.add_tcl_cmd('ip config -sourceIpAddr "%s"' % src)
- self.add_tcl_cmd("ip config -sourceIpAddrMode ipIncrHost")
- self.add_tcl_cmd("ip config -sourceIpAddrRepeatCount 100")
- self.add_tcl_cmd('ip config -destIpAddr "%s"' % dst)
- self.add_tcl_cmd("ip config -destIpAddrMode ipIdle")
- self.add_tcl_cmd("ip config -ttl %d" % ttl)
- self.add_tcl_cmd("ip config -totalLength %d" % len)
- self.add_tcl_cmd("ip config -fragment %d" % frag)
- self.add_tcl_cmd("ip config -ipProtocol ipV4ProtocolReserved255")
- self.add_tcl_cmd("ip config -identifier %d" % id)
- self.add_tcl_cmd("stream config -framesize %d" % (len + 18))
- self.add_tcl_cmd("ip set %d %d %d" % (self.chasId, port['card'], port['port']))
-
-
def tear_down(self):
"""
Run after each test case.
--
2.21.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [dts] [PATCH V1 6/6] tests/fdir: move to pktgen from etgen
2021-08-31 8:12 [dts] [PATCH V1 0/6] etgen: remove etgen Yufen Mo
` (4 preceding siblings ...)
2021-08-31 8:12 ` [dts] [PATCH V1 5/6] tests/eventdev_pipeline_perf: " Yufen Mo
@ 2021-08-31 8:12 ` Yufen Mo
5 siblings, 0 replies; 7+ messages in thread
From: Yufen Mo @ 2021-08-31 8:12 UTC (permalink / raw)
To: dts, lijuan.tu, yingyax.han, junx.w.zhou; +Cc: Yufen Mo
#. remove etgen relevant source code.
#. udpate perf test cases to pktgen.
Signed-off-by: Yufen Mo <yufengx.mo@intel.com>
---
tests/TestSuite_fdir.py | 45 ++++++++++++++---------------------------
1 file changed, 15 insertions(+), 30 deletions(-)
diff --git a/tests/TestSuite_fdir.py b/tests/TestSuite_fdir.py
index 007db26d..13e9412e 100644
--- a/tests/TestSuite_fdir.py
+++ b/tests/TestSuite_fdir.py
@@ -42,16 +42,16 @@ from time import sleep
from scapy.utils import struct, socket, PcapWriter
import utils
-from etgen import IxiaPacketGenerator
from test_case import TestCase
from settings import HEADER_SIZE
from pmd_output import PmdOutput
+from pktgen import PacketGeneratorHelper
import sys
import imp
-class TestFdir(TestCase, IxiaPacketGenerator):
+class TestFdir(TestCase):
#
#
@@ -140,7 +140,6 @@ class TestFdir(TestCase, IxiaPacketGenerator):
PMD prerequisites.
"""
- self.tester.extend_external_packet_generator(TestFdir, self)
#self.verify('bsdapp' not in self.path, "FDIR not support freebsd")
# this feature support Fortville, Niantic
#self.verify(self.nic in ["kawela_2", "niantic", "bartonhills", "82545EM",
@@ -208,6 +207,8 @@ class TestFdir(TestCase, IxiaPacketGenerator):
for test_cycle in self.test_cycles:
self.table_header.append("%s Mpps" % test_cycle['cores'])
self.table_header.append("% linerate")
+ # create an instance to set stream field setting
+ self.pktgen_helper = PacketGeneratorHelper()
def set_up(self):
"""
@@ -1180,7 +1181,10 @@ class TestFdir(TestCase, IxiaPacketGenerator):
dst_ip_temp = self.dst_ip
print("*src_ip_temp = " + src_ip_temp + "dst_ip_temp = " + dst_ip_temp)
flows.append("Ether(src='52:00:00:00:00:00', dst='00:1B:21:8E:B2:30')/IP(src='%s',dst='%s')/UDP(sport=%d,dport=%d)/Raw(load='%s' + 'X'*(%d - 42 - %d))" % (src_ip_temp, dst_ip_temp, 1021, 1021, self.payload, frame_size, self.flexlength))
- self.scapyCmds.append('wrpcap("/root/test.pcap", [%s])' % string.join(flows, ','))
+ self.scapyCmds.append('wrpcap("/root/test1.pcap", [%s])' % ','.join(flows))
+ flows = []
+ flows.append("Ether(src='52:00:00:00:00:01', dst='00:1B:21:8E:B2:31')/IP(src='%s',dst='%s')/UDP(sport=%d,dport=%d)/Raw(load='%s' + 'X'*(%d - 42 - %d))" % (src_ip_temp, dst_ip_temp, 1021, 1021, self.payload, frame_size, self.flexlength))
+ self.scapyCmds.append('wrpcap("/root/test2.pcap", [%s])' % ','.join(flows))
def perf_fdir_performance_2ports(self, test_type, num_rules, num_flows):
"""
@@ -1191,10 +1195,10 @@ class TestFdir(TestCase, IxiaPacketGenerator):
tgen_input.append((self.tester.get_local_port(self.dut_ports[0]),
self.tester.get_local_port(self.dut_ports[1]),
- "/root/test.pcap"))
+ "/root/test1.pcap"))
tgen_input.append((self.tester.get_local_port(self.dut_ports[1]),
self.tester.get_local_port(self.dut_ports[0]),
- "/root/test.pcap"))
+ "/root/test2.pcap"))
print("self.ports_socket=%s" % (self.ports_socket))
# run testpmd for each core config
@@ -1229,7 +1233,6 @@ class TestFdir(TestCase, IxiaPacketGenerator):
out = self.dut.send_expect(command_line, "testpmd> ", 100)
print(out)
- self.dut.send_expect("set verbose 1", "testpmd>")
self.fdir_get_flexbytes()
if test_type in ["fdir_noflex", "fdir_2flex", "fdir_16flex"]:
@@ -1264,12 +1267,14 @@ class TestFdir(TestCase, IxiaPacketGenerator):
"""
# run traffic generator
- _, pps = self.tester.traffic_generator_throughput(tgen_input)
+ streams = self.pktgen_helper.prepare_stream_from_tginput(tgen_input, 100,
+ None, self.tester.pktgen)
+ _, pps = self.tester.pktgen.measure_throughput(stream_ids=streams)
"""
_, pps, _ = self.throughputRate(tgen_input)
"""
-
- out = self.dut.send_expect("show port stats all", "testpmd> ")
+
+ out = self.dut.send_expect("show port stats all", "testpmd> ", timeout=60)
print(out)
pps /= 1000000.0
@@ -1297,26 +1302,6 @@ class TestFdir(TestCase, IxiaPacketGenerator):
self.result_table_print()
- def ip(self, port, frag, src, proto, tos, dst, chksum, len, version, flags, ihl, ttl, id, options=None):
- """
- Configure IP protocol.
- """
- self.add_tcl_cmd("protocol config -name ip")
- self.add_tcl_cmd('ip config -sourceIpAddr "%s"' % src)
- self.add_tcl_cmd("ip config -sourceIpAddrMode ipIncrHost")
- self.add_tcl_cmd("ip config -sourceIpAddrRepeatCount 64")
- self.add_tcl_cmd('ip config -destIpAddr "%s"' % dst)
- self.add_tcl_cmd("ip config -destIpAddrMode ipIncrHost")
- self.add_tcl_cmd("ip config -destIpAddrRepeatCount 64")
- self.add_tcl_cmd("ip config -ttl %d" % ttl)
- self.add_tcl_cmd("ip config -totalLength %d" % len)
- self.add_tcl_cmd("ip config -fragment %d" % frag)
- # self.add_tcl_cmd("ip config -ipProtocol %d" % proto)
- self.add_tcl_cmd("ip config -ipProtocol ipV4ProtocolReserved255")
- self.add_tcl_cmd("ip config -identifier %d" % id)
- self.add_tcl_cmd("stream config -framesize %d" % (len + 18))
- self.add_tcl_cmd("ip set %d %d %d" % (self.chasId, port['card'], port['port']))
-
def test_perf_fdir_performance_2ports(self):
"""
fdir Performance Benchmarking with 2 ports.
--
2.21.0
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-08-31 8:11 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-31 8:12 [dts] [PATCH V1 0/6] etgen: remove etgen Yufen Mo
2021-08-31 8:12 ` [dts] [PATCH V1 1/6] framework/etgen: " Yufen Mo
2021-08-31 8:12 ` [dts] [PATCH V1 2/6] tests: " Yufen Mo
2021-08-31 8:12 ` [dts] [PATCH V1 3/6] tests/vxlan: move to pktgen from etgen Yufen Mo
2021-08-31 8:12 ` [dts] [PATCH V1 4/6] tests/eventdev_perf: " Yufen Mo
2021-08-31 8:12 ` [dts] [PATCH V1 5/6] tests/eventdev_pipeline_perf: " Yufen Mo
2021-08-31 8:12 ` [dts] [PATCH V1 6/6] tests/fdir: " Yufen Mo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).