From 5eddf0d2dad050e9b03f6f41e1dfdcff0e3a21f6 Mon Sep 17 00:00:00 2001 From: pmikus Date: Mon, 25 Apr 2016 15:58:04 +0200 Subject: [PATCH] Update T-rex version to v2.00 - JIRA: CSIT-14 - Update T-rex version to v2.00 with latest API - Compatibility fixes of affected libraries and robot files - T-rex performance tuning Change-Id: I3a90553032d6d82e6e03df7e0b52e205d3f6ba4e Signed-off-by: pmikus --- resources/libraries/python/TrafficGenerator.py | 22 ++- resources/tools/t-rex/t-rex-installer.sh | 2 +- resources/tools/t-rex/t-rex-stateless.py | 214 +++++++++++++-------- tests/suites/performance/short_bridge_domain.robot | 40 ++-- tests/suites/performance/short_ipv4.robot | 42 ++-- .../short_xconnect_Intel-X520-DA2.robot | 38 ++-- 6 files changed, 203 insertions(+), 155 deletions(-) diff --git a/resources/libraries/python/TrafficGenerator.py b/resources/libraries/python/TrafficGenerator.py index 39f8287481..adc22b3de6 100644 --- a/resources/libraries/python/TrafficGenerator.py +++ b/resources/libraries/python/TrafficGenerator.py @@ -101,7 +101,8 @@ class TrafficGenerator(object): :type test_type: str :return: nothing """ - trex_path = "/opt/trex-core-1.91" + + trex_path = "/opt/trex-core-2.00" topo = Topology() @@ -168,7 +169,7 @@ class TrafficGenerator(object): (ret, _, _) = ssh.exec_command( "sh -c 'cd {0}/scripts/ && " - "sudo nohup ./t-rex-64 -i -c 4 --iom 0 > /dev/null 2>&1 &'" + "sudo nohup ./t-rex-64 -i -c 7 --iom 0 > /dev/null 2>&1 &'" "> /dev/null"\ .format(trex_path)) if int(ret) != 0: @@ -242,15 +243,18 @@ class TrafficGenerator(object): logger.trace(stdout) logger.trace(stderr) - # last line from console output - line = stdout.splitlines()[-1] + if int(ret) != 0: + raise RuntimeError('T-rex stateless runtime error') + else: + # last line from console output + line = stdout.splitlines()[-1] - self._result = line - logger.info('TrafficGen result: {0}'.format(self._result)) + self._result = line + logger.info('TrafficGen result: {0}'.format(self._result)) - self._received = self._result.split(', ')[1].split('=')[1] - self._sent = self._result.split(', ')[2].split('=')[1] - self._loss = self._result.split(', ')[3].split('=')[1] + self._received = self._result.split(', ')[1].split('=')[1] + self._sent = self._result.split(', ')[2].split('=')[1] + self._loss = self._result.split(', ')[3].split('=')[1] def send_traffic_on(self, node, duration, rate, framesize, traffic_type): diff --git a/resources/tools/t-rex/t-rex-installer.sh b/resources/tools/t-rex/t-rex-installer.sh index 781b73c3c2..590867abe8 100755 --- a/resources/tools/t-rex/t-rex-installer.sh +++ b/resources/tools/t-rex/t-rex-installer.sh @@ -1,6 +1,6 @@ #!/bin/sh -TREX_VERSION="1.91" +TREX_VERSION="2.00" TREX_DOWNLOAD_REPO="https://github.com/cisco-system-traffic-generator/trex-core/archive/" TREX_DOWNLOAD_PACKAGE="v${TREX_VERSION}.zip" diff --git a/resources/tools/t-rex/t-rex-stateless.py b/resources/tools/t-rex/t-rex-stateless.py index 46c67cc829..d32fd96dd7 100755 --- a/resources/tools/t-rex/t-rex-stateless.py +++ b/resources/tools/t-rex/t-rex-stateless.py @@ -16,7 +16,7 @@ """This script uses T-REX stateless API to drive t-rex instance. Requirements: -- T-REX: https://github.com/cisco-system-traffic-generator/trex-core +- T-REX: https://github.com/cisco-system-traffic-generator/trex-core - compiled and running T-REX process (eg. ./t-rex-64 -i -c 4) - trex_stl_lib.api library - Script must be executed on a node with T-REX instance @@ -26,7 +26,7 @@ Requirements: - port_limit : 2 # numbers of ports to use version : 2 interfaces : ["84:00.0","84:00.1"] # PCI address of interfaces - port_info : # set eth mac addr + port_info : # set eth mac addr - dest_mac : [0x90,0xe2,0xba,0x1f,0x97,0xd5] # port 0 src_mac : [0x90,0xe2,0xba,0x1f,0x97,0xd4] - dest_mac : [0x90,0xe2,0xba,0x1f,0x97,0xd4] # port 1 @@ -41,105 +41,141 @@ Functionality: """ - +import json +import string import sys, getopt -sys.path.insert(0, "/opt/trex-core-1.91/scripts/automation/trex_control_plane/stl/") +sys.path.insert(0, "/opt/trex-core-2.00/scripts/automation/"+\ + "trex_control_plane/stl/") from trex_stl_lib.api import * -import dpkt -import json -import string def generate_payload(length): + """Generate random payload. + + :param length: Length of payload. + :type length: int + :return: Payload filled with random chars. + :rtype string + """ + word = '' alphabet_size = len(string.letters) for i in range(length): word += string.letters[(i % alphabet_size)] + return word def create_packets(traffic_options, frame_size=64): + """Create two IP packets to be used in stream. + + :param traffic_options: Parameters for packets. + :param frame_size: Size of L2 frame. + :type traffic_options: list + :type frame_size: int + :return: Packet instances. + :rtype STLPktBuilder + """ if frame_size < 64: - print "Packet min. size is 64B" - sys.exit(2) + print_error("Packet min. size is 64B") + sys.exit(1) fsize_no_fcs = frame_size - 4 # no FCS - #p1_src_mac = traffic_options['p1_src_mac'] - #p1_dst_mac = traffic_options['p1_dst_mac'] p1_src_start_ip = traffic_options['p1_src_start_ip'] p1_src_end_ip = traffic_options['p1_src_end_ip'] p1_dst_start_ip = traffic_options['p1_dst_start_ip'] - #p1_dst_end_ip = traffic_options['p1_dst_end_ip'] - #p2_src_mac = traffic_options['p2_src_mac'] - #p2_dst_mac = traffic_options['p2_dst_mac'] p2_src_start_ip = traffic_options['p2_src_start_ip'] p2_src_end_ip = traffic_options['p2_src_end_ip'] p2_dst_start_ip = traffic_options['p2_dst_start_ip'] - #p2_dst_end_ip = traffic_options['p2_dst_end_ip'] base_pkt_a = Ether()/IP(src=p1_src_start_ip, dst=p1_dst_start_ip, proto=61) base_pkt_b = Ether()/IP(src=p2_src_start_ip, dst=p2_dst_start_ip, proto=61) - vm1 = CTRexScRaw([STLVmTupleGen(ip_min=p1_src_start_ip, ip_max=p1_src_end_ip, - name="tuple"), # define tuple gen - - STLVmWrFlowVar(fv_name="tuple.ip", pkt_offset="IP.src"), # write ip to packet IP.src - STLVmFixIpv4(offset="IP"), # fix checksum - ] - , split_by_field="tuple") # split to cores base on the tuple generator - - vm2 = CTRexScRaw([STLVmTupleGen(ip_min=p2_src_start_ip, ip_max=p2_src_end_ip, - name="tuple"), # define tuple gen - - STLVmWrFlowVar(fv_name="tuple.ip", pkt_offset="IP.src"), # write ip to packet IP.src - STLVmFixIpv4(offset="IP"), # fix checksum - ] - , split_by_field="tuple") # split to cores base on the tuple generator - - pkt_a = STLPktBuilder(pkt=base_pkt_a/generate_payload(fsize_no_fcs-len(base_pkt_a)), vm=vm1) - pkt_b = STLPktBuilder(pkt=base_pkt_b/generate_payload(fsize_no_fcs-len(base_pkt_b)), vm=vm2) + # The following code applies raw instructions to packet (IP src increment). + # It splits the generated traffic by "ip_src" variable to cores and fix + # IPv4 header checksum. + vm1 = STLScVmRaw([STLVmFlowVar(name="src", + min_value=p1_src_start_ip, + max_value=p1_src_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"), + STLVmFixIpv4(offset="IP"), + ], split_by_field="src") + + # The following code applies raw instructions to packet (IP src increment). + # It splits the generated traffic by "ip_src" variable to cores and fix + # IPv4 header checksum. + vm2 = STLScVmRaw([STLVmFlowVar(name="src", + min_value=p2_src_start_ip, + max_value=p2_src_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"), + STLVmFixIpv4(offset="IP"), + ], split_by_field="src") + + pkt_a = STLPktBuilder(pkt=base_pkt_a/generate_payload( + max(0, fsize_no_fcs-len(base_pkt_a))), vm=vm1) + pkt_b = STLPktBuilder(pkt=base_pkt_b/generate_payload( + max(0, fsize_no_fcs-len(base_pkt_b))), vm=vm2) return(pkt_a, pkt_b) -def simple_burst(pkt_a, pkt_b, duration=10, rate="1mpps", - warmup=True, warmup_time=5): +def simple_burst(pkt_a, pkt_b, duration=10, rate="1mpps", warmup_time=5): + """Run the traffic with specific parameters. + + :param pkt_a: Base packet for stream 1. + :param pkt_b: Base packet for stream 2. + :param duration: Duration of traffic run in seconds. + :param rate: Rate of traffic run [percentage, pps, bps]. + :param warmup_time: Warm up duration. + :type pkt_a: STLPktBuilder + :type pkt_b: STLPktBuilder + :type duration: int + :type rate: string + :type warmup_time: int + :return: nothing + """ # create client - c = STLClient() - passed = True + client = STLClient() + + total_rcvd = 0 + total_sent = 0 + lost_a = 0 + lost_b = 0 try: - # turn this on for some information - #c.set_verbose("high") + # turn this off if too many logs + #client.set_verbose("high") # create two streams - s1 = STLStream(packet=pkt_a, - mode=STLTXCont(pps=100)) + stream1 = STLStream(packet=pkt_a, + mode=STLTXCont(pps=100)) # second stream with a phase of 10ns (inter stream gap) - s2 = STLStream(packet=pkt_b, - isg=10.0, - mode=STLTXCont(pps=100)) + stream2 = STLStream(packet=pkt_b, + isg=10.0, + mode=STLTXCont(pps=100)) # connect to server - c.connect() + client.connect() # prepare our ports (my machine has 0 <--> 1 with static route) - c.reset(ports=[0, 1]) + client.reset(ports=[0, 1]) # add both streams to ports - c.add_streams(s1, ports=[0]) - c.add_streams(s2, ports=[1]) + client.add_streams(stream1, ports=[0]) + client.add_streams(stream2, ports=[1]) #warmup phase - if warmup == True: - c.clear_stats() - c.start(ports=[0, 1], mult=rate, duration=warmup_time) - c.wait_on_traffic(ports=[0, 1]) - stats = c.get_stats() + if warmup_time is not None: + client.clear_stats() + client.start(ports=[0, 1], mult=rate, duration=warmup_time) + client.wait_on_traffic(ports=[0, 1], timeout=(duration+30)) + stats = client.get_stats() print stats print "#####warmup statistics#####" print json.dumps(stats, indent=4, @@ -152,16 +188,16 @@ def simple_burst(pkt_a, pkt_b, duration=10, rate="1mpps", # clear the stats before injecting - c.clear_stats() + client.clear_stats() # choose rate and start traffic - c.start(ports=[0, 1], mult=rate, duration=duration) + client.start(ports=[0, 1], mult=rate, duration=duration) # block until done - c.wait_on_traffic(ports=[0, 1], timeout=(duration+30)) + client.wait_on_traffic(ports=[0, 1], timeout=(duration+30)) # read the stats after the test - stats = c.get_stats() + stats = client.get_stats() print "#####statistics#####" print json.dumps(stats, indent=4, @@ -175,22 +211,19 @@ def simple_burst(pkt_a, pkt_b, duration=10, rate="1mpps", print "\npackets lost from 0 --> 1: {0} pkts".format(lost_a) print "packets lost from 1 --> 0: {0} pkts".format(lost_b) - print "rate={0}, totalReceived={1}, totalSent={2}, frameLoss={3}"\ - .format(rate, total_rcvd, total_sent, lost_a+lost_b) - - if (lost_a == 0) and (lost_b == 0): - passed = True - else: - passed = False - except STLError as e: - passed = False - print e + except STLError as ex_error: + print_error(str(ex_error)) + sys.exit(1) finally: - c.disconnect() + client.disconnect() + print "rate={0}, totalReceived={1}, totalSent={2}, frameLoss={3}"\ + .format(rate, total_rcvd, total_sent, lost_a+lost_b) + def print_help(): + """Print help on stdout.""" print "args: [-h] -d -s "+\ " [-r] "+\ @@ -207,8 +240,19 @@ def print_help(): "--p2_dst_start_ip "+\ "--p2_dst_end_ip " +def print_error(msg): + """Print error message on stderr. + + :param msg: Error message to print. + :type msg: string + :return: nothing + """ + + sys.stderr.write(msg+'\n') + def main(argv): + """Main function.""" _duration = 10 _frame_size = 64 @@ -216,23 +260,23 @@ def main(argv): _traffic_options = {} try: - opts, args = getopt.getopt(argv, "hd:s:r:o:", - ["help", - "p1_src_mac=", - "p1_dst_mac=", - "p1_src_start_ip=", - "p1_src_end_ip=", - "p1_dst_start_ip=", - "p1_dst_end_ip=", - "p2_src_mac=", - "p2_dst_mac=", - "p2_src_start_ip=", - "p2_src_end_ip=", - "p2_dst_start_ip=", - "p2_dst_end_ip="]) + opts, _ = getopt.getopt(argv, "hd:s:r:o:", + ["help", + "p1_src_mac=", + "p1_dst_mac=", + "p1_src_start_ip=", + "p1_src_end_ip=", + "p1_dst_start_ip=", + "p1_dst_end_ip=", + "p2_src_mac=", + "p2_dst_mac=", + "p2_src_start_ip=", + "p2_src_end_ip=", + "p2_dst_start_ip=", + "p2_dst_end_ip="]) except getopt.GetoptError: print_help() - sys.exit(2) + sys.exit(1) for opt, arg in opts: if opt in ('-h', "--help"): print_help() @@ -248,9 +292,9 @@ def main(argv): print _traffic_options if len(_traffic_options) != 6: - print "Supported only: src_start_ip, src_end_ip, dst_start_ip" + print_error("Supported only: src_start_ip, src_end_ip, dst_start_ip") print_help() - sys.exit(2) + sys.exit(1) pkt_a, pkt_b = create_packets(_traffic_options, frame_size=_frame_size) diff --git a/tests/suites/performance/short_bridge_domain.robot b/tests/suites/performance/short_bridge_domain.robot index 4612add26a..f14d8be5ac 100644 --- a/tests/suites/performance/short_bridge_domain.robot +++ b/tests/suites/performance/short_bridge_domain.robot @@ -24,7 +24,7 @@ | 1core VPP passes 64B frames through bridge domain at 2x 3.2Mpps in 3-node topology | | [Documentation] | | ... | VPP with 1 core should pass 64B frames through bridge domain -| | ... | at 2x3.2Mpps in 3-node topology +| | ... | at 2x 3.2Mpps in 3-node topology | | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD | | ${framesize}= | Set Variable | 64 | | ${duration}= | Set Variable | 10 @@ -34,27 +34,27 @@ | | Then Traffic should pass with no loss | ${duration} | ${rate} | | ... | ${framesize} | 3-node-bridge -| 1core VPP passes 1518B frames through bridge domain at 2x 10Gbps in 3-node topology +| 1core VPP passes 1518B frames through bridge domain at 2x 812,743pps in 3-node topology | | [Documentation] | | ... | VPP with 1 core should pass 1518B frames through bridge domain -| | ... | at 2x10Gbps in 3-node topology +| | ... | at 2x 812,743pps (2x 10Gbps) in 3-node topology | | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD | | ${framesize}= | Set Variable | 1518 | | ${duration}= | Set Variable | 10 -| | ${rate}= | Set Variable | 10gbps +| | ${rate}= | Set Variable | 812743pps | | Given Setup '1' worker threads and rss '1' without HTT on all DUTs | | AND L2 bridge domain initialized in a 3-node circular topology | | Then Traffic should pass with no loss | ${duration} | ${rate} | | ... | ${framesize} | 3-node-bridge -| 1core VPP passes 9000B frames through bridge domain at 2x 10Gbps in 3-node topology +| 1core VPP passes 9000B frames through bridge domain at 2x 138,580pps in 3-node topology | | [Documentation] | | ... | VPP with 1 core should pass 9000B frames through bridge domain -| | ... | at 2x10Gbps in 3-node topology +| | ... | at 2x 138,580pps (2x 10Gbps) in 3-node topology | | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD | | ${framesize}= | Set Variable | 9000 | | ${duration}= | Set Variable | 10 -| | ${rate}= | Set Variable | 10gbps +| | ${rate}= | Set Variable | 138580pps | | Given Setup '1' worker threads and rss '1' without HTT on all DUTs | | AND L2 bridge domain initialized in a 3-node circular topology | | Then Traffic should pass with no loss | ${duration} | ${rate} @@ -63,7 +63,7 @@ | 2core VPP with rss 1 passes 64B frames through bridge domain at 2x 6.9Mpps in 3-node topology | | [Documentation] | | ... | VPP with 2 cores should pass 64B frames through bridge domain -| | ... | at 2x6.9Mpps in 3-node topology +| | ... | at 2x 6.9Mpps in 3-node topology | | [Tags] | 2_THREAD_NOHTT_RSS_1 | MULTI_THREAD | | ${framesize}= | Set Variable | 64 | | ${duration}= | Set Variable | 10 @@ -73,27 +73,27 @@ | | Then Traffic should pass with no loss | ${duration} | ${rate} | | ... | ${framesize} | 3-node-bridge -| 2core VPP with rss 1 passes 1518B frames through bridge domain at 2x 10Gbps in 3-node topology +| 2core VPP with rss 1 passes 1518B frames through bridge domain at 2x 812,743pps in 3-node topology | | [Documentation] | | ... | VPP with 2 cores should pass 1518B frames through bridge domain -| | ... | at 2x10Gbps in 3-node topology +| | ... | at 2x 812,743pps (2x 10Gbps) in 3-node topology | | [Tags] | 2_THREAD_NOHTT_RSS_1 | MULTI_THREAD | | ${framesize}= | Set Variable | 1518 | | ${duration}= | Set Variable | 10 -| | ${rate}= | Set Variable | 10gbps +| | ${rate}= | Set Variable | 812743pps | | Given Setup '2' worker threads and rss '1' without HTT on all DUTs | | AND L2 bridge domain initialized in a 3-node circular topology | | Then Traffic should pass with no loss | ${duration} | ${rate} | | ... | ${framesize} | 3-node-bridge -| 2core VPP with rss 1 passes 9000B frames through bridge domain at 2x 10Gbps in 3-node topology +| 2core VPP with rss 1 passes 9000B frames through bridge domain at 2x 138,580pps in 3-node topology | | [Documentation] | | ... | VPP with 2 cores should pass 9000B frames through bridge domain -| | ... | at 2x10Gbps in 3-node topology +| | ... | at 2x 138,580pps (2x 10Gbps) in 3-node topology | | [Tags] | 2_THREAD_NOHTT_RSS_1 | MULTI_THREAD | | ${framesize}= | Set Variable | 9000 | | ${duration}= | Set Variable | 10 -| | ${rate}= | Set Variable | 10gbps +| | ${rate}= | Set Variable | 138580pps | | Given Setup '2' worker threads and rss '1' without HTT on all DUTs | | AND L2 bridge domain initialized in a 3-node circular topology | | Then Traffic should pass with no loss | ${duration} | ${rate} @@ -112,27 +112,27 @@ | | Then Traffic should pass with no loss | ${duration} | ${rate} | | ... | ${framesize} | 3-node-bridge -| 4core VPP with rss 2 passes 1518B frames through bridge domain at 2x 10Gbps in 3-node topology +| 4core VPP with rss 2 passes 1518B frames through bridge domain at 2x 812,743pps in 3-node topology | | [Documentation] | | ... | VPP with 4 cores and rss 2 should pass 1518B frames through bridge -| | ... | domain at 2x10Gbps in 3-node topology +| | ... | domain at 2x 812,743pps (2x 10Gbps) in 3-node topology | | [Tags] | 4_THREAD_NOHTT_RSS_2 | MULTI_THREAD | | ${framesize}= | Set Variable | 1518 | | ${duration}= | Set Variable | 10 -| | ${rate}= | Set Variable | 10gbps +| | ${rate}= | Set Variable | 812743pps | | Given Setup '4' worker threads and rss '2' without HTT on all DUTs | | AND L2 bridge domain initialized in a 3-node circular topology | | Then Traffic should pass with no loss | ${duration} | ${rate} | | ... | ${framesize} | 3-node-bridge -| 4core VPP with rss 2 passes 9000B frames through bridge domain at 2x 10Gbps in 3-node topology +| 4core VPP with rss 2 passes 9000B frames through bridge domain at 2x 138,580pps in 3-node topology | | [Documentation] | | ... | VPP with 4 cores and rss 2should pass 9000B frames through bridge -| | ... | domain at 2x10Gbps in 3-node topology +| | ... | domain at 2x 138,580pps (2x 10Gbps) in 3-node topology | | [Tags] | 4_THREAD_NOHTT_RSS_2 | MULTI_THREAD | | ${framesize}= | Set Variable | 9000 | | ${duration}= | Set Variable | 10 -| | ${rate}= | Set Variable | 10gbps +| | ${rate}= | Set Variable | 138580pps | | Given Setup '4' worker threads and rss '2' without HTT on all DUTs | | AND L2 bridge domain initialized in a 3-node circular topology | | Then Traffic should pass with no loss | ${duration} | ${rate} diff --git a/tests/suites/performance/short_ipv4.robot b/tests/suites/performance/short_ipv4.robot index 5e9581705f..51ab839549 100644 --- a/tests/suites/performance/short_ipv4.robot +++ b/tests/suites/performance/short_ipv4.robot @@ -28,7 +28,7 @@ | 1core VPP passes 64B frames through IPv4 forwarding at 2x 3.5Mpps in 3-node topology | | [Documentation] | | ... | VPP with 1 core should pass 64B frames through IPv4 forwarding -| | ... | at 2x3.5Mpps in 3-node topology +| | ... | at 2x 3.5Mpps in 3-node topology | | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD | | ${framesize}= | Set Variable | 64 | | ${duration}= | Set Variable | 10 @@ -38,27 +38,27 @@ | | Then Traffic should pass with no loss | ${duration} | ${rate} | | ... | ${framesize} | 3-node-IPv4 -| 1core VPP passes 1518B frames through IPv4 forwarding at 2x 10Gbps in 3-node topology +| 1core VPP passes 1518B frames through IPv4 forwarding at 2x 812,743pps in 3-node topology | | [Documentation] | | ... | VPP with 1 core should pass 1518B frames through IPv4 forwarding -| | ... | at 2x10Gbps in 3-node topology +| | ... | at 2x 812,743pps (2x 10Gbps) in 3-node topology | | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD | | ${framesize}= | Set Variable | 1518 | | ${duration}= | Set Variable | 10 -| | ${rate}= | Set Variable | 10gbps +| | ${rate}= | Set Variable | 812743pps | | Given Setup '1' worker threads and rss '1' without HTT on all DUTs | | AND IPv4 forwarding initialized in a 3-node circular topology | | Then Traffic should pass with no loss | ${duration} | ${rate} | | ... | ${framesize} | 3-node-IPv4 -| 1core VPP passes 9000B frames through IPv4 forwarding at 2x 10Gbps in 3-node topology +| 1core VPP passes 9000B frames through IPv4 forwarding at 2x 138,580pps in 3-node topology | | [Documentation] | | ... | VPP with 1 core should pass 9000B frames through IPv4 forwarding -| | ... | at 2x10Gbps in 3-node topology +| | ... | at 2x 138,580pps (2x 10Gbps) in 3-node topology | | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD | | ${framesize}= | Set Variable | 9000 | | ${duration}= | Set Variable | 10 -| | ${rate}= | Set Variable | 10gbps +| | ${rate}= | Set Variable | 138580pps | | Given Setup '1' worker threads and rss '1' without HTT on all DUTs | | AND IPv4 forwarding initialized in a 3-node circular topology | | Then Traffic should pass with no loss | ${duration} | ${rate} @@ -67,7 +67,7 @@ | 2core VPP with rss 1 passes 64B frames through IPv4 forwarding at 2x 7.5Mpps in 3-node topology | | [Documentation] | | ... | VPP with 2 cores should pass 64B frames through IPv4 forwarding -| | ... | at 2x7.5Mpps in 3-node topology +| | ... | at 2x 7.5Mpps (2x 10Gbps) in 3-node topology | | [Tags] | 2_THREAD_NOHTT_RSS_1 | MULTI_THREAD | | ${framesize}= | Set Variable | 64 | | ${duration}= | Set Variable | 10 @@ -77,27 +77,27 @@ | | Then Traffic should pass with no loss | ${duration} | ${rate} | | ... | ${framesize} | 3-node-IPv4 -| 2core VPP with rss 1 passes 1518B frames through IPv4 forwarding at 2x 10Gbps in 3-node topology +| 2core VPP with rss 1 passes 1518B frames through IPv4 forwarding at 2x 812,743pps in 3-node topology | | [Documentation] | | ... | VPP with 2 cores should pass 1518B frames through IPv4 forwarding -| | ... | at 2x10Gbps in 3-node topology +| | ... | at 2x 812,743pps (2x 10Gbps) in 3-node topology | | [Tags] | 2_THREAD_NOHTT_RSS_1 | MULTI_THREAD | | ${framesize}= | Set Variable | 1518 | | ${duration}= | Set Variable | 10 -| | ${rate}= | Set Variable | 10gbps +| | ${rate}= | Set Variable | 812743pps | | Given Setup '2' worker threads and rss '1' without HTT on all DUTs | | AND IPv4 forwarding initialized in a 3-node circular topology | | Then Traffic should pass with no loss | ${duration} | ${rate} | | ... | ${framesize} | 3-node-IPv4 -| 2core VPP with rss 1 passes 9000B frames through IPv4 forwarding at 2x 10Gbps in 3-node topology +| 2core VPP with rss 1 passes 9000B frames through IPv4 forwarding at 2x 138,580pps in 3-node topology | | [Documentation] | | ... | VPP with 2 cores should pass 9000B frames through IPv4 forwarding -| | ... | at 2x10Gbps in 3-node topology +| | ... | at 2x 138,580pps (2x 10Gbps) in 3-node topology | | [Tags] | 2_THREAD_NOHTT_RSS_1 | MULTI_THREAD | | ${framesize}= | Set Variable | 9000 | | ${duration}= | Set Variable | 10 -| | ${rate}= | Set Variable | 10gbps +| | ${rate}= | Set Variable | 138580pps | | Given Setup '2' worker threads and rss '1' without HTT on all DUTs | | AND IPv4 forwarding initialized in a 3-node circular topology | | Then Traffic should pass with no loss | ${duration} | ${rate} @@ -106,7 +106,7 @@ | 4core VPP with rss 2 passes 64B frames through IPv4 forwarding at 2x 7.8Mpps in 3-node topology | | [Documentation] | | ... | VPP with 4 cores and rss 2 should pass 64B frames through IPv4 -| | ... | forwarding at 2x7.8Mpps in 3-node topology +| | ... | forwarding at 2x 7.8Mpps in 3-node topology | | [Tags] | 4_THREAD_NOHTT_RSS_2 | MULTI_THREAD | | ${framesize}= | Set Variable | 64 | | ${duration}= | Set Variable | 10 @@ -116,27 +116,27 @@ | | Then Traffic should pass with no loss | ${duration} | ${rate} | | ... | ${framesize} | 3-node-IPv4 -| 4core VPP with rss 2 passes 1518B frames through IPv4 forwarding at 2x 10Gbps in 3-node topology +| 4core VPP with rss 2 passes 1518B frames through IPv4 forwarding at 2x 812,743pps in 3-node topology | | [Documentation] | | ... | VPP with 4 cores and rss 2 should pass 1518B frames through IPv4 -| | ... | forwarding at 2x10Gbps in 3-node topology +| | ... | forwarding at 2x 812,743pps (2x 10Gbps) in 3-node topology | | [Tags] | 4_THREAD_NOHTT_RSS_2 | MULTI_THREAD | | ${framesize}= | Set Variable | 1518 | | ${duration}= | Set Variable | 10 -| | ${rate}= | Set Variable | 10gbps +| | ${rate}= | Set Variable | 812743pps | | Given Setup '4' worker threads and rss '2' without HTT on all DUTs | | AND IPv4 forwarding initialized in a 3-node circular topology | | Then Traffic should pass with no loss | ${duration} | ${rate} | | ... | ${framesize} | 3-node-IPv4 -| 4core VPP with rss 2 passes 9000B frames through IPv4 forwarding at 2x 10Gbps in 3-node topology +| 4core VPP with rss 2 passes 9000B frames through IPv4 forwarding at 2x 138,580pps in 3-node topology | | [Documentation] | | ... | VPP with 4 cores and rss 2 should pass 9000B frames through IPv4 -| | ... | forwarding at 2x10Gbps in 3-node topology +| | ... | forwarding at 2x 138,580pps (2x 10Gbps) in 3-node topology | | [Tags] | 4_THREAD_NOHTT_RSS_2 | MULTI_THREAD | | ${framesize}= | Set Variable | 9000 | | ${duration}= | Set Variable | 10 -| | ${rate}= | Set Variable | 10gbps +| | ${rate}= | Set Variable | 138580pps | | Given Setup '4' worker threads and rss '2' without HTT on all DUTs | | AND IPv4 forwarding initialized in a 3-node circular topology | | Then Traffic should pass with no loss | ${duration} | ${rate} diff --git a/tests/suites/performance/short_xconnect_Intel-X520-DA2.robot b/tests/suites/performance/short_xconnect_Intel-X520-DA2.robot index 99e5dbd470..11ac9eddc8 100644 --- a/tests/suites/performance/short_xconnect_Intel-X520-DA2.robot +++ b/tests/suites/performance/short_xconnect_Intel-X520-DA2.robot @@ -37,27 +37,27 @@ | | Then Traffic should pass with no loss | ${duration} | ${rate} | | ... | ${framesize} | 3-node-xconnect -| 1core VPP passes 1518B frames through L2 cross connect at 2x 10Gbps in 3-node topology +| 1core VPP passes 1518B frames through L2 cross connect at 2x 812,743pps in 3-node topology | | [Documentation] | | ... | VPP with 1 core should pass 1518B frames through L2 cross connect -| | ... | at 2x10Gbps in 3-node topology +| | ... | at 2x 812,743pps (2x 10Gbps) in 3-node topology | | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD | | ${framesize}= | Set Variable | 1518 | | ${duration}= | Set Variable | 10 -| | ${rate}= | Set Variable | 10gbps +| | ${rate}= | Set Variable | 812743pps | | Given Setup '1' worker threads and rss '1' without HTT on all DUTs | | AND L2 xconnect initialized in a 3-node circular topology | | Then Traffic should pass with no loss | ${duration} | ${rate} | | ... | ${framesize} | 3-node-xconnect -| 1core VPP passes 9000B frames through L2 cross connect at 2x 10Gbps in 3-node topology +| 1core VPP passes 9000B frames through L2 cross connect at 2x 138,580pps in 3-node topology | | [Documentation] | | ... | VPP with 1 core should pass 9000B frames through L2 cross connect -| | ... | at 2x10Gbps in 3-node topology +| | ... | at 2x 138,580pps (2x 10Gbps) in 3-node topology | | [Tags] | 1_THREAD_NOHTT_RSS_1 | SINGLE_THREAD | | ${framesize}= | Set Variable | 9000 | | ${duration}= | Set Variable | 10 -| | ${rate}= | Set Variable | 10gbps +| | ${rate}= | Set Variable | 138580pps | | Given Setup '1' worker threads and rss '1' without HTT on all DUTs | | AND L2 xconnect initialized in a 3-node circular topology | | Then Traffic should pass with no loss | ${duration} | ${rate} @@ -66,7 +66,7 @@ | 2core VPP with rss 1 passes 64B frames through L2 cross connect at 2x 8.3Mpps in 3-node topology | | [Documentation] | | ... | VPP with 2 cores should pass 64B frames through L2 cross connect -| | ... | at 2x8.3Mpps in 3-node topology +| | ... | at 2x 8.3Mpps in 3-node topology | | [Tags] | 2_THREAD_NOHTT_RSS_1 | MULTI_THREAD | | ${framesize}= | Set Variable | 64 | | ${duration}= | Set Variable | 10 @@ -76,27 +76,27 @@ | | Then Traffic should pass with no loss | ${duration} | ${rate} | | ... | ${framesize} | 3-node-xconnect -| 2core VPP with rss 1 passes 1518B frames through L2 cross connect at 2x 10Gbps in 3-node topology +| 2core VPP with rss 1 passes 1518B frames through L2 cross connect at 2x 812,743pps in 3-node topology | | [Documentation] | | ... | VPP with 2 cores should pass 1518B frames through L2 cross connect -| | ... | at 2x10Gbps in 3-node topology +| | ... | at 2x 812,743pps (2x 10Gbps) in 3-node topology | | [Tags] | 2_THREAD_NOHTT_RSS_1 | MULTI_THREAD | | ${framesize}= | Set Variable | 1518 | | ${duration}= | Set Variable | 10 -| | ${rate}= | Set Variable | 10gbps +| | ${rate}= | Set Variable | 812743pps | | Given Setup '2' worker threads and rss '1' without HTT on all DUTs | | AND L2 xconnect initialized in a 3-node circular topology | | Then Traffic should pass with no loss | ${duration} | ${rate} | | ... | ${framesize} | 3-node-xconnect -| 2core VPP with rss 1 passes 9000B frames through L2 cross connect at 2x 10Gbps in 3-node topology +| 2core VPP with rss 1 passes 9000B frames through L2 cross connect at 2x 138,580pps in 3-node topology | | [Documentation] | | ... | VPP with 2 cores should pass 9000B frames through L2 cross connect -| | ... | at 2x10Gbps in 3-node topology +| | ... | at 2x 138,580pps (2x 10Gbps) in 3-node topology | | [Tags] | 2_THREAD_NOHTT_RSS_1 | MULTI_THREAD | | ${framesize}= | Set Variable | 9000 | | ${duration}= | Set Variable | 10 -| | ${rate}= | Set Variable | 10gbps +| | ${rate}= | Set Variable | 138580pps | | Given Setup '2' worker threads and rss '1' without HTT on all DUTs | | AND L2 xconnect initialized in a 3-node circular topology | | Then Traffic should pass with no loss | ${duration} | ${rate} @@ -115,27 +115,27 @@ | | Then Traffic should pass with no loss | ${duration} | ${rate} | | ... | ${framesize} | 3-node-xconnect -| 4core VPP with rss 2 passes 1518B frames through L2 cross connect at 2x 10Gbps in 3-node topology +| 4core VPP with rss 2 passes 1518B frames through L2 cross connect at 2x 812,743pps in 3-node topology | | [Documentation] | | ... | VPP with 4 cores and rss 2 should pass 1518B frames through L2 cross -| | ... | connect at 2x10Gbps in 3-node topology +| | ... | connect at 2x 812,743pps (2x 10Gbps) in 3-node topology | | [Tags] | 4_THREAD_NOHTT_RSS_2 | MULTI_THREAD | | ${framesize}= | Set Variable | 1518 | | ${duration}= | Set Variable | 10 -| | ${rate}= | Set Variable | 10gbps +| | ${rate}= | Set Variable | 812743pps | | Given Setup '4' worker threads and rss '2' without HTT on all DUTs | | AND L2 xconnect initialized in a 3-node circular topology | | Then Traffic should pass with no loss | ${duration} | ${rate} | | ... | ${framesize} | 3-node-xconnect -| 4core VPP with rss 2 passes 9000B frames through L2 cross connect at 2x 10Gbps in 3-node topology +| 4core VPP with rss 2 passes 9000B frames through L2 cross connect at 2x 138,580pps in 3-node topology | | [Documentation] | | ... | VPP with 4 cores and rss 2 should pass 9000B frames through L2 cross -| | ... | connect at 2x10Gbps in 3-node topology +| | ... | connect at 2x 138,580pps (2x 10Gbps) in 3-node topology | | [Tags] | 4_THREAD_NOHTT_RSS_2 | MULTI_THREAD | | ${framesize}= | Set Variable | 9000 | | ${duration}= | Set Variable | 10 -| | ${rate}= | Set Variable | 10gbps +| | ${rate}= | Set Variable | 138580pps | | Given Setup '4' worker threads and rss '2' without HTT on all DUTs | | AND L2 xconnect initialized in a 3-node circular topology | | Then Traffic should pass with no loss | ${duration} | ${rate} -- 2.16.6