@@ -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]
@@ -111,6 +110,30 @@ class TestEventdevPipelinePerf(TestCase,IxiaPacketGenerator):
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):
"""
Run before each test case.
@@ -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("%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)
@@ -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("%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("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: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("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))
+ 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)
@@ -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.