From 10f3b07a5c883e20ef345c8b1c8e24063a50281f Mon Sep 17 00:00:00 2001 From: pmikus Date: Wed, 20 Apr 2016 13:24:11 +0200 Subject: Performance IPv6 library and short/long test cases - JIRA: CSIT-2 - Create IPv6 test cases for long/short/singlethread/multithread performance testing - Create robot KWs for IPv6 performance testing - Add T-Rex IPv6 profile Change-Id: I306d5c894d9b9287bf91929764aeb1c7083d802c Signed-off-by: pmikus Signed-off-by: Peter Mikus --- resources/libraries/python/IPv6Setup.py | 21 +++++++++++++++ resources/libraries/python/TrafficGenerator.py | 13 ++++++++++ resources/libraries/robot/performance.robot | 36 +++++++++++++++++++++++--- 3 files changed, 66 insertions(+), 4 deletions(-) (limited to 'resources/libraries') diff --git a/resources/libraries/python/IPv6Setup.py b/resources/libraries/python/IPv6Setup.py index c016423f32..6b5d8a5f66 100644 --- a/resources/libraries/python/IPv6Setup.py +++ b/resources/libraries/python/IPv6Setup.py @@ -210,6 +210,27 @@ class IPv6Setup(object): sw_if_index=sw_if_index, state='admin-down') + + @staticmethod + def vpp_set_ipv6_neighbor(node, interface, ipaddr, macaddr): + """Set IPv6 neighbor. + + :param node: VPP node. + :param interface: Interface name. + :param ip_address: IPv6 address. + :param mac_address: mac address. + :type node: dict + :type interface: str + :type ip_address: str + :type mac_address: str + """ + sw_if_index = Topology.get_interface_sw_index(node, interface) + VatExecutor.cmd_from_template(node, + 'add_ip_neighbor.vat', + sw_if_index=sw_if_index, + ip_address=ipaddr, + mac_address=macaddr) + @staticmethod def vpp_ra_suppress_link_layer(node, interface): """Suppress ICMPv6 router advertisement message for link scope address. diff --git a/resources/libraries/python/TrafficGenerator.py b/resources/libraries/python/TrafficGenerator.py index adc22b3de6..b125a0b53d 100644 --- a/resources/libraries/python/TrafficGenerator.py +++ b/resources/libraries/python/TrafficGenerator.py @@ -236,6 +236,19 @@ class TrafficGenerator(object): "--p{4}_dst_start_ip 10.10.10.2'".\ format(duration, rate, framesize, _p0, _p1),\ timeout=int(duration)+60) + elif traffic_type in ["3-node-IPv6"]: + (ret, stdout, stderr) = ssh.exec_command( + "sh -c '/tmp/openvpp-testing/resources/tools/t-rex/" + "t-rex-stateless.py " + "-d {0} -r {1} -s {2} -6 " + "--p{3}_src_start_ip 2001:1::2 " + "--p{3}_src_end_ip 2001:1::FE " + "--p{3}_dst_start_ip 2001:2::2 " + "--p{4}_src_start_ip 2001:2::2 " + "--p{4}_src_end_ip 2001:2::FE " + "--p{4}_dst_start_ip 2001:1::2'".\ + format(duration, rate, framesize, _p0, _p1),\ + timeout=int(duration)+60) else: raise NotImplementedError('Unsupported traffic type') diff --git a/resources/libraries/robot/performance.robot b/resources/libraries/robot/performance.robot index a2c8acde27..d43073d30d 100644 --- a/resources/libraries/robot/performance.robot +++ b/resources/libraries/robot/performance.robot @@ -12,14 +12,18 @@ # limitations under the License. *** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.TrafficGenerator +| Library | resources.libraries.python.TrafficGenerator.TGDropRateSearchImpl | Resource | resources/libraries/robot/default.robot | Resource | resources/libraries/robot/interfaces.robot +| Resource | resources/libraries/robot/counters.robot +| Resource | resources/libraries/robot/bridge_domain.robot | Resource | resources/libraries/robot/l2_xconnect.robot | Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/counters.robot -| Library | resources.libraries.python.TrafficGenerator -| Library | resources.libraries.python.TrafficGenerator.TGDropRateSearchImpl +| Resource | resources/libraries/robot/ipv6.robot | Documentation | Performance suite keywords *** Keywords *** @@ -95,6 +99,29 @@ | | dut2_v4.set_route | 10.10.10.0 | 24 | 1.1.1.1 | ${dut2_if1} | | All Vpp Interfaces Ready Wait | ${nodes} +| IPv6 forwarding initialized in a 3-node circular topology +| | [Documentation] | Custom setup of IPv6 topology on all DUT nodes +| | ${prefix}= | Set Variable | 64 +| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} +| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} +| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} +| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut1_if1} +| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if1} | 2001:1::1 | ${prefix} +| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if2} | 2001:3::1 | ${prefix} +| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if1} | 2001:3::2 | ${prefix} +| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if2} | 2001:2::1 | ${prefix} +| | Vpp nodes ra suppress link layer | ${nodes} +| | Vpp set IPv6 neighbor | ${dut1} | ${dut1_if1} | 2001:1::2 +| | ... | ${tg1_if1_mac} +| | Vpp set IPv6 neighbor | ${dut2} | ${dut2_if2} | 2001:2::2 +| | ... | ${tg1_if2_mac} +| | Vpp set IPv6 neighbor | ${dut1} | ${dut1_if2} | 2001:3::2 +| | ... | ${dut2_if1_mac} +| | Vpp set IPv6 neighbor | ${dut2} | ${dut2_if1} | 2001:3::1 +| | ... | ${dut1_if2_mac} +| | Vpp Route Add | ${dut1} | 2001:2::0 | ${prefix} | 2001:3::2 | ${dut1_if2} +| | Vpp Route Add | ${dut2} | 2001:1::0 | ${prefix} | 2001:3::1 | ${dut2_if1} + | L2 xconnect initialized in a 3-node circular topology | | [Documentation] | Custom setup of L2 xconnect topology | | L2 setup xconnect on DUT | ${dut1} | ${dut1_if1} | ${dut1_if2} @@ -150,6 +177,7 @@ | | ... | ${topology_type} | ${min_rate} | ${max_rate} | ${threshold} | | Set Duration | 60 | | Set Search Rate Boundaries | ${max_rate} | ${min_rate} +| | Set Search Frame Size | ${framesize} | | Set Search Rate Type pps | | Set Binary Convergence Threshold | ${threshold} | | Binary Search | ${binary_min} | ${binary_max} | ${topology_type} -- cgit 1.2.3-korg