Clean: Various libraries 50/21250/1
authorPeter Mikus <pmikus@cisco.com>
Fri, 9 Aug 2019 12:46:42 +0000 (12:46 +0000)
committerPeter Mikus <pmikus@cisco.com>
Tue, 13 Aug 2019 05:48:24 +0000 (05:48 +0000)
- Remove translate TC as they have no perf opposite
- Remove unused keywords
- Merge similar keywords / rename
- Move keywords from perf library to categories

Signed-off-by: Peter Mikus <pmikus@cisco.com>
Change-Id: I6433006136e2497ad8fb17193aa20c578d836999
(cherry picked from commit 9c75b7bf5af74aa13cfa3aeeaf726cd965850fce)

68 files changed:
resources/libraries/robot/crypto/ipsec.robot
resources/libraries/robot/dpdk/default.robot
resources/libraries/robot/features/acl.robot [new file with mode: 0644]
resources/libraries/robot/features/gbp.robot
resources/libraries/robot/ip/ip6.robot
resources/libraries/robot/ip/nat.robot
resources/libraries/robot/l2/l2_bridge_domain.robot
resources/libraries/robot/l2/tagging.robot
resources/libraries/robot/overlay/gre.robot [deleted file]
resources/libraries/robot/overlay/srv6.robot
resources/libraries/robot/overlay/vxlan.robot
resources/libraries/robot/performance/performance_configuration.robot
resources/libraries/robot/performance/performance_utils.robot
resources/libraries/robot/shared/counters.robot
resources/libraries/robot/shared/default.robot
resources/libraries/robot/shared/traffic.robot
tests/nsh_sfc/func/classifier/eth2p-ethip4-sfc-classifier-func.robot
tests/nsh_sfc/func/proxy/eth2p-ethip4-nsh-proxy-inbound-func.robot
tests/nsh_sfc/func/proxy/eth2p-ethip4-nsh-proxy-outbound-func.robot
tests/nsh_sfc/func/sff/eth2p-ethip4-sfc-sff-func.robot
tests/vpp/func/l2bd/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot [deleted file]
tests/vpp/func/l2bd/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot [deleted file]
tests/vpp/func/l2xc/eth2p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot [deleted file]
tests/vpp/func/l2xc/eth2p-dot1ad-l2xcbase-func.robot
tests/vpp/func/l2xc/eth2p-dot1ad-l2xcbase-vlantrans22-func.robot [deleted file]
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sf-100flows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sf-100kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sf-10kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sl-100flows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sl-100kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl10sl-10kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sf-100flows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sf-100kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sf-10kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sl-100flows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sl-100kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl1sl-10kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sf-100flows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sf-100kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sl-100flows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sl-100kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sf-100flows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sf-100kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sf-10kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sl-100flows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sl-100kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl10sl-10kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sf-100flows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sf-100kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sf-10kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sl-100flows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sl-100kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl1sl-10kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sf-100flows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sf-100kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sf-10kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sl-100flows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sl-100kflows-ndrpdr.robot
tests/vpp/perf/ip4/10ge2p1x710-ethip4udp-ip4base-oacl50sl-10kflows-ndrpdr.robot
tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl1sf-10kflows-ndrpdr.robot
tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl1sl-10kflows-ndrpdr.robot
tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl50sf-10kflows-ndrpdr.robot
tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-ip4base-iacl50sl-10kflows-ndrpdr.robot
tests/vpp/perf/l2/10ge2p1x710-dot1ad-l2xcbase-ndrpdr.robot
tests/vpp/perf/l2/10ge2p1x710-dot1q-l2xcbase-ndrpdr.robot
tests/vpp/perf/l2/2n1l-10ge2p1x710-dot1q-l2xcbase-ndrpdr.robot

index d5966a6..f7d065e 100644 (file)
 | Library | resources.libraries.python.IPsecUtil
 | Library | resources.libraries.python.IPUtil
 | Library | resources.libraries.python.IPv6Util
-| Library | resources.libraries.python.NodePath
-| Library | resources.libraries.python.TrafficScriptExecutor
 | ...
-| Resource | resources/libraries/robot/shared/default.robot
-| ...
-| Documentation | IPsec keywords
+| Documentation | IPsec keywords.
 
 *** Keywords ***
 | Generate keys for IPSec
 | | ... | sa_id=${l_sa_id} | laddr_range=${l_ip}
 | | ... | raddr_range=${r_ip} | inbound=${FALSE}
 
-| Send IPsec Packet and verify ESP encapsulation in received packet
-| | [Documentation] | Send IPsec packet from TG to DUT. Receive IPsec packet\
-| | ... | from DUT on TG and verify ESP encapsulation.
-| | ...
-| | ... | *Arguments:*
-| | ... | - node - TG node. Type: dictionary
-| | ... | - interface - TG Interface. Type: string
-| | ... | - dst_mac - Destination MAC. Type: string
-| | ... | - crypto_alg - Encrytion algorithm. Type: enum
-| | ... | - crypto_key - Encryption key. Type: string
-| | ... | - integ_alg - Integrity algorithm. Type: enum
-| | ... | - integ_key - Integrity key. Type: string
-| | ... | - l_spi - Local SPI. Type: integer
-| | ... | - r_spi - Remote SPI. Type: integer
-| | ... | - l_ip - Local IP address. Type: string
-| | ... | - r_ip - Remote IP address. Type: string
-| | ... | - l_tunnel - Local tunnel IP address (optional). Type: string
-| | ... | - r_tunnel - Remote tunnel IP address (optional). Type: string
-| | ...
-| | ... | *Example:*
-| | ... | \| ${encr_alg}= \| Crypto Alg AES CBC 128 \|
-| | ... | \| ${auth_alg}= \| Integ Alg SHA1 96 \|
-| | ... | \| Send IPsec Packet and verify ESP encapsulation in received packet\
-| | ... | \| ${nodes['TG']} \| eth1 \
-| | ... | \| 52:54:00:d4:d8:22 \| ${encr_alg} \| sixteenbytes_key \
-| | ... | \| ${auth_alg} \| twentybytessecretkey \| ${1001} \| ${1000} \
-| | ... | \| 192.168.3.3 \| 192.168.4.4 \| 192.168.100.2 \| 192.168.100.3 \|
-| | ...
-| | [Arguments] | ${node} | ${interface} | ${dst_mac} | ${crypto_alg}
-| | ... | ${crypto_key} | ${integ_alg} | ${integ_key} | ${l_spi}
-| | ... | ${r_spi} | ${l_ip} | ${r_ip} | ${l_tunnel}=${None}
-| | ... | ${r_tunnel}=${None}
-| | ...
-| | ${src_mac}= | Get Interface Mac | ${node} | ${interface}
-| | ${if_name}= | Get Interface Name | ${node} | ${interface}
-| | ${args}= | Traffic Script Gen Arg | ${if_name} | ${if_name} | ${src_mac}
-| | ... | ${dst_mac} | ${l_ip} | ${r_ip}
-| | ${crypto_alg_str}= | Get Crypto Alg Scapy Name | ${crypto_alg}
-| | ${integ_alg_str}= | Get Integ Alg Scapy Name | ${integ_alg}
-| | ${args}= | Catenate | ${args} | --crypto_alg ${crypto_alg_str}
-| | ... | --crypto_key ${crypto_key} | --integ_alg ${integ_alg_str}
-| | ... | --integ_key ${integ_key} | --l_spi ${l_spi} | --r_spi ${r_spi}
-| | ${args}= | Set Variable If | "${l_tunnel}" == "${None}" | ${args}
-| | ... | ${args} --src_tun ${l_tunnel}
-| | ${args}= | Set Variable If | "${r_tunnel}" == "${None}" | ${args}
-| | ... | ${args} --dst_tun ${r_tunnel}
-| | Run Traffic Script On Node | ipsec.py | ${node} | ${args}
+| Initialize IPSec in 3-node circular topology
+| | [Documentation]
+| | ... | Set UP state on VPP interfaces in path on nodes in 3-node circular
+| | ... | topology. Get the interface MAC addresses and setup ARP on all VPP
+| | ... | interfaces. Setup IPv4 addresses with /24 prefix on DUT-TG and
+| | ... | DUT1-DUT2 links. Set routing for encrypted traffic on both DUT nodes
+| | ... | with prefix /8 and next hop of neighbour DUT or TG interface IPv4
+| | ... | address.
+| | ...
+| | Set interfaces in path up
+| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1}
+| | ... | ${dut1_if1_ip4} | 24
+| | VPP Interface Set IP Address | ${dut2} | ${dut2_if2}
+| | ... | ${dut2_if2_ip4} | 24
+| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | ${tg_if1_ip4} | ${tg_if1_mac}
+| | VPP Add IP Neighbor | ${dut2} | ${dut2_if2} | ${tg_if2_ip4} | ${tg_if2_mac}
+| | Vpp Route Add | ${dut1} | ${laddr_ip4} | 8 | gateway=${tg_if1_ip4}
+| | ... | interface=${dut1_if1}
+| | Vpp Route Add | ${dut2} | ${raddr_ip4} | 8 | gateway=${tg_if2_ip4}
+| | ... | interface=${dut2_if2}
index 32ddcce..4b8ec0b 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2016 Cisco and/or its affiliates.
+# Copyright (c) 2019 Cisco and/or its affiliates.
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at:
 # limitations under the License.
 
 *** Settings ***
-| Variables | resources/libraries/python/topology.py
-| Library | resources.libraries.python.topology.Topology
+| Library | resources.libraries.python.InterfaceUtil
 | Library | resources.libraries.python.CpuUtils
-| Library | resources.libraries.python.DUTSetup
-| Library | resources.libraries.python.TGSetup
 | Library | resources.libraries.python.DPDK.L2fwdTest
 | Library | resources.libraries.python.DPDK.L3fwdTest
 | Library | Collections
 
 *** Keywords ***
-
 | Start L2FWD on all DUTs
 | | [Documentation] | Start the l2fwd with M worker threads and rxqueues N and
 | | ... | jumbo support frames on/off on all DUTs.
diff --git a/resources/libraries/robot/features/acl.robot b/resources/libraries/robot/features/acl.robot
new file mode 100644 (file)
index 0000000..a70a34c
--- /dev/null
@@ -0,0 +1,294 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Documentation | ACL keywords.
+
+*** Keywords ***
+| Configure MACIP ACLs
+| | [Documentation]
+| | ... | Configure MACIP ACL with required number of not-hitting permit ACEs
+| | ... | plus two hitting ACEs for both traffic directions.
+| | ...
+| | ... | *Arguments:*
+| | ... | - dut_node - DUT node. Type: dictionary
+| | ... | - dut_if1 - DUT node interface1 name (Optional). Type: string
+| | ... | - dut_if2 - DUT node interface2 name (Optional). Type: string
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Configure MACIP ACLs \| ${nodes['DUT1']} \| GigabitEthernet0/7/0 \
+| | ... | \| GigabitEthernet0/8/0 \|
+| | ...
+| | ... | _NOTE:_ This KW uses following test case variables:
+| | ... | - src_ip_start - Source IP address start. Type: string
+| | ... | - ip_step - IP address step. Type: string
+| | ... | - src_mac_start - Source MAC address start in format with colons.
+| | ... | Type: string
+| | ... | - src_mac_step - Source MAC address step. Type: string
+| | ... | - src_mac_mask - Source MAC address mask. 00:00:00:00:00:00 is a
+| | ... | wildcard mask. Type: string
+| | ... | - no_hit_aces_number - Number of not-hitting ACEs to be configured.
+| | ... | Type: integer
+| | ... | - acl_action - Action for the rule - deny, permit, permit+reflect.
+| | ... | Type: string
+| | ... | - tg_stream1_subnet - IP subnet used by TG in direction 0->1.
+| | ... | Type: string
+| | ... | - tg_stream2_subnet - IP subnet used by TG in direction 1->0.
+| | ... | Type: string
+| | ... | - tg_stream1_mac - Source MAC address of traffic stream 1.
+| | ... | Type: string
+| | ... | - tg_stream2_mac - Source MAC address of traffic stream 2.
+| | ... | Type: string
+| | ... | - tg_mac_mask - MAC address mask for traffic streams.
+| | ... | 00:00:00:00:00:00 is a wildcard mask. Type: string
+| | ...
+| | [Arguments] | ${dut} | ${dut_if1}=${NONE} | ${dut_if2}=${NONE}
+| | ...
+| | ${src_ip_int} = | IP To Int | ${src_ip_start}
+| | ${src_ip_int} = | Evaluate | ${src_ip_int} - ${ip_step}
+| | ...
+| | ${ip_limit} = | Set Variable | 255.255.255.255
+| | ${ip_limit_int} = | IP To Int | ${ip_limit}
+| | ...
+| | ${src_mac_int} = | Mac To Int | ${src_mac_start}
+| | ${src_mac_int} = | Evaluate | ${src_mac_int} - ${src_mac_step}
+| | ...
+| | ${mac_limit} = | Set Variable | ff:ff:ff:ff:ff:ff
+| | ${mac_limit_int} = | Mac To Int | ${mac_limit}
+| | ...
+| | ${acl}= | Set Variable | ipv4 permit
+| | :FOR | ${nr} | IN RANGE | 0 | ${no_hit_aces_number}
+| | | ${src_ip_int} = | Evaluate | ${src_ip_int} + ${ip_step}
+| | | ${src_mac_int} = | Evaluate | ${src_mac_int} + ${src_mac_step}
+| | | ${ipv4_limit_reached}= | Set Variable If
+| | | ... | ${src_ip_int} > ${ip_limit_int} | ${TRUE}
+| | | ${mac_limit_reached}= | Set Variable If
+| | | ... | ${src_mac_int} > ${mac_limit_int} | ${TRUE}
+| | | Run Keyword If | '${ipv4_limit_reached}' == '${TRUE}' | Log
+| | | ... | Can't do more iterations - IPv4 address limit has been reached.
+| | | ... | WARN
+| | | Run Keyword If | '${mac_limit_reached}' == '${TRUE}' | Log
+| | | ... | Can't do more iterations - MAC address limit has been reached.
+| | | ... | WARN
+| | | ${src_ip} = | Run Keyword If | '${ipv4_limit_reached}' == '${TRUE}'
+| | | ... | Set Variable | ${ip_limit}
+| | | ... | ELSE | Int To IP | ${src_ip_int}
+| | | ${src_mac}= | Run Keyword If | '${mac_limit_reached}' == '${TRUE}'
+| | | ... | Set Variable | ${mac_limit}
+| | | ... | ELSE | Int To Mac | ${src_mac_int}
+| | | ${acl}= | Catenate | ${acl} | ip ${src_ip}/32
+| | | ... | mac ${src_mac} | mask ${src_mac_mask},
+| | | Exit For Loop If | '${ipv4_limit_reached}' == '${TRUE}' or '${mac_limit_reached}' == '${TRUE}'
+| | ${acl0}= | Catenate | ${acl}
+| | ... | ipv4 ${acl_action} ip ${tg_stream1_subnet} mac ${tg_stream1_mac}
+| | ... | mask ${tg_mac_mask}
+| | ${acl1}= | Catenate | ${acl}
+| | ... | ipv4 ${acl_action} ip ${tg_stream2_subnet} mac ${tg_stream2_mac}
+| | ... | mask ${tg_mac_mask}
+| | Add Macip Acl Multi Entries | ${dut} | rules=${acl0}
+| | Add Macip Acl Multi Entries | ${dut} | rules=${acl1}
+| | ${acl_idx}= | Set Variable | 0
+| | Run Keyword Unless | '${dut_if1}' == '${NONE}'
+| | ... | Add Del Macip Acl Interface | ${dut} | ${dut_if1} | add | ${acl_idx}
+| | ${acl_idx}= | Set Variable | 1
+| | Run Keyword Unless | '${dut_if2}' == '${NONE}'
+| | ... | Add Del Macip Acl Interface | ${dut} | ${dut_if2} | add | ${acl_idx}
+
+| Configure IPv4 ACLs
+| | [Documentation]
+| | ... | Configure ACL with required number of not-hitting permit ACEs plus two
+| | ... | hitting ACEs for both traffic directions.
+| | ...
+| | ... | *Arguments:*
+| | ... | - dut_node - DUT node. Type: dictionary
+| | ... | - dut_if1 - DUT node interface1 name (Optional). Type: string
+| | ... | - dut_if2 - DUT node interface2 name (Optional). Type: string
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Configure IPv4 ACLs \| ${nodes['DUT1']} \| GigabitEthernet0/7/0 \
+| | ... | \| GigabitEthernet0/8/0 \|
+| | ...
+| | ... | _NOTE:_ This KW uses following test case variables:
+| | ... | - src_ip_start - Source IP address start. Type: string
+| | ... | - dst_ip_start - Destination IP address start. Type: string
+| | ... | - ip_step - IP address step. Type: string
+| | ... | - sport_start - Source port number start. Type: string
+| | ... | - dport_start - Destination port number start. Type: string
+| | ... | - port_step - Port number step. Type: string
+| | ... | - no_hit_aces_number - Number of not-hitting ACEs to be configured.
+| | ... | Type: integer
+| | ... | - acl_apply_type - To what path apply the ACL - input or output.
+| | ... | Type: string
+| | ... | - acl_action - Action for the rule - deny, permit, permit+reflect.
+| | ... | Type: string
+| | ... | - trex_stream1_subnet - IP subnet used by T-Rex in direction 0->1.
+| | ... | Type: string
+| | ... | - trex_stream2_subnet - IP subnet used by T-Rex in direction 1->0.
+| | ... | Type: string
+| | ...
+| | [Arguments] | ${dut} | ${dut_if1}=${NONE} | ${dut_if2}=${NONE}
+| | ${src_ip_int} = | Evaluate
+| | ... | int(ipaddress.ip_address(unicode($src_ip_start))) - $ip_step
+| | ... | modules=ipaddress
+| | ${dst_ip_int} = | Evaluate
+| | ... | int(ipaddress.ip_address(unicode($dst_ip_start))) - $ip_step
+| | ... | modules=ipaddress
+| | ${ip_limit} = | Set Variable | 255.255.255.255
+| | ${ip_limit_int} = | Evaluate
+| | ... | int(ipaddress.ip_address(unicode($ip_limit))) | modules=ipaddress
+| | ${sport}= | Evaluate | $sport_start - $port_step
+| | ${dport}= | Evaluate | $dport_start - $port_step
+| | ${port_limit}= | Set Variable | ${65535}
+| | ${acl}= | Set Variable | ipv4 permit
+| | :FOR | ${nr} | IN RANGE | 0 | ${no_hit_aces_number}
+| | | ${src_ip_int} = | Evaluate | $src_ip_int + $ip_step
+| | | ${dst_ip_int} = | Evaluate | $dst_ip_int + $ip_step
+| | | ${sport}= | Evaluate | $sport + $port_step
+| | | ${dport}= | Evaluate | $dport + $port_step
+| | | ${ipv4_limit_reached}= | Set Variable If
+| | | ... | $src_ip_int > $ip_limit_int or $src_ip_int > $ip_limit_int
+| | | ... | ${TRUE}
+| | | ${udp_limit_reached}= | Set Variable If
+| | | ... | $sport > $port_limit or $dport > $port_limit | ${TRUE}
+| | | Run Keyword If | $ipv4_limit_reached is True | Log
+| | | ... | Can't do more iterations - IPv4 address limit has been reached.
+| | | ... | WARN
+| | | Run Keyword If | $udp_limit_reached is True | Log
+| | | ... | Can't do more iterations - UDP port limit has been reached.
+| | | ... | WARN
+| | | ${src_ip} = | Run Keyword If | $ipv4_limit_reached is True
+| | | ... | Set Variable | ${ip_limit}
+| | | ... | ELSE | Evaluate | str(ipaddress.ip_address($src_ip_int))
+| | | ... | modules=ipaddress
+| | | ${dst_ip} = | Run Keyword If | $ipv4_limit_reached is True
+| | | ... | Set Variable | ${ip_limit}
+| | | ... | ELSE | Evaluate | str(ipaddress.ip_address($dst_ip_int))
+| | | ... | modules=ipaddress
+| | | ${sport}= | Set Variable If | ${sport} > $port_limit | $port_limit
+| | | ... | ${sport}
+| | | ${dport}= | Set Variable If | ${dport} > $port_limit | $port_limit
+| | | ... | ${dport}
+| | | ${acl}= | Catenate | ${acl} | src ${src_ip}/32 dst ${dst_ip}/32
+| | | ... | sport ${sport} | dport ${dport},
+| | | Exit For Loop If
+| | | ... | $ipv4_limit_reached is True or $udp_limit_reached is True
+| | ${acl}= | Catenate | ${acl}
+| | ... | ipv4 ${acl_action} src ${trex_stream1_subnet},
+| | ... | ipv4 ${acl_action} src ${trex_stream2_subnet}
+| | Add Replace Acl Multi Entries | ${dut} | rules=${acl}
+| | @{acl_list}= | Create List | ${0}
+| | Run Keyword If | 'input' in $acl_apply_type and $dut_if1 is not None
+| | ... | Set Acl List For Interface | ${dut} | ${dut_if1} | input | ${acl_list}
+| | Run Keyword If | 'input' in $acl_apply_type and $dut_if2 is not None
+| | ... | Set Acl List For Interface | ${dut} | ${dut_if2} | input | ${acl_list}
+| | Run Keyword If | 'output' in $acl_apply_type and $dut_if1 is not None
+| | ... | Set Acl List For Interface | ${dut} | ${dut_if1} | output
+| | ... | ${acl_list}
+| | Run Keyword If | 'output' in $acl_apply_type and $dut_if2 is not None
+| | ... | Set Acl List For Interface | ${dut} | ${dut_if2} | output
+| | ... | ${acl_list}
+
+| Configure ACLs on a single interface
+| | [Documentation]
+| | ... | Configure ACL
+| | ...
+| | ... | *Arguments:*
+| | ... | - dut - DUT node. Type: string
+| | ... | - dut_if - DUT node interface name. Type: string
+| | ... | - acl_apply_type - To what path apply the ACL - input or output.
+| | ... | - acl_action - Action for the rule - deny, permit, permit+reflect.
+| | ... | - subnets - Subnets to apply the specific ACL. Type: list
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Configure ACLs on a single interface \| ${nodes['DUT1']}
+| | ... | \| ... \| GigabitEthernet0/7/0 \| input \| permit | 0.0.0.0/0
+| | ...
+| | [Arguments] | ${dut} | ${dut_if} | ${acl_apply_type} | ${acl_action}
+| | ... | @{subnets}
+| | Set Test variable | ${acl} | ${EMPTY}
+| | :FOR | ${subnet} | IN | @{subnets}
+| | | ${acl} = | Run Keyword If | '${acl}' == '${EMPTY}'
+| | | ... | Set Variable | ipv4 ${acl_action} src ${subnet}
+| | | ... | ELSE
+| | | ... | Catenate | SEPARATOR=", " | ${acl}
+| | | ... | ipv4 ${acl_action} src ${subnet}
+| | Add Replace Acl Multi Entries | ${dut} | rules=${acl}
+| | @{acl_list} = | Create List | ${0}
+| | Set Acl List For Interface | ${dut} | ${dut_if} | ${acl_apply_type}
+| | ... | ${acl_list}
+
+| Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | [Documentation]
+| | ... | Set UP state on VPP interfaces in path on nodes in 2-node / 3-node
+| | ... | circular topology. Get the interface MAC addresses and setup ARP on
+| | ... | all VPP interfaces. Setup IPv4 addresses with /24 prefix on DUT-TG
+| | ... | links. In case of 3-node topology setup IPv4 adresses with /30 prefix
+| | ... | on DUT1-DUT2 link and set routing on both DUT nodes with prefix /24
+| | ... | and next hop of neighbour DUT interface IPv4 address.
+| | ... | Apply required ACL rules to DUT1 interfaces.
+| | ...
+| | ... | *Arguments:*
+| | ... | - ip_nr - Number of IPs to be used. Type: integer
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Initialize IPv4 routing fwith IPv4 ACLs on DUT1 \
+| | ... | in 3-node circular topology \|
+| | ...
+| | [Arguments] | ${ip_nr}=${1}
+| | ...
+| | ${dut2_status} | ${value}= | Run Keyword And Ignore Error
+| | ... | Variable Should Exist | ${dut2}
+| | ${dut}= | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Set Variable | ${dut2}
+| | ... | ELSE | Set Variable | ${dut1}
+| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Set Variable | ${dut2_if2}
+| | ... | ELSE | Set Variable | ${dut1_if2}
+| | ...
+| | Set interfaces in path up
+| | ...
+| | :FOR | ${number} | IN RANGE | 2 | ${ip_nr}+2
+| | | VPP Add IP Neighbor
+| | | ... | ${dut1} | ${dut1_if1} | 10.10.10.${number} | ${tg_if1_mac}
+| | | VPP Add IP Neighbor
+| | | ... | ${dut} | ${dut_if2} | 20.20.20.${number} | ${tg_if2_mac}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Add IP Neighbor
+| | ... | ${dut1} | ${dut1_if2} | 1.1.1.2 | ${dut2_if1_mac}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Add IP Neighbor
+| | ... | ${dut2} | ${dut2_if1} | 1.1.1.1 | ${dut1_if2_mac}
+| | ...
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${dut1_if1} | 10.10.10.1 | 24
+| | VPP Interface Set IP Address
+| | ... | ${dut} | ${dut_if2} | 20.20.20.1 | 24
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Interface Set IP Address
+| | ... | ${dut1} | ${dut1_if2} | 1.1.1.1 | 30
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Interface Set IP Address
+| | ... | ${dut2} | ${dut2_if1} | 1.1.1.2 | 30
+| | ...
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | gateway=1.1.1.2
+| | ... | interface=${dut1_if2}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | gateway=1.1.1.1
+| | ... | interface=${dut2_if1}
+| | ...
+| | Configure IPv4 ACLs | ${dut1} | ${dut1_if1} | ${dut1_if2}
index 6ebdad1..8495475 100644 (file)
@@ -14,7 +14,7 @@
 *** Settings ***
 | Library | resources.libraries.python.GBP
 | ...
-| Documentation | GBP keywords
+| Documentation | GBP keywords.
 
 *** Keywords ***
 | Initialize GBP routing domains on node
index 9c50fb4..c4ef0b7 100644 (file)
 | | | ... | interface=${dut1-vhost-${number}-if1} | vrf=${fib_table_1}
 | | | Vpp Route Add | ${dut1} | 2001:1::0 | 64 | gateway=1:2::1
 | | | ... | interface=${dut1-vhost-${number}-if2} | vrf=${fib_table_2}
+
+| Initialize IPv6 forwarding with VLAN dot1q sub-interfaces in circular topology
+| | [Documentation]
+| | ... | Set UP state on VPP interfaces in path on nodes in 2-node / 3-node
+| | ... | circular topology. In case of 3-node topology create VLAN
+| | ... | sub-interfaces between DUTs. In case of 2-node topology create VLAN
+| | ... | sub-interface on dut1-if2 interface. Get the interface MAC addresses
+| | ... | and setup ARPs. Setup IPv6 addresses with /64 prefix on DUT-TG links
+| | ... | and set routing with prefix /64. In case of 3-node set IPv6 adresses
+| | ... | with /64 prefix on VLAN and set routing on both DUT nodes with prefix
+| | ... | /64. Set next hop of neighbour DUT interface IPv6 address. All
+| | ... | interfaces are brought up.
+| | ...
+| | ... | *Arguments:*
+| | ... | - tg_if1_net - TG interface 1 IPv6 subnet used by traffic generator.
+| | ... | Type: integer
+| | ... | - tg_if2_net - TG interface 2 IPv6 subnet used by traffic generator.
+| | ... | Type: integer
+| | ... | - subid - ID of the sub-interface to be created. Type: string
+| | ... | - tag_rewrite - Method of tag rewrite. Type: string
+| | ...
+| | ... | _NOTE:_ This KW uses following test case variables:
+| | ... | - dut1 - DUT1 node.
+| | ... | - dut2 - DUT2 node.
+| | ... | - dut1_if2 - DUT1 interface towards DUT2.
+| | ... | - dut2_if1 - DUT2 interface towards DUT1.
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Initialize IPv6 forwarding with VLAN dot1q sub-interfaces\
+| | ... | in circular topology \| 2001:1::0 \| 2001:2::0 \| 10 \| pop-1 \|
+| | ...
+| | [Arguments] | ${tg_if1_net} | ${tg_if2_net} | ${subid} | ${tag_rewrite}
+| | ...
+| | ${dut2_status} | ${value}= | Run Keyword And Ignore Error
+| | ... | Variable Should Exist | ${dut2}
+| | ...
+| | Set interfaces in path up
+| | ...
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Initialize VLAN dot1q sub-interfaces in circular topology
+| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid}
+| | ... | ELSE | Initialize VLAN dot1q sub-interfaces in circular topology
+| | ... | ${dut1} | ${dut1_if2} | SUB_ID=${subid}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Configure L2 tag rewrite method on interfaces | ${dut1}
+| | ... | ${subif_index_1} | ${dut2} | ${subif_index_2} | ${tag_rewrite}
+| | ... | ELSE | Configure L2 tag rewrite method on interfaces
+| | ... | ${dut1} | ${subif_index_1} | TAG_REWRITE_METHOD=${tag_rewrite}
+| | ...
+| | ${prefix}= | Set Variable | 64
+| | ${host_prefix}= | Set Variable | 64
+| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 2002:1::1 | ${tg_if1_mac}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Add Ip Neighbor
+| | ... | ${dut1} | ${subif_index_1} | 2002:2::2 | ${dut2_if1_mac}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Add Ip Neighbor
+| | ... | ${dut2} | ${subif_index_2} | 2002:2::1 | ${dut1_if2_mac}
+| | ${dut}= | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Set Variable | ${dut2}
+| | ... | ELSE | Set Variable | ${dut1}
+| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Set Variable | ${dut2_if2}
+| | ... | ELSE | Set Variable | ${subif_index_1}
+| | VPP Add IP Neighbor | ${dut} | ${dut_if2} | 2002:3::1 | ${tg_if2_mac}
+| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1} | 2002:1::2 | ${prefix}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Interface Set IP Address | ${dut1} | ${subif_index_1} | 2002:2::1
+| | ... | ${prefix}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Interface Set IP Address | ${dut2} | ${subif_index_2} | 2002:2::2
+| | ... | ${prefix}
+| | VPP Interface Set IP Address | ${dut} | ${dut_if2} | 2002:3::2 | ${prefix}
+| | Vpp All Ra Suppress Link Layer | ${nodes}
+| | Vpp Route Add | ${dut1} | ${tg_if1_net} | ${host_prefix}
+| | ... | gateway=2002:1::1 | interface=${dut1_if1}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut1} | ${tg_if2_net} | ${host_prefix}
+| | ... | gateway=2002:2::2 | interface=${subif_index_1}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut2} | ${tg_if1_net} | ${host_prefix}
+| | ... | gateway=2002:2::1 | interface=${subif_index_2}
+| | Vpp Route Add | ${dut} | ${tg_if2_net} | ${host_prefix}
+| | ... | gateway=2002:3::1 | interface=${dut_if2}
+
index ff3d5ba..bff8b27 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2017 Cisco and/or its affiliates.
+# Copyright (c) 2019 Cisco and/or its affiliates.
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at:
@@ -13,6 +13,7 @@
 
 *** Settings ***
 | Library | resources.libraries.python.NATUtil
+| ...
 | Documentation | Keywords for NAT feature in VPP.
 
 *** Keywords ***
 | | [Arguments] | ${node}
 | | ...
 | | Show NAT | ${node}
+
+| Initialize NAT44 in circular topology
+| | [Documentation] | Initialization of 2-node / 3-node topology with NAT44
+| | ... | between DUTs:
+| | ... | - set interfaces up
+| | ... | - set IP addresses
+| | ... | - set ARP
+| | ... | - create routes
+| | ... | - set NAT44 - only on DUT1
+| | ...
+| | ${dut2_status} | ${value}= | Run Keyword And Ignore Error
+| | ... | Variable Should Exist | ${dut2}
+| | ...
+| | Set interfaces in path up
+| | ...
+| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1} | 10.0.0.1 | 20
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Interface Set IP Address | ${dut1} | ${dut1_if2}
+| | ... | 11.0.0.1 | 20
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Interface Set IP Address | ${dut2} | ${dut2_if1}
+| | ... | 11.0.0.2 | 20
+| | ${dut}= | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Set Variable | ${dut2}
+| | ... | ELSE | Set Variable | ${dut1}
+| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Set Variable | ${dut2_if2}
+| | ... | ELSE | Set Variable | ${dut1_if2}
+| | VPP Interface Set IP Address | ${dut} | ${dut_if2} | 12.0.0.1 | 20
+| | ...
+| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 10.0.0.2 | ${tg_if1_mac}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Add IP Neighbor
+| | ... | ${dut1} | ${dut1_if2} | 11.0.0.2 | ${dut2_if1_mac}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Add IP Neighbor
+| | ... | ${dut2} | ${dut2_if1} | 11.0.0.1 | ${dut1_if2_mac}
+| | VPP Add IP Neighbor | ${dut} | ${dut_if2} | 12.0.0.2 | ${tg_if2_mac}
+| | ...
+| | Vpp Route Add | ${dut1} | 20.0.0.0 | 18 | gateway=10.0.0.2
+| | ... | interface=${dut1_if1}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut1} | 12.0.0.2 | 32 | gateway=11.0.0.2
+| | ... | interface=${dut1_if2}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut2} | 12.0.0.0 | 24 | gateway=12.0.0.2
+| | ... | interface=${dut2_if2}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut2} | 200.0.0.0 | 30 | gateway=11.0.0.1
+| | ... | interface=${dut2_if1}
+| | ...
+| | Configure inside and outside interfaces
+| | ... | ${dut1} | ${dut1_if1} | ${dut1_if2}
+| | Configure deterministic mode for NAT44
+| | ... | ${dut1} | 20.0.0.0 | 18 | 200.0.0.0 | 30
index 6a3a466..a40f9c9 100644 (file)
 | | Set Interface State | ${dut_node} | ${dut_if} | up
 | | Add Interface To L2 BD | ${dut_node} | ${dut_if} | ${bd_id} | ${shg}
 
-| Add destination port to L2FIB
-| | [Documentation]
-| | ... | Create a static L2FIB entry for required destination port
-| | ... | on defined interface and bridge domain ID of the given VPP node.
-| | ...
-| | ... | *Arguments:*
-| | ... | - ${dest_node} - Destination node. Type: dictionary
-| | ... | - ${dest_node_if} - Destination node interface name. Type: string
-| | ... | - ${vpp_node} - DUT node to add L2FIB entry on. Type: dictionary
-| | ... | - ${vpp_node_if} - DUT node interface name. Type: string
-| | ... | - ${bd_id} - Bridge domain ID. Type: integer
-| | ...
-| | ... | *Return:*
-| | ... | - No value returned
-| | ...
-| | ... | *Example:*
-| | ...
-| | ... | \| Add destination port to L2FIB \| ${nodes['TG']} \
-| | ... | \| eth1 \| ${nodes['DUT2']} \| GigabitEthernet0/8/0 \| 3 \|
-| | ...
-| | [Arguments] | ${node} | ${dest_node_if} | ${vpp_node}
-| | ... | ${vpp_node_if} | ${bd_id}
-| | ...
-| | ${mac}= | Get Interface Mac | ${node} | ${dest_node_if}
-| | Vpp Add L2fib Entry | ${vpp_node} | ${mac} | ${vpp_node_if} | ${bd_id}
-
 | Initialize L2 bridge domain on node
 | | [Documentation]
 | | ... | Setup L2 bridge domain topology by adding two interfaces on DUT into
index 67703d9..a48e10c 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2016 Cisco and/or its affiliates.
+# Copyright (c) 2019 Cisco and/or its affiliates.
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at:
 # limitations under the License.
 
 *** Settings ***
-| Documentation | Keywords for VLAN tests
-| Resource | resources/libraries/robot/shared/default.robot
-| Resource | resources/libraries/robot/l2/l2_xconnect.robot
 | Library | resources.libraries.python.L2Util
 | Library | resources.libraries.python.InterfaceUtil
 | Library | resources.libraries.python.NodePath
+| ...
+| Documentation | Keywords for VLAN tests
 
 *** Keywords ***
-
 | Initialize VLAN sub-interfaces in 3-node circular topology
 | | [Arguments] | ${DUT1} | ${INT1} | ${DUT2} | ${INT2} | ${SUB_ID}
 | | ... | ${OUTER_VLAN_ID} | ${INNER_VLAN_ID} | ${TYPE_SUBIF}
 | | Run Keyword Unless | ${DUT2} == ${None}
 | | ... | L2 Vlan tag rewrite | ${DUT2} | ${SUB_INT2} | ${TAG_REWRITE_METHOD}
 
-| Connect interfaces and VLAN sub-interfaces using L2XC
-| | [Arguments] | ${DUT1} | ${INT1} | ${SUB_INT1} | ${DUT2}=${None}
-| | ... | ${INT2}=${None} | ${SUB_INT2}=${None}
-| | [Documentation] | Add interface and subinterface to bidirectional
-| | ... | L2-xconnect on DUTs.
-| | ...
-| | ... | *Arguments:*
-| | ... | - DUT1 - Node to add bidirectional cross-connect.
-| | ... | - INT1 - Interface to add to the cross-connect.
-| | ... | - SUB_INT1 - Sub-interface to add to the cross-connect.
-| | ... | - DUT2 - Node to add bidirectional cross-connect.
-| | ... | - INT2 - Interface to add to the cross-connect.
-| | ... | - SUB_INT2 - Sub-interface to add to the cross-connect.
-| | ...
-| | Configure L2XC | ${DUT1} | ${INT1} | ${SUB_INT1}
-| | Run Keyword Unless | ${DUT2} == ${None}
-| | ... | Configure L2XC | ${DUT2} | ${INT2} | ${SUB_INT2}
-
-| Create vlan sub-interface
-| | [Documentation] | Create VLAN sub-interface on DUT and set admin status up.
-| | ...
-| | ... | *Arguments:*
-| | ... | - dut_node - Node to add VLAN sub-intreface. Type: dictionary
-| | ... | - interface - Interface to create VLAN sub-interface. Type: string
-| | ... | - vlan_id - VLAN ID. Type: integer
-| | ...
-| | ... | *Return:*
-| | ... | - vlan_name - VLAN sub-interface name. Type: string
-| | ... | - vlan_index - VLAN sub-interface SW index. Type: integer
-| | ...
-| | ... | *Example:*
-| | ...
-| | ... | \| Create vlan sub-interface \| ${nodes['DUT1']} \| port3 \| 100 \|
-| | ...
-| | [Arguments] | ${dut_node} | ${interface} | ${vlan_id}
-| | ...
-| | [Return] | ${vlan_name} | ${vlan_index}
-| | ...
-| | Set Interface State | ${dut_node} | ${interface} | up
-| | ${interface_name}= | Get interface name | ${dut_node} | ${interface}
-| | ${vlan_name} | ${vlan_index}= | Create Vlan Subinterface
-| | ... | ${dut_node} | ${interface_name} | ${vlan_id}
-| | Set Interface State | ${dut_node} | ${vlan_index} | up
-
-| Create tagged sub-interface
-| | [Documentation] | Create tagged sub-interface on DUT. Type of tagged \
-| | ... | sub-intreface depends on type_subif value:
-| | ... | - one_tag -> VLAN
-| | ... | - two_tags -> QinQ VLAN
-| | ... | - two_tags dot1ad - DOT1AD
-| | ...
-| | ... | *Arguments:*
-| | ... | - dut_node - Node to add VLAN sub-intreface. Type: dictionary
-| | ... | - interface - Interface to create tagged sub-interface. Type: string
-| | ... | - subif_id - Sub-interface ID. Type: integer
-| | ... | - outer_vlan_id - VLAN (outer) ID (Optional). Type: integer
-| | ... | - inner_vlan_id - VLAN inner ID (Optional). Type: integer
-| | ... | - type_subif - Sub-interface type (Optional). Type: string
-| | ...
-| | ... | *Return:*
-| | ... | - subif_name - Sub-interface name. Type: string
-| | ... | - subif_index - Sub-interface SW index. Type: integer
-| | ...
-| | ... | *Example:*
-| | ...
-| | ... | \| Create tagged sub-interface \| ${nodes['DUT1']} \| port1 \| 10 \
-| | ... | \| outer_vlan_id=100 \| inner_vlan_id=200 \
-| | ... | \| type_subif=two_tags dot1ad \|
-| | ...
-| | [Arguments] | ${dut_node} | ${interface} | ${subif_id}
-| | ... | ${outer_vlan_id}=${None} | ${inner_vlan_id}=${None}
-| | ... | ${type_subif}=${None}
-| | ...
-| | [Return] | ${subif_name} | ${subif_index}
-| | ...
-| | Set Interface State | ${dut_node} | ${interface} | up
-| | ${interface_name}= | Get interface name | ${dut_node} | ${interface}
-| | ${subif_name} | ${subif_index}= | Create Subinterface
-| | ... | ${dut_node} | ${interface_name} | ${subif_id}
-| | ... | outer_vlan_id=${outer_vlan_id} | inner_vlan_id=${inner_vlan_id}
-| | ... | type_subif=${type_subif}
-
 | Configure L2 tag rewrite method on interface
 | | [Documentation] | Set L2 tag rewrite on (sub-)interface on DUT
 | | ...
diff --git a/resources/libraries/robot/overlay/gre.robot b/resources/libraries/robot/overlay/gre.robot
deleted file mode 100644 (file)
index fd38a17..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (c) 2016 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/shared/interfaces.robot
-
-*** Keywords ***
-| Create GRE tunnel interface and set it up
-| | [Documentation] | Create GRE tunnel interface and set it up on defined VPP node and put \
-| | ... | the interface to UP state.
-| | ...
-| | ... | *Arguments:*
-| | ... | - dut_node - DUT node where to create GRE tunnel. Type: dictionary
-| | ... | - source_ip_address - GRE tunnel source IP address. Type: string
-| | ... | - destination_ip_address - GRE tunnel destination IP address.
-| | ... |   Type: string
-| | ...
-| | ... | *Return:*
-| | ... | - name - Name of created GRE tunnel interface. Type: string
-| | ... | - index - SW interface index of created GRE tunnel interface.
-| | ... |   Type: integer
-| | ...
-| | ... | *Example:*
-| | ...
-| | ... | \| ${gre_name} \| ${gre_index}= \
-| | ... | \| Create GRE tunnel interface and set it up \| ${dut} \
-| | ... | \| 192.0.1.1 \| 192.0.1.2 \|
-| | ...
-| | [Arguments] | ${dut_node} | ${source_ip_address} | ${destination_ip_address}
-| | ${name} | ${index}= | Create GRE tunnel interface
-| | ... | ${dut_node} | ${source_ip_address} | ${destination_ip_address}
-| | Set Interface State | ${dut_node} | ${index} | up
-| | [Return] | ${name} | ${index}
index a0a557e..1be008a 100644 (file)
 | | ${duts}= | Get Matches | ${nodes} | DUT*
 | | :FOR | ${dut} | IN | @{duts}
 | | | Show SR LocalSIDs | ${nodes['${dut}']}
+
+| Initialize IPv6 forwarding over SRv6 with encapsulation with '${n}' x SID '${prepos}' decapsulation in 3-node circular topology
+| | [Documentation]
+| | ... | Set UP state on VPP interfaces in path on nodes in 3-node circular
+| | ... | topology. Get the interface MAC addresses and setup neighbours on all
+| | ... | VPP interfaces. Setup IPv6 addresses on all interfaces. Set segment
+| | ... | routing for IPv6 for required number of SIDs and configure IPv6 routes
+| | ... | on both DUT nodes.
+| | ...
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${dut1_if1} | ${dut1_if1_ip6} | ${prefix}
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${dut1_if2} | ${dut1_if2_ip6} | ${prefix}
+| | VPP Interface Set IP Address
+| | ... | ${dut2} | ${dut2_if1} | ${dut2_if1_ip6} | ${prefix}
+| | VPP Interface Set IP Address
+| | ... | ${dut2} | ${dut2_if2} | ${dut2_if2_ip6} | ${prefix}
+| | Vpp All Ra Suppress Link Layer | ${nodes}
+| | :FOR | ${number} | IN RANGE | 2 | ${dst_addr_nr}+2
+| | | ${hexa_nr}= | Convert To Hex | ${number}
+| | | VPP Add IP Neighbor | ${dut1}
+| | | ... | ${dut1_if1} | ${tg_if1_ip6_subnet}${hexa_nr} | ${tg_if1_mac}
+| | | VPP Add IP Neighbor | ${dut2}
+| | | ... | ${dut2_if2} | ${tg_if2_ip6_subnet}${hexa_nr} | ${tg_if2_mac}
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${dut1_if2} | ${dut2_if1_ip6} | ${dut2_if1_mac}
+| | VPP Add IP Neighbor
+| | ... | ${dut2} | ${dut2_if1} | ${dut1_if2_ip6} | ${dut1_if2_mac}
+| | ${sid1}= | Set Variable If
+| | ... | "${n}" == "1" | ${dut2_sid1}
+| | ... | "${n}" == "2" | ${dut2_sid1_1}
+| | ${sid2}= | Set Variable If
+| | ... | "${n}" == "1" | ${dut1_sid2}
+| | ... | "${n}" == "2" | ${dut1_sid2_1}
+| | Vpp Route Add | ${dut1} | ${sid1} | ${sid_prefix} | gateway=${dut2_if1_ip6}
+| | ... | interface=${dut1_if2}
+| | Vpp Route Add | ${dut2} | ${sid2} | ${sid_prefix} | gateway=${dut1_if2_ip6}
+| | ... | interface=${dut2_if1}
+# Configure SRv6 for direction0
+| | Set SR Encaps Source Address on DUT | ${dut1} | ${dut1_sid1}
+| | @{sid_list_dir0}= | Run Keyword If | "${n}" == "1"
+| | ... | Create List | ${dut2_sid1}
+| | ... | ELSE IF | "${n}" == "2"
+| | ... | Create List | ${dut2_sid1_1} | ${dut2_sid1_2}
+| | Configure SR Policy on DUT | ${dut1} | ${dut1_bsid} | encap
+| | ... | @{sid_list_dir0}
+| | Configure SR Steer on DUT | ${dut1} | L3 | ${dut1_bsid}
+| | ... | ip_addr=${tg_if2_ip6_subnet} | prefix=${sid_prefix}
+| | Run Keyword If | "${n}" == "1"
+| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1} | end.dx6
+| | ... | interface=${dut2_if2} | next_hop=${tg_if2_ip6_subnet}2
+| | Run Keyword If | "${n}" == "2"
+| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1_1} | end
+| | Run Keyword If | "${n}" == "2" and "${prepos}" != "without"
+| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1_2} | end.dx6
+| | ... | interface=${dut2_if2} | next_hop=${tg_if2_ip6_subnet}2
+| | Run Keyword If | "${n}" == "2" and "${prepos}" == "without"
+| | ... | Vpp Route Add | ${dut2} | ${dut2_sid1_2} | ${sid_prefix}
+| | ... | gateway=${tg_if2_ip6_subnet}2 | interface=${dut2_if2}
+# Configure SRv6 for direction1
+| | Set SR Encaps Source Address on DUT | ${dut2} | ${dut2_sid2}
+| | @{sid_list_dir1}= | Run Keyword If | "${n}" == "1"
+| | ... | Create List | ${dut1_sid2}
+| | ... | ELSE IF | "${n}" == "2"
+| | ... | Create List | ${dut1_sid2_1} | ${dut1_sid2_2}
+| | Configure SR Policy on DUT | ${dut2} | ${dut2_bsid} | encap
+| | ... | @{sid_list_dir1}
+| | Configure SR Steer on DUT | ${dut2} | L3 | ${dut2_bsid}
+| | ... | ip_addr=${tg_if1_ip6_subnet} | prefix=${sid_prefix}
+| | Run Keyword If | "${n}" == "1"
+| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2} | end.dx6
+| | ... | interface=${dut1_if1} | next_hop=${tg_if1_ip6_subnet}2
+| | Run Keyword If | "${n}" == "2"
+| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2_1} | end
+| | Run Keyword If | "${n}" == "2" and "${prepos}" != "without"
+| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2_2} | end.dx6
+| | ... | interface=${dut1_if1} | next_hop=${tg_if1_ip6_subnet}2
+| | Run Keyword If | "${n}" == "2" and "${prepos}" == "without"
+| | ... | Vpp Route Add | ${dut1} | ${dut1_sid2_2} | ${sid_prefix}
+| | ... | gateway=${tg_if1_ip6_subnet}2 | interface=${dut1_if1}
+| | Set interfaces in path up
+
+| Initialize IPv6 forwarding over SRv6 with endpoint to SR-unaware Service Function via '${behavior}' behaviour in 3-node circular topology
+| | [Documentation]
+| | ... | Create pair of Memif interfaces on all defined VPP nodes. Set UP
+| | ... | state on VPP interfaces in path on nodes in 3-node circular topology.
+| | ... | Get the interface MAC addresses and setup neighbours on all VPP
+| | ... | interfaces. Setup IPv6 addresses on all interfaces. Set segment
+| | ... | routing for IPv6 with defined behaviour function and configure IPv6
+| | ... | routes on both DUT nodes.
+| | ...
+| | ... | *Note:*
+| | ... | KW uses test variable rxq_count_int set by KW Add worker threads
+| | ... | and rxqueues to all DUTs
+| | ...
+| | ${sock1}= | Set Variable | memif-DUT1_CNF
+| | ${sock2}= | Set Variable | memif-DUT2_CNF
+| | Set up memif interfaces on DUT node | ${dut1} | ${sock1} | ${sock1}
+| | ... | ${1} | dut1-memif-1-if1 | dut1-memif-1-if2 | ${rxq_count_int}
+| | ... | ${rxq_count_int}
+| | VPP Set interface MTU | ${dut1} | ${dut1-memif-1-if1}
+| | VPP Set interface MTU | ${dut1} | ${dut1-memif-1-if2}
+| | Set up memif interfaces on DUT node | ${dut2} | ${sock2} | ${sock2}
+| | ... | ${1} | dut2-memif-1-if1 | dut2-memif-1-if2 | ${rxq_count_int}
+| | ... | ${rxq_count_int}
+| | VPP Set interface MTU | ${dut2} | ${dut2-memif-1-if1}
+| | VPP Set interface MTU | ${dut2} | ${dut2-memif-1-if2}
+| | :FOR | ${dut} | IN | @{duts}
+| | | Show Memif | ${nodes['${dut}']}
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${dut1_if1} | ${dut1_if1_ip6} | ${prefix}
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${dut1_if2} | ${dut1_if2_ip6} | ${prefix}
+| | VPP Interface Set IP Address | ${dut1} | ${dut1-memif-1-if1}
+| | ... | ${dut1-memif-1-if1_ip6} | ${mem_prefix}
+| | VPP Interface Set IP Address | ${dut1} | ${dut1-memif-1-if2}
+| | ... | ${dut1-memif-1-if2_ip6} | ${mem_prefix}
+| | VPP Interface Set IP Address
+| | ... | ${dut2} | ${dut2_if1} | ${dut2_if1_ip6} | ${prefix}
+| | VPP Interface Set IP Address
+| | ... | ${dut2} | ${dut2_if2} | ${dut2_if2_ip6} | ${prefix}
+| | VPP Interface Set IP Address | ${dut2} | ${dut2-memif-1-if1}
+| | ... | ${dut2-memif-1-if1_ip6} | ${mem_prefix}
+| | VPP Interface Set IP Address | ${dut2} | ${dut2-memif-1-if2}
+| | ... | ${dut2-memif-1-if2_ip6} | ${mem_prefix}
+| | Vpp All Ra Suppress Link Layer | ${nodes}
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${dut1_if2} | ${dut2_if1_ip6} | ${dut2_if1_mac}
+| | VPP Add IP Neighbor
+| | ... | ${dut2} | ${dut2_if1} | ${dut1_if2_ip6} | ${dut1_if2_mac}
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${dut1_if1} | ${tg_if1_ip6_subnet}2 | ${tg_if1_mac}
+| | VPP Add IP Neighbor
+| | ... | ${dut2} | ${dut2_if2} | ${tg_if2_ip6_subnet}2 | ${tg_if2_mac}
+| | ${dut1-memif-1-if2_mac}= | Get Interface MAC | ${dut1} | memif2
+| | ${dut2-memif-1-if2_mac}= | Get Interface MAC | ${dut2} | memif2
+| | VPP Add IP Neighbor | ${dut1}
+| | ... | ${dut1-memif-1-if1} | ${dut1_nh} | ${dut1-memif-1-if2_mac}
+| | VPP Add IP Neighbor | ${dut2}
+| | ... | ${dut2-memif-1-if1} | ${dut2_nh} | ${dut2-memif-1-if2_mac}
+| | Vpp Route Add | ${dut1} | ${dut2_sid1} | ${sid_prefix}
+| | ... | gateway=${dut2_if1_ip6} | interface=${dut1_if2}
+| | Vpp Route Add | ${dut1} | ${out_sid2_1} | ${sid_prefix}
+| | ... | gateway=${tg_if1_ip6_subnet}2 | interface=${dut1_if1}
+| | Vpp Route Add | ${dut2} | ${dut1_sid2} | ${sid_prefix}
+| | ... | gateway=${dut1_if2_ip6} | interface=${dut2_if1}
+| | Vpp Route Add | ${dut2} | ${out_sid1_1} | ${sid_prefix}
+| | ... | gateway=${tg_if2_ip6_subnet}2 | interface=${dut2_if2}
+# Configure SRv6 for direction0 on DUT1
+| | Set SR Encaps Source Address on DUT | ${dut1} | ${dut1_sid1}
+| | @{sid_list_dir0}= | Create List | ${dut2_sid1} | ${out_sid1_1}
+| | ... | ${out_sid1_2}
+| | Configure SR Policy on DUT | ${dut1} | ${dut1_bsid} | encap
+| | ... | @{sid_list_dir0}
+| | Configure SR Steer on DUT | ${dut1} | L3 | ${dut1_bsid}
+| | ... | ip_addr=${tg_if2_ip6_subnet} | prefix=${sid_prefix}
+# Configure SRv6 for direction1 on DUT2
+| | Set SR Encaps Source Address on DUT | ${dut2} | ${dut2_sid2}
+| | @{sid_list_dir1}= | Create List | ${dut1_sid2} | ${out_sid2_1}
+| | ... | ${out_sid2_2}
+| | Configure SR Policy on DUT | ${dut2} | ${dut2_bsid} | encap
+| | ... | @{sid_list_dir1}
+| | Configure SR Steer on DUT | ${dut2} | L3 | ${dut2_bsid}
+| | ... | ip_addr=${tg_if1_ip6_subnet} | prefix=${sid_prefix}
+# Configure SRv6 for direction0 on DUT2
+| | ${dut2_out_if}= | Get Interface Name | ${dut2} | memif1
+| | ${dut2_in_if}= | Get Interface Name | ${dut2} | memif2
+| | Remove Values From List | ${sid_list_dir0} | ${dut2_sid1}
+| | Run Keyword If | "${behavior}" == "static_proxy"
+| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1} | end.as
+| | ... | ${NONE} | ${dut2_nh} | ${NONE} | ${dut2_out_if} | ${dut2_in_if}
+| | ... | ${dut1_sid1} | @{sid_list_dir0}
+| | ... | ELSE IF | "${behavior}" == "dynamic_proxy"
+| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1} | end.ad
+| | ... | next_hop=${dut2_nh} | out_if=${dut2_out_if} | in_if=${dut2_in_if}
+| | ... | ELSE IF | "${behavior}" == "masquerading"
+| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1} | end.am
+| | ... | next_hop=${dut2_nh} | out_if=${dut2_out_if} | in_if=${dut2_in_if}
+| | ... | ELSE | Fail | Unsupported behaviour: ${behavior}
+# Configure SRv6 for direction1 on DUT1
+| | ${dut1_out_if}= | Get Interface Name | ${dut1} | memif1
+| | ${dut1_in_if}= | Get Interface Name | ${dut1} | memif2
+| | Remove Values From List | ${sid_list_dir1} | ${dut1_sid2}
+| | Run Keyword If | "${behavior}" == "static_proxy"
+| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2} | end.as
+| | ... | ${NONE} | ${dut1_nh} | ${NONE} | ${dut1_out_if} | ${dut1_in_if}
+| | ... | ${dut2_sid2} | @{sid_list_dir1}
+| | ... | ELSE IF | "${behavior}" == "dynamic_proxy"
+| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2} | end.ad
+| | ... | next_hop=${dut1_nh} | out_if=${dut1_out_if} | in_if=${dut1_in_if}
+| | ... | ELSE IF | "${behavior}" == "masquerading"
+| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2} | end.am
+| | ... | next_hop=${dut1_nh} | out_if=${dut1_out_if} | in_if=${dut1_in_if}
+| | ... | ELSE | Fail | Unsupported behaviour: ${behavior}
+| | Set interfaces in path up
index 42c1eba..f03abdc 100644 (file)
 # limitations under the License.
 
 *** Settings ***
-| Library  | Collections
 | Library  | resources.libraries.python.InterfaceUtil
-| Library  | resources.libraries.python.IPUtil
-| Library  | resources.libraries.python.IPv6Util
-| Library  | resources.libraries.python.L2Util
-| Library  | resources.libraries.python.NodePath
 | ...
-| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
-| Resource | resources/libraries/robot/l2/l2_xconnect.robot
-| Resource | resources/libraries/robot/shared/default.robot
-| Resource | resources/libraries/robot/shared/interfaces.robot
-| ...
-| Documentation | VXLAN keywords
+| Documentation | VXLAN keywords.
 
 *** Keywords ***
 | Get VXLAN dump
index 09382d7..7c7c7bb 100644 (file)
 # limitations under the License.
 
 *** Settings ***
-| Library | resources.libraries.python.DpdkUtil
-| Library | resources.libraries.python.InterfaceUtil
-| Library | resources.libraries.python.IPUtil
-| Library | resources.libraries.python.NodePath
-| Library | resources.libraries.python.TestConfig
-| Library | resources.libraries.python.TrafficGenerator
-| Library | resources.libraries.python.TrafficGenerator.TGDropRateSearchImpl
-| Library | resources.libraries.python.VhostUser
-| ...
 | Documentation | Performance suite keywords - configuration
 
 *** Keywords ***
-| Initialize IPSec in 3-node circular topology
-| | [Documentation]
-| | ... | Set UP state on VPP interfaces in path on nodes in 3-node circular
-| | ... | topology. Get the interface MAC addresses and setup ARP on all VPP
-| | ... | interfaces. Setup IPv4 addresses with /24 prefix on DUT-TG and
-| | ... | DUT1-DUT2 links. Set routing for encrypted traffic on both DUT nodes
-| | ... | with prefix /8 and next hop of neighbour DUT or TG interface IPv4
-| | ... | address.
-| | ...
-| | Set interfaces in path up
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1}
-| | ... | ${dut1_if1_ip4} | 24
-| | VPP Interface Set IP Address | ${dut2} | ${dut2_if2}
-| | ... | ${dut2_if2_ip4} | 24
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | ${tg_if1_ip4} | ${tg_if1_mac}
-| | VPP Add IP Neighbor | ${dut2} | ${dut2_if2} | ${tg_if2_ip4} | ${tg_if2_mac}
-| | Vpp Route Add | ${dut1} | ${laddr_ip4} | 8 | gateway=${tg_if1_ip4}
-| | ... | interface=${dut1_if1}
-| | Vpp Route Add | ${dut2} | ${raddr_ip4} | 8 | gateway=${tg_if2_ip4}
-| | ... | interface=${dut2_if2}
-
-| Initialize IPv6 forwarding with VLAN dot1q sub-interfaces in circular topology
-| | [Documentation]
-| | ... | Set UP state on VPP interfaces in path on nodes in 2-node / 3-node
-| | ... | circular topology. In case of 3-node topology create VLAN
-| | ... | sub-interfaces between DUTs. In case of 2-node topology create VLAN
-| | ... | sub-interface on dut1-if2 interface. Get the interface MAC addresses
-| | ... | and setup ARPs. Setup IPv6 addresses with /64 prefix on DUT-TG links
-| | ... | and set routing with prefix /64. In case of 3-node set IPv6 adresses
-| | ... | with /64 prefix on VLAN and set routing on both DUT nodes with prefix
-| | ... | /64. Set next hop of neighbour DUT interface IPv6 address. All
-| | ... | interfaces are brought up.
-| | ...
-| | ... | *Arguments:*
-| | ... | - tg_if1_net - TG interface 1 IPv6 subnet used by traffic generator.
-| | ... | Type: integer
-| | ... | - tg_if2_net - TG interface 2 IPv6 subnet used by traffic generator.
-| | ... | Type: integer
-| | ... | - subid - ID of the sub-interface to be created. Type: string
-| | ... | - tag_rewrite - Method of tag rewrite. Type: string
-| | ...
-| | ... | _NOTE:_ This KW uses following test case variables:
-| | ... | - dut1 - DUT1 node.
-| | ... | - dut2 - DUT2 node.
-| | ... | - dut1_if2 - DUT1 interface towards DUT2.
-| | ... | - dut2_if1 - DUT2 interface towards DUT1.
-| | ...
-| | ... | *Example:*
-| | ...
-| | ... | \| Initialize IPv6 forwarding with VLAN dot1q sub-interfaces\
-| | ... | in circular topology \| 2001:1::0 \| 2001:2::0 \| 10 \| pop-1 \|
-| | ...
-| | [Arguments] | ${tg_if1_net} | ${tg_if2_net} | ${subid} | ${tag_rewrite}
-| | ...
-| | ${dut2_status} | ${value}= | Run Keyword And Ignore Error
-| | ... | Variable Should Exist | ${dut2}
-| | ...
-| | Set interfaces in path up
-| | ...
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Initialize VLAN dot1q sub-interfaces in circular topology
-| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid}
-| | ... | ELSE | Initialize VLAN dot1q sub-interfaces in circular topology
-| | ... | ${dut1} | ${dut1_if2} | SUB_ID=${subid}
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Configure L2 tag rewrite method on interfaces | ${dut1}
-| | ... | ${subif_index_1} | ${dut2} | ${subif_index_2} | ${tag_rewrite}
-| | ... | ELSE | Configure L2 tag rewrite method on interfaces
-| | ... | ${dut1} | ${subif_index_1} | TAG_REWRITE_METHOD=${tag_rewrite}
-| | ...
-| | ${prefix}= | Set Variable | 64
-| | ${host_prefix}= | Set Variable | 64
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 2002:1::1 | ${tg_if1_mac}
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | VPP Add Ip Neighbor
-| | ... | ${dut1} | ${subif_index_1} | 2002:2::2 | ${dut2_if1_mac}
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | VPP Add Ip Neighbor
-| | ... | ${dut2} | ${subif_index_2} | 2002:2::1 | ${dut1_if2_mac}
-| | ${dut}= | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Set Variable | ${dut2}
-| | ... | ELSE | Set Variable | ${dut1}
-| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Set Variable | ${dut2_if2}
-| | ... | ELSE | Set Variable | ${subif_index_1}
-| | VPP Add IP Neighbor | ${dut} | ${dut_if2} | 2002:3::1 | ${tg_if2_mac}
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1} | 2002:1::2 | ${prefix}
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | VPP Interface Set IP Address | ${dut1} | ${subif_index_1} | 2002:2::1
-| | ... | ${prefix}
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | VPP Interface Set IP Address | ${dut2} | ${subif_index_2} | 2002:2::2
-| | ... | ${prefix}
-| | VPP Interface Set IP Address | ${dut} | ${dut_if2} | 2002:3::2 | ${prefix}
-| | Vpp All Ra Suppress Link Layer | ${nodes}
-| | Vpp Route Add | ${dut1} | ${tg_if1_net} | ${host_prefix}
-| | ... | gateway=2002:1::1 | interface=${dut1_if1}
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Vpp Route Add | ${dut1} | ${tg_if2_net} | ${host_prefix}
-| | ... | gateway=2002:2::2 | interface=${subif_index_1}
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Vpp Route Add | ${dut2} | ${tg_if1_net} | ${host_prefix}
-| | ... | gateway=2002:2::1 | interface=${subif_index_2}
-| | Vpp Route Add | ${dut} | ${tg_if2_net} | ${host_prefix}
-| | ... | gateway=2002:3::1 | interface=${dut_if2}
-
-| Initialize IPv6 forwarding over SRv6 with encapsulation with '${n}' x SID '${prepos}' decapsulation in 3-node circular topology
-| | [Documentation]
-| | ... | Set UP state on VPP interfaces in path on nodes in 3-node circular
-| | ... | topology. Get the interface MAC addresses and setup neighbours on all
-| | ... | VPP interfaces. Setup IPv6 addresses on all interfaces. Set segment
-| | ... | routing for IPv6 for required number of SIDs and configure IPv6 routes
-| | ... | on both DUT nodes.
-| | ...
-| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if1} | ${dut1_if1_ip6} | ${prefix}
-| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if2} | ${dut1_if2_ip6} | ${prefix}
-| | VPP Interface Set IP Address
-| | ... | ${dut2} | ${dut2_if1} | ${dut2_if1_ip6} | ${prefix}
-| | VPP Interface Set IP Address
-| | ... | ${dut2} | ${dut2_if2} | ${dut2_if2_ip6} | ${prefix}
-| | Vpp All Ra Suppress Link Layer | ${nodes}
-| | :FOR | ${number} | IN RANGE | 2 | ${dst_addr_nr}+2
-| | | ${hexa_nr}= | Convert To Hex | ${number}
-| | | VPP Add IP Neighbor | ${dut1}
-| | | ... | ${dut1_if1} | ${tg_if1_ip6_subnet}${hexa_nr} | ${tg_if1_mac}
-| | | VPP Add IP Neighbor | ${dut2}
-| | | ... | ${dut2_if2} | ${tg_if2_ip6_subnet}${hexa_nr} | ${tg_if2_mac}
-| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | ${dut2_if1_ip6} | ${dut2_if1_mac}
-| | VPP Add IP Neighbor
-| | ... | ${dut2} | ${dut2_if1} | ${dut1_if2_ip6} | ${dut1_if2_mac}
-| | ${sid1}= | Set Variable If
-| | ... | "${n}" == "1" | ${dut2_sid1}
-| | ... | "${n}" == "2" | ${dut2_sid1_1}
-| | ${sid2}= | Set Variable If
-| | ... | "${n}" == "1" | ${dut1_sid2}
-| | ... | "${n}" == "2" | ${dut1_sid2_1}
-| | Vpp Route Add | ${dut1} | ${sid1} | ${sid_prefix} | gateway=${dut2_if1_ip6}
-| | ... | interface=${dut1_if2}
-| | Vpp Route Add | ${dut2} | ${sid2} | ${sid_prefix} | gateway=${dut1_if2_ip6}
-| | ... | interface=${dut2_if1}
-# Configure SRv6 for direction0
-| | Set SR Encaps Source Address on DUT | ${dut1} | ${dut1_sid1}
-| | @{sid_list_dir0}= | Run Keyword If | "${n}" == "1"
-| | ... | Create List | ${dut2_sid1}
-| | ... | ELSE IF | "${n}" == "2"
-| | ... | Create List | ${dut2_sid1_1} | ${dut2_sid1_2}
-| | Configure SR Policy on DUT | ${dut1} | ${dut1_bsid} | encap
-| | ... | @{sid_list_dir0}
-| | Configure SR Steer on DUT | ${dut1} | L3 | ${dut1_bsid}
-| | ... | ip_addr=${tg_if2_ip6_subnet} | prefix=${sid_prefix}
-| | Run Keyword If | "${n}" == "1"
-| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1} | end.dx6
-| | ... | interface=${dut2_if2} | next_hop=${tg_if2_ip6_subnet}2
-| | Run Keyword If | "${n}" == "2"
-| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1_1} | end
-| | Run Keyword If | "${n}" == "2" and "${prepos}" != "without"
-| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1_2} | end.dx6
-| | ... | interface=${dut2_if2} | next_hop=${tg_if2_ip6_subnet}2
-| | Run Keyword If | "${n}" == "2" and "${prepos}" == "without"
-| | ... | Vpp Route Add | ${dut2} | ${dut2_sid1_2} | ${sid_prefix}
-| | ... | gateway=${tg_if2_ip6_subnet}2 | interface=${dut2_if2}
-# Configure SRv6 for direction1
-| | Set SR Encaps Source Address on DUT | ${dut2} | ${dut2_sid2}
-| | @{sid_list_dir1}= | Run Keyword If | "${n}" == "1"
-| | ... | Create List | ${dut1_sid2}
-| | ... | ELSE IF | "${n}" == "2"
-| | ... | Create List | ${dut1_sid2_1} | ${dut1_sid2_2}
-| | Configure SR Policy on DUT | ${dut2} | ${dut2_bsid} | encap
-| | ... | @{sid_list_dir1}
-| | Configure SR Steer on DUT | ${dut2} | L3 | ${dut2_bsid}
-| | ... | ip_addr=${tg_if1_ip6_subnet} | prefix=${sid_prefix}
-| | Run Keyword If | "${n}" == "1"
-| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2} | end.dx6
-| | ... | interface=${dut1_if1} | next_hop=${tg_if1_ip6_subnet}2
-| | Run Keyword If | "${n}" == "2"
-| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2_1} | end
-| | Run Keyword If | "${n}" == "2" and "${prepos}" != "without"
-| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2_2} | end.dx6
-| | ... | interface=${dut1_if1} | next_hop=${tg_if1_ip6_subnet}2
-| | Run Keyword If | "${n}" == "2" and "${prepos}" == "without"
-| | ... | Vpp Route Add | ${dut1} | ${dut1_sid2_2} | ${sid_prefix}
-| | ... | gateway=${tg_if1_ip6_subnet}2 | interface=${dut1_if1}
-| | Set interfaces in path up
-
-| Initialize IPv6 forwarding over SRv6 with endpoint to SR-unaware Service Function via '${behavior}' behaviour in 3-node circular topology
-| | [Documentation]
-| | ... | Create pair of Memif interfaces on all defined VPP nodes. Set UP
-| | ... | state on VPP interfaces in path on nodes in 3-node circular topology.
-| | ... | Get the interface MAC addresses and setup neighbours on all VPP
-| | ... | interfaces. Setup IPv6 addresses on all interfaces. Set segment
-| | ... | routing for IPv6 with defined behaviour function and configure IPv6
-| | ... | routes on both DUT nodes.
-| | ...
-| | ... | *Note:*
-| | ... | KW uses test variable rxq_count_int set by KW Add worker threads
-| | ... | and rxqueues to all DUTs
-| | ...
-| | ${sock1}= | Set Variable | memif-DUT1_CNF
-| | ${sock2}= | Set Variable | memif-DUT2_CNF
-| | Set up memif interfaces on DUT node | ${dut1} | ${sock1} | ${sock1}
-| | ... | ${1} | dut1-memif-1-if1 | dut1-memif-1-if2 | ${rxq_count_int}
-| | ... | ${rxq_count_int}
-| | VPP Set interface MTU | ${dut1} | ${dut1-memif-1-if1}
-| | VPP Set interface MTU | ${dut1} | ${dut1-memif-1-if2}
-| | Set up memif interfaces on DUT node | ${dut2} | ${sock2} | ${sock2}
-| | ... | ${1} | dut2-memif-1-if1 | dut2-memif-1-if2 | ${rxq_count_int}
-| | ... | ${rxq_count_int}
-| | VPP Set interface MTU | ${dut2} | ${dut2-memif-1-if1}
-| | VPP Set interface MTU | ${dut2} | ${dut2-memif-1-if2}
-| | :FOR | ${dut} | IN | @{duts}
-| | | Show Memif | ${nodes['${dut}']}
-| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if1} | ${dut1_if1_ip6} | ${prefix}
-| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if2} | ${dut1_if2_ip6} | ${prefix}
-| | VPP Interface Set IP Address | ${dut1} | ${dut1-memif-1-if1}
-| | ... | ${dut1-memif-1-if1_ip6} | ${mem_prefix}
-| | VPP Interface Set IP Address | ${dut1} | ${dut1-memif-1-if2}
-| | ... | ${dut1-memif-1-if2_ip6} | ${mem_prefix}
-| | VPP Interface Set IP Address
-| | ... | ${dut2} | ${dut2_if1} | ${dut2_if1_ip6} | ${prefix}
-| | VPP Interface Set IP Address
-| | ... | ${dut2} | ${dut2_if2} | ${dut2_if2_ip6} | ${prefix}
-| | VPP Interface Set IP Address | ${dut2} | ${dut2-memif-1-if1}
-| | ... | ${dut2-memif-1-if1_ip6} | ${mem_prefix}
-| | VPP Interface Set IP Address | ${dut2} | ${dut2-memif-1-if2}
-| | ... | ${dut2-memif-1-if2_ip6} | ${mem_prefix}
-| | Vpp All Ra Suppress Link Layer | ${nodes}
-| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | ${dut2_if1_ip6} | ${dut2_if1_mac}
-| | VPP Add IP Neighbor
-| | ... | ${dut2} | ${dut2_if1} | ${dut1_if2_ip6} | ${dut1_if2_mac}
-| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if1} | ${tg_if1_ip6_subnet}2 | ${tg_if1_mac}
-| | VPP Add IP Neighbor
-| | ... | ${dut2} | ${dut2_if2} | ${tg_if2_ip6_subnet}2 | ${tg_if2_mac}
-| | ${dut1-memif-1-if2_mac}= | Get Interface MAC | ${dut1} | memif2
-| | ${dut2-memif-1-if2_mac}= | Get Interface MAC | ${dut2} | memif2
-| | VPP Add IP Neighbor | ${dut1}
-| | ... | ${dut1-memif-1-if1} | ${dut1_nh} | ${dut1-memif-1-if2_mac}
-| | VPP Add IP Neighbor | ${dut2}
-| | ... | ${dut2-memif-1-if1} | ${dut2_nh} | ${dut2-memif-1-if2_mac}
-| | Vpp Route Add | ${dut1} | ${dut2_sid1} | ${sid_prefix}
-| | ... | gateway=${dut2_if1_ip6} | interface=${dut1_if2}
-| | Vpp Route Add | ${dut1} | ${out_sid2_1} | ${sid_prefix}
-| | ... | gateway=${tg_if1_ip6_subnet}2 | interface=${dut1_if1}
-| | Vpp Route Add | ${dut2} | ${dut1_sid2} | ${sid_prefix}
-| | ... | gateway=${dut1_if2_ip6} | interface=${dut2_if1}
-| | Vpp Route Add | ${dut2} | ${out_sid1_1} | ${sid_prefix}
-| | ... | gateway=${tg_if2_ip6_subnet}2 | interface=${dut2_if2}
-# Configure SRv6 for direction0 on DUT1
-| | Set SR Encaps Source Address on DUT | ${dut1} | ${dut1_sid1}
-| | @{sid_list_dir0}= | Create List | ${dut2_sid1} | ${out_sid1_1}
-| | ... | ${out_sid1_2}
-| | Configure SR Policy on DUT | ${dut1} | ${dut1_bsid} | encap
-| | ... | @{sid_list_dir0}
-| | Configure SR Steer on DUT | ${dut1} | L3 | ${dut1_bsid}
-| | ... | ip_addr=${tg_if2_ip6_subnet} | prefix=${sid_prefix}
-# Configure SRv6 for direction1 on DUT2
-| | Set SR Encaps Source Address on DUT | ${dut2} | ${dut2_sid2}
-| | @{sid_list_dir1}= | Create List | ${dut1_sid2} | ${out_sid2_1}
-| | ... | ${out_sid2_2}
-| | Configure SR Policy on DUT | ${dut2} | ${dut2_bsid} | encap
-| | ... | @{sid_list_dir1}
-| | Configure SR Steer on DUT | ${dut2} | L3 | ${dut2_bsid}
-| | ... | ip_addr=${tg_if1_ip6_subnet} | prefix=${sid_prefix}
-# Configure SRv6 for direction0 on DUT2
-| | ${dut2_out_if}= | Get Interface Name | ${dut2} | memif1
-| | ${dut2_in_if}= | Get Interface Name | ${dut2} | memif2
-| | Remove Values From List | ${sid_list_dir0} | ${dut2_sid1}
-| | Run Keyword If | "${behavior}" == "static_proxy"
-| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1} | end.as
-| | ... | ${NONE} | ${dut2_nh} | ${NONE} | ${dut2_out_if} | ${dut2_in_if}
-| | ... | ${dut1_sid1} | @{sid_list_dir0}
-| | ... | ELSE IF | "${behavior}" == "dynamic_proxy"
-| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1} | end.ad
-| | ... | next_hop=${dut2_nh} | out_if=${dut2_out_if} | in_if=${dut2_in_if}
-| | ... | ELSE IF | "${behavior}" == "masquerading"
-| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1} | end.am
-| | ... | next_hop=${dut2_nh} | out_if=${dut2_out_if} | in_if=${dut2_in_if}
-| | ... | ELSE | Fail | Unsupported behaviour: ${behavior}
-# Configure SRv6 for direction1 on DUT1
-| | ${dut1_out_if}= | Get Interface Name | ${dut1} | memif1
-| | ${dut1_in_if}= | Get Interface Name | ${dut1} | memif2
-| | Remove Values From List | ${sid_list_dir1} | ${dut1_sid2}
-| | Run Keyword If | "${behavior}" == "static_proxy"
-| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2} | end.as
-| | ... | ${NONE} | ${dut1_nh} | ${NONE} | ${dut1_out_if} | ${dut1_in_if}
-| | ... | ${dut2_sid2} | @{sid_list_dir1}
-| | ... | ELSE IF | "${behavior}" == "dynamic_proxy"
-| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2} | end.ad
-| | ... | next_hop=${dut1_nh} | out_if=${dut1_out_if} | in_if=${dut1_in_if}
-| | ... | ELSE IF | "${behavior}" == "masquerading"
-| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2} | end.am
-| | ... | next_hop=${dut1_nh} | out_if=${dut1_out_if} | in_if=${dut1_in_if}
-| | ... | ELSE | Fail | Unsupported behaviour: ${behavior}
-| | Set interfaces in path up
-
-| Configure IPv4 ACLs
-| | [Documentation]
-| | ... | Configure ACL with required number of not-hitting permit ACEs plus two
-| | ... | hitting ACEs for both traffic directions.
-| | ...
-| | ... | *Arguments:*
-| | ... | - dut_node - DUT node. Type: dictionary
-| | ... | - dut_if1 - DUT node interface1 name (Optional). Type: string
-| | ... | - dut_if2 - DUT node interface2 name (Optional). Type: string
-| | ...
-| | ... | *Example:*
-| | ...
-| | ... | \| Configure IPv4 ACLs \| ${nodes['DUT1']} \| GigabitEthernet0/7/0 \
-| | ... | \| GigabitEthernet0/8/0 \|
-| | ...
-| | ... | _NOTE:_ This KW uses following test case variables:
-| | ... | - src_ip_start - Source IP address start. Type: string
-| | ... | - dst_ip_start - Destination IP address start. Type: string
-| | ... | - ip_step - IP address step. Type: string
-| | ... | - sport_start - Source port number start. Type: string
-| | ... | - dport_start - Destination port number start. Type: string
-| | ... | - port_step - Port number step. Type: string
-| | ... | - no_hit_aces_number - Number of not-hitting ACEs to be configured.
-| | ... | Type: integer
-| | ... | - acl_apply_type - To what path apply the ACL - input or output.
-| | ... | Type: string
-| | ... | - acl_action - Action for the rule - deny, permit, permit+reflect.
-| | ... | Type: string
-| | ... | - trex_stream1_subnet - IP subnet used by T-Rex in direction 0->1.
-| | ... | Type: string
-| | ... | - trex_stream2_subnet - IP subnet used by T-Rex in direction 1->0.
-| | ... | Type: string
-| | ...
-| | [Arguments] | ${dut} | ${dut_if1}=${NONE} | ${dut_if2}=${NONE}
-| | ${src_ip_int} = | Evaluate
-| | ... | int(ipaddress.ip_address(unicode($src_ip_start))) - $ip_step
-| | ... | modules=ipaddress
-| | ${dst_ip_int} = | Evaluate
-| | ... | int(ipaddress.ip_address(unicode($dst_ip_start))) - $ip_step
-| | ... | modules=ipaddress
-| | ${ip_limit} = | Set Variable | 255.255.255.255
-| | ${ip_limit_int} = | Evaluate
-| | ... | int(ipaddress.ip_address(unicode($ip_limit))) | modules=ipaddress
-| | ${sport}= | Evaluate | $sport_start - $port_step
-| | ${dport}= | Evaluate | $dport_start - $port_step
-| | ${port_limit}= | Set Variable | ${65535}
-| | ${acl}= | Set Variable | ipv4 permit
-| | :FOR | ${nr} | IN RANGE | 0 | ${no_hit_aces_number}
-| | | ${src_ip_int} = | Evaluate | $src_ip_int + $ip_step
-| | | ${dst_ip_int} = | Evaluate | $dst_ip_int + $ip_step
-| | | ${sport}= | Evaluate | $sport + $port_step
-| | | ${dport}= | Evaluate | $dport + $port_step
-| | | ${ipv4_limit_reached}= | Set Variable If
-| | | ... | $src_ip_int > $ip_limit_int or $src_ip_int > $ip_limit_int
-| | | ... | ${TRUE}
-| | | ${udp_limit_reached}= | Set Variable If
-| | | ... | $sport > $port_limit or $dport > $port_limit | ${TRUE}
-| | | Run Keyword If | $ipv4_limit_reached is True | Log
-| | | ... | Can't do more iterations - IPv4 address limit has been reached.
-| | | ... | WARN
-| | | Run Keyword If | $udp_limit_reached is True | Log
-| | | ... | Can't do more iterations - UDP port limit has been reached.
-| | | ... | WARN
-| | | ${src_ip} = | Run Keyword If | $ipv4_limit_reached is True
-| | | ... | Set Variable | ${ip_limit}
-| | | ... | ELSE | Evaluate | str(ipaddress.ip_address($src_ip_int))
-| | | ... | modules=ipaddress
-| | | ${dst_ip} = | Run Keyword If | $ipv4_limit_reached is True
-| | | ... | Set Variable | ${ip_limit}
-| | | ... | ELSE | Evaluate | str(ipaddress.ip_address($dst_ip_int))
-| | | ... | modules=ipaddress
-| | | ${sport}= | Set Variable If | ${sport} > $port_limit | $port_limit
-| | | ... | ${sport}
-| | | ${dport}= | Set Variable If | ${dport} > $port_limit | $port_limit
-| | | ... | ${dport}
-| | | ${acl}= | Catenate | ${acl} | src ${src_ip}/32 dst ${dst_ip}/32
-| | | ... | sport ${sport} | dport ${dport},
-| | | Exit For Loop If
-| | | ... | $ipv4_limit_reached is True or $udp_limit_reached is True
-| | ${acl}= | Catenate | ${acl}
-| | ... | ipv4 ${acl_action} src ${trex_stream1_subnet},
-| | ... | ipv4 ${acl_action} src ${trex_stream2_subnet}
-| | Add Replace Acl Multi Entries | ${dut} | rules=${acl}
-| | @{acl_list}= | Create List | ${0}
-| | Run Keyword If | 'input' in $acl_apply_type and $dut_if1 is not None
-| | ... | Set Acl List For Interface | ${dut} | ${dut_if1} | input | ${acl_list}
-| | Run Keyword If | 'input' in $acl_apply_type and $dut_if2 is not None
-| | ... | Set Acl List For Interface | ${dut} | ${dut_if2} | input | ${acl_list}
-| | Run Keyword If | 'output' in $acl_apply_type and $dut_if1 is not None
-| | ... | Set Acl List For Interface | ${dut} | ${dut_if1} | output
-| | ... | ${acl_list}
-| | Run Keyword If | 'output' in $acl_apply_type and $dut_if2 is not None
-| | ... | Set Acl List For Interface | ${dut} | ${dut_if2} | output
-| | ... | ${acl_list}
-
-| Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
-| | [Documentation]
-| | ... | Set UP state on VPP interfaces in path on nodes in 2-node / 3-node
-| | ... | circular topology. Get the interface MAC addresses and setup ARP on
-| | ... | all VPP interfaces. Setup IPv4 addresses with /24 prefix on DUT-TG
-| | ... | links. In case of 3-node topology setup IPv4 adresses with /30 prefix
-| | ... | on DUT1-DUT2 link and set routing on both DUT nodes with prefix /24
-| | ... | and next hop of neighbour DUT interface IPv4 address.
-| | ... | Apply required ACL rules to DUT1 interfaces.
-| | ...
-| | ... | *Arguments:*
-| | ... | - ip_nr - Number of IPs to be used. Type: integer or string
-| | ...
-| | ... | *Example:*
-| | ...
-| | ... | \| Initialize IPv4 routing for '10' addresses with IPv4 ACLs on DUT1 \
-| | ... | in 3-node circular topology \|
-| | ...
-| | ... | _NOTE:_ This KW uses following test case variables:
-| | ... | - tg - TG node.
-| | ... | - dut1 - DUT1 node.
-| | ... | - dut2 - DUT2 node.
-| | ... | - tg_if1 - TG interface 1 towards DUT1.
-| | ... | - tg_if2 - TG interface 2 towards DUT2 (3-node topo) or DUT1
-| | ... | (2-node topo).
-| | ... | - dut1_if1 - DUT1 interface 1 towards TG.
-| | ... | - dut1_if2 - DUT1 interface 2 towards DUT2 (3-node topo) or TG
-| | ... | (2-node topo).
-| | ... | - dut2_if1 - DUT2 interface 1 towards DUT1.
-| | ... | - dut2_if2 - DUT2 interface 2 towards TG.
-| | ...
-| | ${dut2_status} | ${value}= | Run Keyword And Ignore Error
-| | ... | Variable Should Exist | ${dut2}
-| | ${dut}= | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Set Variable | ${dut2}
-| | ... | ELSE | Set Variable | ${dut1}
-| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Set Variable | ${dut2_if2}
-| | ... | ELSE | Set Variable | ${dut1_if2}
-| | ...
-| | Set interfaces in path up
-| | ...
-| | :FOR | ${number} | IN RANGE | 2 | ${ip_nr}+2
-| | | VPP Add IP Neighbor
-| | | ... | ${dut1} | ${dut1_if1} | 10.10.10.${number} | ${tg_if1_mac}
-| | | VPP Add IP Neighbor
-| | | ... | ${dut} | ${dut_if2} | 20.20.20.${number} | ${tg_if2_mac}
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | 1.1.1.2 | ${dut2_if1_mac}
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | VPP Add IP Neighbor
-| | ... | ${dut2} | ${dut2_if1} | 1.1.1.1 | ${dut1_if2_mac}
-| | ...
-| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if1} | 10.10.10.1 | 24
-| | VPP Interface Set IP Address
-| | ... | ${dut} | ${dut_if2} | 20.20.20.1 | 24
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if2} | 1.1.1.1 | 30
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | VPP Interface Set IP Address
-| | ... | ${dut2} | ${dut2_if1} | 1.1.1.2 | 30
-| | ...
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | gateway=1.1.1.2
-| | ... | interface=${dut1_if2}
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | gateway=1.1.1.1
-| | ... | interface=${dut2_if1}
-| | ...
-| | Configure IPv4 ACLs | ${dut1} | ${dut1_if1} | ${dut1_if2}
-
-| Configure MACIP ACLs
-| | [Documentation]
-| | ... | Configure MACIP ACL with required number of not-hitting permit ACEs
-| | ... | plus two hitting ACEs for both traffic directions.
-| | ...
-| | ... | *Arguments:*
-| | ... | - dut_node - DUT node. Type: dictionary
-| | ... | - dut_if1 - DUT node interface1 name (Optional). Type: string
-| | ... | - dut_if2 - DUT node interface2 name (Optional). Type: string
-| | ...
-| | ... | *Example:*
-| | ...
-| | ... | \| Configure MACIP ACLs \| ${nodes['DUT1']} \| GigabitEthernet0/7/0 \
-| | ... | \| GigabitEthernet0/8/0 \|
-| | ...
-| | ... | _NOTE:_ This KW uses following test case variables:
-| | ... | - src_ip_start - Source IP address start. Type: string
-| | ... | - ip_step - IP address step. Type: string
-| | ... | - src_mac_start - Source MAC address start in format with colons.
-| | ... | Type: string
-| | ... | - src_mac_step - Source MAC address step. Type: string
-| | ... | - src_mac_mask - Source MAC address mask. 00:00:00:00:00:00 is a
-| | ... | wildcard mask. Type: string
-| | ... | - no_hit_aces_number - Number of not-hitting ACEs to be configured.
-| | ... | Type: integer
-| | ... | - acl_action - Action for the rule - deny, permit, permit+reflect.
-| | ... | Type: string
-| | ... | - tg_stream1_subnet - IP subnet used by TG in direction 0->1.
-| | ... | Type: string
-| | ... | - tg_stream2_subnet - IP subnet used by TG in direction 1->0.
-| | ... | Type: string
-| | ... | - tg_stream1_mac - Source MAC address of traffic stream 1.
-| | ... | Type: string
-| | ... | - tg_stream2_mac - Source MAC address of traffic stream 2.
-| | ... | Type: string
-| | ... | - tg_mac_mask - MAC address mask for traffic streams.
-| | ... | 00:00:00:00:00:00 is a wildcard mask. Type: string
-| | ...
-| | [Arguments] | ${dut} | ${dut_if1}=${NONE} | ${dut_if2}=${NONE}
-| | ...
-| | ${src_ip_int} = | IP To Int | ${src_ip_start}
-| | ${src_ip_int} = | Evaluate | ${src_ip_int} - ${ip_step}
-| | ...
-| | ${ip_limit} = | Set Variable | 255.255.255.255
-| | ${ip_limit_int} = | IP To Int | ${ip_limit}
-| | ...
-| | ${src_mac_int} = | Mac To Int | ${src_mac_start}
-| | ${src_mac_int} = | Evaluate | ${src_mac_int} - ${src_mac_step}
-| | ...
-| | ${mac_limit} = | Set Variable | ff:ff:ff:ff:ff:ff
-| | ${mac_limit_int} = | Mac To Int | ${mac_limit}
-| | ...
-| | ${acl}= | Set Variable | ipv4 permit
-| | :FOR | ${nr} | IN RANGE | 0 | ${no_hit_aces_number}
-| | | ${src_ip_int} = | Evaluate | ${src_ip_int} + ${ip_step}
-| | | ${src_mac_int} = | Evaluate | ${src_mac_int} + ${src_mac_step}
-| | | ${ipv4_limit_reached}= | Set Variable If
-| | | ... | ${src_ip_int} > ${ip_limit_int} | ${TRUE}
-| | | ${mac_limit_reached}= | Set Variable If
-| | | ... | ${src_mac_int} > ${mac_limit_int} | ${TRUE}
-| | | Run Keyword If | '${ipv4_limit_reached}' == '${TRUE}' | Log
-| | | ... | Can't do more iterations - IPv4 address limit has been reached.
-| | | ... | WARN
-| | | Run Keyword If | '${mac_limit_reached}' == '${TRUE}' | Log
-| | | ... | Can't do more iterations - MAC address limit has been reached.
-| | | ... | WARN
-| | | ${src_ip} = | Run Keyword If | '${ipv4_limit_reached}' == '${TRUE}'
-| | | ... | Set Variable | ${ip_limit}
-| | | ... | ELSE | Int To IP | ${src_ip_int}
-| | | ${src_mac}= | Run Keyword If | '${mac_limit_reached}' == '${TRUE}'
-| | | ... | Set Variable | ${mac_limit}
-| | | ... | ELSE | Int To Mac | ${src_mac_int}
-| | | ${acl}= | Catenate | ${acl} | ip ${src_ip}/32
-| | | ... | mac ${src_mac} | mask ${src_mac_mask},
-| | | Exit For Loop If | '${ipv4_limit_reached}' == '${TRUE}' or '${mac_limit_reached}' == '${TRUE}'
-| | ${acl0}= | Catenate | ${acl}
-| | ... | ipv4 ${acl_action} ip ${tg_stream1_subnet} mac ${tg_stream1_mac}
-| | ... | mask ${tg_mac_mask}
-| | ${acl1}= | Catenate | ${acl}
-| | ... | ipv4 ${acl_action} ip ${tg_stream2_subnet} mac ${tg_stream2_mac}
-| | ... | mask ${tg_mac_mask}
-| | Add Macip Acl Multi Entries | ${dut} | rules=${acl0}
-| | Add Macip Acl Multi Entries | ${dut} | rules=${acl1}
-| | ${acl_idx}= | Set Variable | 0
-| | Run Keyword Unless | '${dut_if1}' == '${NONE}'
-| | ... | Add Del Macip Acl Interface | ${dut} | ${dut_if1} | add | ${acl_idx}
-| | ${acl_idx}= | Set Variable | 1
-| | Run Keyword Unless | '${dut_if2}' == '${NONE}'
-| | ... | Add Del Macip Acl Interface | ${dut} | ${dut_if2} | add | ${acl_idx}
-
 | Initialize LISP IPv4 forwarding in 3-node circular topology
 | | [Documentation] | Custom setup of IPv4 addresses on all DUT nodes and TG \
 | | ... | Don`t set route.
 | | ... | ${dut1} | ${dut1_if2} | ${dut2_dut1_ip4_address} | ${dut2_if1_mac}
 | | VPP Add IP Neighbor
 | | ... | ${dut2} | ${dut2_if1} | ${dut1_dut2_ip4_address} | ${dut1_if2_mac}
-
-| Initialize NAT44 in circular topology
-| | [Documentation] | Initialization of 2-node / 3-node topology with NAT44
-| | ... | between DUTs:
-| | ... | - set interfaces up
-| | ... | - set IP addresses
-| | ... | - set ARP
-| | ... | - create routes
-| | ... | - set NAT44 - only on DUT1
-| | ...
-| | ${dut2_status} | ${value}= | Run Keyword And Ignore Error
-| | ... | Variable Should Exist | ${dut2}
-| | ...
-| | Set interfaces in path up
-| | ...
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1} | 10.0.0.1 | 20
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | VPP Interface Set IP Address | ${dut1} | ${dut1_if2}
-| | ... | 11.0.0.1 | 20
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | VPP Interface Set IP Address | ${dut2} | ${dut2_if1}
-| | ... | 11.0.0.2 | 20
-| | ${dut}= | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Set Variable | ${dut2}
-| | ... | ELSE | Set Variable | ${dut1}
-| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Set Variable | ${dut2_if2}
-| | ... | ELSE | Set Variable | ${dut1_if2}
-| | VPP Interface Set IP Address | ${dut} | ${dut_if2} | 12.0.0.1 | 20
-| | ...
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 10.0.0.2 | ${tg_if1_mac}
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | 11.0.0.2 | ${dut2_if1_mac}
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | VPP Add IP Neighbor
-| | ... | ${dut2} | ${dut2_if1} | 11.0.0.1 | ${dut1_if2_mac}
-| | VPP Add IP Neighbor | ${dut} | ${dut_if2} | 12.0.0.2 | ${tg_if2_mac}
-| | ...
-| | Vpp Route Add | ${dut1} | 20.0.0.0 | 18 | gateway=10.0.0.2
-| | ... | interface=${dut1_if1}
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Vpp Route Add | ${dut1} | 12.0.0.2 | 32 | gateway=11.0.0.2
-| | ... | interface=${dut1_if2}
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Vpp Route Add | ${dut2} | 12.0.0.0 | 24 | gateway=12.0.0.2
-| | ... | interface=${dut2_if2}
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Vpp Route Add | ${dut2} | 200.0.0.0 | 30 | gateway=11.0.0.1
-| | ... | interface=${dut2_if1}
-| | ...
-| | Configure inside and outside interfaces
-| | ... | ${dut1} | ${dut1_if1} | ${dut1_if2}
-| | Configure deterministic mode for NAT44
-| | ... | ${dut1} | 20.0.0.0 | 18 | 200.0.0.0 | 30
-
-| Configure ACLs on a single interface
-| | [Documentation]
-| | ... | Configure ACL
-| | ...
-| | ... | *Arguments:*
-| | ... | - dut - DUT node. Type: string
-| | ... | - dut_if - DUT node interface name. Type: string
-| | ... | - acl_apply_type - To what path apply the ACL - input or output.
-| | ... | - acl_action - Action for the rule - deny, permit, permit+reflect.
-| | ... | - subnets - Subnets to apply the specific ACL. Type: list
-| | ...
-| | ... | *Example:*
-| | ...
-| | ... | \| Configure ACLs on a single interface \| ${nodes['DUT1']}
-| | ... | \| ... \| GigabitEthernet0/7/0 \| input \| permit | 0.0.0.0/0
-| | ...
-| | [Arguments] | ${dut} | ${dut_if} | ${acl_apply_type} | ${acl_action}
-| | ... | @{subnets}
-| | Set Test variable | ${acl} | ${EMPTY}
-| | :FOR | ${subnet} | IN | @{subnets}
-| | | ${acl} = | Run Keyword If | '${acl}' == '${EMPTY}'
-| | | ... | Set Variable | ipv4 ${acl_action} src ${subnet}
-| | | ... | ELSE
-| | | ... | Catenate | SEPARATOR=", " | ${acl}
-| | | ... | ipv4 ${acl_action} src ${subnet}
-| | Add Replace Acl Multi Entries | ${dut} | rules=${acl}
-| | @{acl_list} = | Create List | ${0}
-| | Set Acl List For Interface | ${dut} | ${dut_if} | ${acl_apply_type}
-| | ... | ${acl_list}
index 8507ae6..7f97137 100644 (file)
 | Library | resources.libraries.python.TrafficGenerator.OptimizedSearch
 | Library | resources.libraries.python.TrafficGenerator.TGDropRateSearchImpl
 | Library | resources.libraries.python.Trace
-| Resource | resources/libraries/robot/shared/default.robot
-| Resource | resources/libraries/robot/shared/interfaces.robot
-| Resource | resources/libraries/robot/shared/counters.robot
-| Resource | resources/libraries/robot/shared/container.robot
-| Resource | resources/libraries/robot/shared/memif.robot
-| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
-| Resource | resources/libraries/robot/l2/l2_xconnect.robot
-| Resource | resources/libraries/robot/ip/ip4.robot
-| Resource | resources/libraries/robot/ip/ip6.robot
-| Resource | resources/libraries/robot/l2/tagging.robot
-| Documentation | Performance suite keywords - utilities to find and verify NDR
-| ... | and PDR.
+| ...
+| Documentation
+| ... | Performance suite keywords - utilities to find and verify NDR and PDR.
 
 *** Keywords ***
 | Find NDR and PDR intervals using optimized search
index 728e8c8..2746a1a 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2016 Cisco and/or its affiliates.
+# Copyright (c) 2019 Cisco and/or its affiliates.
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at:
 # limitations under the License.
 
 *** Settings ***
-| Documentation | VPP counters keywords
 | Library | resources.libraries.python.VppCounters
+| ...
+| Documentation | VPP counters keywords
 
 *** Keywords ***
-| Clear interface counters on all vpp nodes in topology
-| | [Documentation] | Clear interface counters on all VPP nodes in topology
-| | [Arguments] | ${nodes}
-| | Clear Interface Counters on all DUTs | ${nodes}
-
 | Clear all counters on all DUTs
 | | [Documentation] | Clear runtime, interface, hardware and error counters
 | | ... | on all DUTs with VPP instance
index d867e79..751fbc3 100644 (file)
@@ -30,6 +30,7 @@
 | Library | resources.libraries.python.PapiHistory
 | Library | resources.libraries.python.SchedUtils
 | Library | resources.libraries.python.Tap
+| Library | resources.libraries.python.TestConfig
 | Library | resources.libraries.python.TGSetup
 | Library | resources.libraries.python.topology.Topology
 | Library | resources.libraries.python.Trace
@@ -53,6 +54,7 @@
 | Resource | resources/libraries/robot/shared/counters.robot
 | Resource | resources/libraries/robot/shared/interfaces.robot
 | Resource | resources/libraries/robot/shared/container.robot
+| Resource | resources/libraries/robot/shared/memif.robot
 | Resource | resources/libraries/robot/shared/suite_teardown.robot
 | Resource | resources/libraries/robot/shared/suite_setup.robot
 | Resource | resources/libraries/robot/shared/test_teardown.robot
index 173a52e..9a0728a 100644 (file)
 | | ... | --src_mac ${src_mac} | --dst_ip ${dst_ip} | --src_ip ${src_ip}
 | | ... | --timeout ${timeout}
 | | Run Traffic Script On Node | send_icmp_wait_for_reply.py
-| | ... | ${tg_node} | ${args}
\ No newline at end of file
+| | ... | ${tg_node} | ${args}
+
+| Send IPsec Packet and verify ESP encapsulation in received packet
+| | [Documentation] | Send IPsec packet from TG to DUT. Receive IPsec packet\
+| | ... | from DUT on TG and verify ESP encapsulation.
+| | ...
+| | ... | *Arguments:*
+| | ... | - node - TG node. Type: dictionary
+| | ... | - interface - TG Interface. Type: string
+| | ... | - dst_mac - Destination MAC. Type: string
+| | ... | - crypto_alg - Encrytion algorithm. Type: enum
+| | ... | - crypto_key - Encryption key. Type: string
+| | ... | - integ_alg - Integrity algorithm. Type: enum
+| | ... | - integ_key - Integrity key. Type: string
+| | ... | - l_spi - Local SPI. Type: integer
+| | ... | - r_spi - Remote SPI. Type: integer
+| | ... | - l_ip - Local IP address. Type: string
+| | ... | - r_ip - Remote IP address. Type: string
+| | ... | - l_tunnel - Local tunnel IP address (optional). Type: string
+| | ... | - r_tunnel - Remote tunnel IP address (optional). Type: string
+| | ...
+| | ... | *Example:*
+| | ... | \| ${encr_alg}= \| Crypto Alg AES CBC 128 \|
+| | ... | \| ${auth_alg}= \| Integ Alg SHA1 96 \|
+| | ... | \| Send IPsec Packet and verify ESP encapsulation in received packet\
+| | ... | \| ${nodes['TG']} \| eth1 \
+| | ... | \| 52:54:00:d4:d8:22 \| ${encr_alg} \| sixteenbytes_key \
+| | ... | \| ${auth_alg} \| twentybytessecretkey \| ${1001} \| ${1000} \
+| | ... | \| 192.168.3.3 \| 192.168.4.4 \| 192.168.100.2 \| 192.168.100.3 \|
+| | ...
+| | [Arguments] | ${node} | ${interface} | ${dst_mac} | ${crypto_alg}
+| | ... | ${crypto_key} | ${integ_alg} | ${integ_key} | ${l_spi}
+| | ... | ${r_spi} | ${l_ip} | ${r_ip} | ${l_tunnel}=${None}
+| | ... | ${r_tunnel}=${None}
+| | ...
+| | ${src_mac}= | Get Interface Mac | ${node} | ${interface}
+| | ${if_name}= | Get Interface Name | ${node} | ${interface}
+| | ${args}= | Traffic Script Gen Arg | ${if_name} | ${if_name} | ${src_mac}
+| | ... | ${dst_mac} | ${l_ip} | ${r_ip}
+| | ${crypto_alg_str}= | Get Crypto Alg Scapy Name | ${crypto_alg}
+| | ${integ_alg_str}= | Get Integ Alg Scapy Name | ${integ_alg}
+| | ${args}= | Catenate | ${args} | --crypto_alg ${crypto_alg_str}
+| | ... | --crypto_key ${crypto_key} | --integ_alg ${integ_alg_str}
+| | ... | --integ_key ${integ_key} | --l_spi ${l_spi} | --r_spi ${r_spi}
+| | ${args}= | Set Variable If | "${l_tunnel}" == "${None}" | ${args}
+| | ... | ${args} --src_tun ${l_tunnel}
+| | ${args}= | Set Variable If | "${r_tunnel}" == "${None}" | ${args}
+| | ... | ${args} --dst_tun ${r_tunnel}
+| | Run Traffic Script On Node | ipsec.py | ${node} | ${args}
index 184715e..b922771 100644 (file)
@@ -26,7 +26,7 @@
 | ... | Setup DUT nodes for 'Classifier' functional testing
 | Test Setup | Run Keywords | Save VPP PIDs | AND
 | ... | Reset PAPI History On All DUTs | ${nodes} | AND
-| ... | Clear interface counters on all vpp nodes in topology | ${nodes}
+| ... | Clear Interface Counters on all DUTs | ${nodes}
 | Test Teardown | Run Keywords
 | ... | Show packet trace on all DUTs | ${nodes} | AND
 | ... | Show PAPI History On All DUTs | ${nodes} | AND
index 9733576..518ed2a 100644 (file)
@@ -26,7 +26,7 @@
 | ... | Setup DUT nodes for 'Proxy Inbound' functional testing
 | Test Setup | Run Keywords | Save VPP PIDs | AND
 | ... | Reset PAPI History On All DUTs | ${nodes} | AND
-| ... | Clear interface counters on all vpp nodes in topology | ${nodes}
+| ... | Clear Interface Counters on all DUTs | ${nodes}
 | Test Teardown | Run Keywords
 | ... | Show packet trace on all DUTs | ${nodes} | AND
 | ... | Show PAPI History On All DUTs | ${nodes} | AND
index 8bddfc9..b228511 100644 (file)
@@ -26,7 +26,7 @@
 | ... | Setup DUT nodes for 'Proxy Outbound' functional testing
 | Test Setup | Run Keywords | Save VPP PIDs | AND
 | ... | Reset PAPI History On All DUTs | ${nodes} | AND
-| ... | Clear interface counters on all vpp nodes in topology | ${nodes}
+| ... | Clear Interface Counters on all DUTs | ${nodes}
 | Test Teardown | Run Keywords
 | ... | Show packet trace on all DUTs | ${nodes} | AND
 | ... | Show PAPI History On All DUTs | ${nodes} | AND
index 382436a..e86c659 100644 (file)
@@ -26,7 +26,7 @@
 | ... | Setup DUT nodes for 'SFF' functional testing
 | Test Setup | Run Keywords | Save VPP PIDs | AND
 | ... | Reset PAPI History On All DUTs | ${nodes} | AND
-| ... | Clear interface counters on all vpp nodes in topology | ${nodes}
+| ... | Clear Interface Counters on all DUTs | ${nodes}
 | Test Teardown | Run Keywords
 | ... | Show packet trace on all DUTs | ${nodes} | AND
 | ... | Show PAPI History On All DUTs | ${nodes} | AND
diff --git a/tests/vpp/func/l2bd/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot b/tests/vpp/func/l2bd/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot
deleted file mode 100644 (file)
index 38f370e..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-# Copyright (c) 2016 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/shared/default.robot
-| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
-| Resource | resources/libraries/robot/shared/testing_path.robot
-| Resource | resources/libraries/robot/l2/tagging.robot
-| Resource | resources/libraries/robot/l2/l2_traffic.robot
-| Library  | resources.libraries.python.Trace
-| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH
-| Test Setup | Set up functional test
-| Test Teardown | Tear down functional test
-| Documentation | *L2BD with VLAN tag rewrite test cases - transalte-2-1*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet encapsulations:* Eth-dot1ad-IPv4-ICMPv4 or
-| ... | Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, Eth-dot1q-IPv4-ICMPv4 or
-| ... | Eth-dot1q-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv4-ICMPv4 or Eth-IPv6-ICMPv6
-| ... | on TG-DUT2 for L2 switching of IPv4/IPv6.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with bridge domain (L2BD)
-| ... | switching combined with MAC learning enabled and added VLAN
-| ... | sub-interface with VLAN tag rewrite translate-2-1 method of interface
-| ... | towards TG and interface towards DUT2. DUT2 is configured with L2
-| ... | bridge domain (L2BD) switching between VLAN sub-interface with VLAN tag
-| ... | rewrite pop-1 method of interface towards DUT1 and interface towards TG.
-| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are
-| ... | sent from TG on link to DUT1 and received in TG on link form DUT2;
-| ... | on receive TG verifies packets for correctness and their IPv4 src-addr,
-| ... | dst-addr and MAC addresses.
-| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad.
-
-*** Variables ***
-| ${bd_id1}= | 1
-
-| ${subid}= | 10
-
-| ${outer_vlan_id1}= | 110
-| ${outer_vlan_id2}= | 120
-| ${outer_vlan_wrong}= | 150
-
-| ${inner_vlan_id1}= | 210
-
-| ${src_ip6}= | 3ffe:63::1
-| ${dst_ip6}= | 3ffe:63::2
-
-*** Test Cases ***
-| TC01: DUT1 and DUT2 with L2BD and VLAN translate-2-1 (DUT1) switch ICMPv4 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1, \
-| | ... | Eth-dot1q-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2.
-| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to
-| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite
-| | ... | translate-2-1 method; on DUT2 configure L2 bridge domain (L2BD) with
-| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with
-| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv4 Echo Req
-| | ... | tagged with Dot1ad tags from one of its interfaces to another one
-| | ... | via DUT1 and DUT2; verify that packet is received.
-| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2}
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_id2}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-1
-| | And Create bridge domain | ${dut1_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index}
-| | ...                                     | ${bd_id1}
-| | And Create bridge domain | ${dut2_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index}
-| | ...                                     | ${bd_id1}
-| | Then Send ICMP packet and verify received packet
-| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1ad
-| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1}
-
-| TC02: DUT1 and DUT2 with L2BD and VLAN translate-2-1 with wrong tag used (DUT1) switch ICMPv4 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1, \
-| | ... | Eth-dot1q-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2.
-| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to
-| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite
-| | ... | translate-2-1 method to set tag different from tag set on VLAN
-| | ... | sub-interface of DUT2; on DUT2 configure L2 bridge domain (L2BD) with
-| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with
-| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv4 Echo Req
-| | ... | tagged with Dot1ad tags from one of its interfaces to another one
-| | ... | via DUT1 and DUT2; verify that packet is not received.
-| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad
-| | [Tags] | SKIP_PATCH
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2}
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_wrong}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-1
-| | And Create bridge domain | ${dut1_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index}
-| | ...                                     | ${bd_id1}
-| | And Create bridge domain | ${dut2_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index}
-| | ...                                     | ${bd_id1}
-| | Then Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1}
-| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1}
-| | ... | vlan2=${inner_vlan_id1}
-
-
-| TC03: DUT1 and DUT2 with L2BD and VLAN translate-2-1 (DUT1) switch ICMPv6 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, \
-| | ... | Eth-dot1q-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2.
-| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to
-| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite
-| | ... | translate-2-1 method; on DUT2 configure L2 bridge domain (L2BD) with
-| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with
-| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv6 Echo Req
-| | ... | tagged with Dot1ad tags from one of its interfaces to another one
-| | ... | via DUT1 and DUT2; verify that packet is received.
-| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2}
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_id2}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-1
-| | And Create bridge domain | ${dut1_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index}
-| | ...                                     | ${bd_id1}
-| | And Create bridge domain | ${dut2_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index}
-| | ...                                     | ${bd_id1}
-| | Then Send ICMP packet and verify received packet
-| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip6}
-| | ... | dst_ip=${dst_ip6} | encaps=Dot1ad | vlan1=${outer_vlan_id1}
-| | ... | vlan2=${inner_vlan_id1}
-
-| TC04: DUT1 and DUT2 with L2BD and VLAN translate-2-1 with wrong tag used (DUT1) switch ICMPv6 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, \
-| | ... | Eth-dot1q-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2.
-| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to
-| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite
-| | ... | translate-2-1 method to set tag different from tag set on VLAN
-| | ... | sub-interface of DUT2; on DUT2 configure L2 bridge domain (L2BD) with
-| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with
-| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv6 Echo Req
-| | ... | tagged with Dot1ad tags from one of its interfaces to another one
-| | ... | via DUT1 and DUT2; verify that packet is not received.
-| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad
-| | [Tags] | SKIP_PATCH
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2}
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_wrong}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-1
-| | And Create bridge domain | ${dut1_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index}
-| | ...                                     | ${bd_id1}
-| | And Create bridge domain | ${dut2_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index}
-| | ...                                     | ${bd_id1}
-| | Then Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1}
-| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1ad
-| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1}
diff --git a/tests/vpp/func/l2bd/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot b/tests/vpp/func/l2bd/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot
deleted file mode 100644 (file)
index 06a4794..0000000
+++ /dev/null
@@ -1,405 +0,0 @@
-# Copyright (c) 2016 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/shared/default.robot
-| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
-| Resource | resources/libraries/robot/shared/testing_path.robot
-| Resource | resources/libraries/robot/l2/tagging.robot
-| Resource | resources/libraries/robot/l2/l2_traffic.robot
-| Library  | resources.libraries.python.Trace
-| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH
-| Test Setup | Set up functional test
-| Test Teardown | Tear down functional test
-| Documentation | *L2BD with VLAN tag rewrite test cases - translate-2-2*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet encapsulations:* Eth-dot1ad-IPv4-ICMPv4 or
-| ... | Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and DUT1-DUT2, Eth-IPv4-ICMPv4 or
-| ... | Eth-IPv6-ICMPv6 on TG-DUT2 for L2 switching of IPv4/IPv6.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with bridge domain (L2BD)
-| ... | switching combined with MAC learning enabled and added VLAN
-| ... | sub-interface with VLAN tag rewrite translate-2-2 method of interface
-| ... | towards TG and interface towards DUT2. DUT2 is configured with L2
-| ... | bridge domain (L2BD) switching between VLAN sub-interface with VLAN tag
-| ... | rewrite pop-2 method of interface towards DUT1 and interface towards TG.
-| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are
-| ... | sent from TG on link to DUT1 and received in TG on link form DUT2;
-| ... | on receive TG verifies packets for correctness and their IPv4 src-addr,
-| ... | dst-addr and MAC addresses.
-| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad.
-
-*** Variables ***
-| ${bd_id1}= | 1
-
-| ${subid}= | 10
-
-| ${outer_vlan_id1}= | 110
-| ${outer_vlan_id2}= | 120
-| ${outer_vlan_wrong}= | 150
-
-| ${inner_vlan_id1}= | 210
-| ${inner_vlan_id2}= | 220
-| ${inner_vlan_wrong}= | 250
-
-| ${src_ip6}= | 3ffe:63::1
-| ${dst_ip6}= | 3ffe:63::2
-
-*** Test Cases ***
-| TC01: DUT1 and DUT2 with L2BD and VLAN translate-2-2 switch ICMPv4 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \
-| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2
-| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad
-| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method;
-| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG and
-| | ... | one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-2
-| | ... | tagged with Dot1ad tags from one of its interfaces to another one
-| | ... | method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; verify
-| | ... | that packet is received. [Ref] IEEE 802.1ad
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2}
-| | ... | type_subif=two_tags dot1ad
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False}
-| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id2}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-2
-| | And Create bridge domain | ${dut1_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index}
-| | ...                                     | ${bd_id1}
-| | And Create bridge domain | ${dut2_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index}
-| | ...                                     | ${bd_id1}
-| | Then Send ICMP packet and verify received packet
-| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1ad
-| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1}
-
-| TC02: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong inner tag used (DUT1) switch ICMPv4 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \
-| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2
-| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad
-| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to
-| | ... | set inner tag different from inner tag set on Dot1ad sub-interface of
-| | ... | DUT2; on DUT2 configure L2 bridge domain (L2BD) with one interface to
-| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite
-| | ... | pop-2 tagged with Dot1ad tags from one of its interfaces to another
-| | ... | one method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2;
-| | ... | verify that packet is not received. [Ref] IEEE 802.1ad
-| | [Tags] | SKIP_PATCH
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2}
-| | ... | type_subif=two_tags dot1ad
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False}
-| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-2
-| | And Create bridge domain | ${dut1_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index}
-| | ...                                     | ${bd_id1}
-| | And Create bridge domain | ${dut2_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index}
-| | ...                                     | ${bd_id1}
-| | Then Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1}
-| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1}
-| | ... | vlan2=${inner_vlan_id1}
-
-| TC03: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong outer tag used (DUT1) switch ICMPv4 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \
-| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2
-| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad
-| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to
-| | ... | set outer tag different from outer tag set on Dot1ad sub-interface of
-| | ... | DUT2; on DUT2 configure L2 bridge domain (L2BD) with one interface to
-| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite
-| | ... | pop-2 tagged with Dot1ad tags from one of its interfaces to another
-| | ... | one method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2;
-| | ... | verify that packet is not received. [Ref] IEEE 802.1ad
-| | [Tags] | SKIP_PATCH
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2}
-| | ... | type_subif=two_tags dot1ad
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False}
-| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id2}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-2
-| | And Create bridge domain | ${dut1_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index}
-| | ...                                     | ${bd_id1}
-| | And Create bridge domain | ${dut2_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index}
-| | ...                                     | ${bd_id1}
-| | Then Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1}
-| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1}
-| | ... | vlan2=${inner_vlan_id1}
-
-| TC04: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong outer and inner tags used (DUT1) switch ICMPv4 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \
-| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2
-| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad
-| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to
-| | ... | set tags different from tags set on Dot1ad sub-interface of DUT2;
-| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG
-| | ... | and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-2
-| | ... | tagged with Dot1ad tags from one of its interfaces to another one
-| | ... | method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; verify
-| | ... | that packet is not received. [Ref] IEEE 802.1ad
-| | [Tags] | SKIP_PATCH
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2}
-| | ... | type_subif=two_tags dot1ad
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False}
-| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-2
-| | And Create bridge domain | ${dut1_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index}
-| | ...                                     | ${bd_id1}
-| | And Create bridge domain | ${dut2_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index}
-| | ...                                     | ${bd_id1}
-| | Then Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1}
-| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1}
-| | ... | vlan2=${inner_vlan_id1}
-
-| TC05: DUT1 and DUT2 with L2BD and VLAN translate-2-2 switch ICMPv6 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \
-| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2
-| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad
-| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method;
-| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG and
-| | ... | one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-1
-| | ... | tagged with Dot1ad tags from one of its interfaces to another one
-| | ... | method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; verify
-| | ... | that packet is received. [Ref] IEEE 802.1ad
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2}
-| | ... | type_subif=two_tags dot1ad
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False}
-| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id2}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-2
-| | And Create bridge domain | ${dut1_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index}
-| | ...                                     | ${bd_id1}
-| | And Create bridge domain | ${dut2_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index}
-| | ...                                     | ${bd_id1}
-| | Then Send ICMP packet and verify received packet
-| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip6}
-| | ... | dst_ip=${dst_ip6} | encaps=Dot1ad | vlan1=${outer_vlan_id1}
-| | ... | vlan2=${inner_vlan_id1}
-
-| TC06: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong inner tag used (DUT1) switch ICMPv6 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \
-| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2
-| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad
-| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to
-| | ... | set inner tag different from inner tag set on Dot1ad sub-interface of
-| | ... | DUT2; on DUT2 configure L2 bridge domain (L2BD) with one interface to
-| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite
-| | ... | pop-1 tagged with Dot1ad tags from one of its interfaces to another
-| | ... | one method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2;
-| | ... | verify that packet is not received. [Ref] IEEE 802.1ad
-| | [Tags] | SKIP_PATCH
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2}
-| | ... | type_subif=two_tags dot1ad
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False}
-| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-2
-| | And Create bridge domain | ${dut1_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index}
-| | ...                                     | ${bd_id1}
-| | And Create bridge domain | ${dut2_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index}
-| | ...                                     | ${bd_id1}
-| | Then Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1}
-| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1ad
-| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1}
-
-| TC07: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong outer tag used (DUT1) switch ICMPv6 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \
-| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2
-| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad
-| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to
-| | ... | set outer tag different from outer tag set on Dot1ad sub-interface of
-| | ... | DUT2; on DUT2 configure L2 bridge domain (L2BD) with one interface to
-| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite
-| | ... | pop-1 tagged with Dot1ad tags from one of its interfaces to another
-| | ... | one method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2;
-| | ... | verify that packet is not received. [Ref] IEEE 802.1ad
-| | [Tags] | SKIP_PATCH
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2}
-| | ... | type_subif=two_tags dot1ad
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False}
-| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id2}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-2
-| | And Create bridge domain | ${dut1_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index}
-| | ...                                     | ${bd_id1}
-| | And Create bridge domain | ${dut2_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index}
-| | ...                                     | ${bd_id1}
-| | Then Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1}
-| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1ad
-| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1}
-
-| TC08: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong outer and inner tags used (DUT1) switch ICMPv6 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \
-| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2
-| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad
-| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to
-| | ... | set tags different from tags set on Dot1ad sub-interface of DUT2;
-| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG
-| | ... | and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-1
-| | ... | tagged with Dot1ad tags from one of its interfaces to another one
-| | ... | method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; verify
-| | ... | that packet is not received. [Ref] IEEE 802.1ad
-| | [Tags] | SKIP_PATCH
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2}
-| | ... | type_subif=two_tags dot1ad
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False}
-| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-2
-| | And Create bridge domain | ${dut1_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index}
-| | ...                                     | ${bd_id1}
-| | And Create bridge domain | ${dut2_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg}
-| | ...                                     | ${bd_id1}
-| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index}
-| | ...                                     | ${bd_id1}
-| | Then Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1}
-| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1ad
-| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1}
diff --git a/tests/vpp/func/l2xc/eth2p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot b/tests/vpp/func/l2xc/eth2p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot
deleted file mode 100644 (file)
index c0e8c5c..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-# Copyright (c) 2016 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/shared/default.robot
-| Resource | resources/libraries/robot/shared/testing_path.robot
-| Resource | resources/libraries/robot/l2/tagging.robot
-| Resource | resources/libraries/robot/l2/l2_traffic.robot
-| Library  | resources.libraries.python.Trace
-| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH
-| Test Setup | Set up functional test
-| Test Teardown | Tear down functional test
-| Documentation | *L2XC with VLAN tag rewrite test cases - translate-2-1*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet encapsulations:* Eth-dot1ad-IPv4-ICMPv4 or
-| ... | Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, Eth-dot1q-IPv4-ICMPv4 or
-| ... | Eth-dot1aq-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2
-| ... | for L2 switching of IPv4/IPv6.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect
-| ... | (L2XC) switching between VLAN sub-interface with VLAN tag rewrite
-| ... | translate-2-1 method of interface towards TG and interface towards DUT2.
-| ... | DUT2 is configured configured with L2 cross-connect (L2XC) switching
-| ... | between VLAN sub-interface with VLAN tag rewrite pop-1 method
-| ... | of interface towards DUT1 and interface towards TG.
-| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are
-| ... | sent from TG on link to DUT1 and received in TG on link form DUT2;
-| ... | on receive TG verifies packets for correctness and their IPv4 src-addr,
-| ... | dst-addr and MAC addresses.
-| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad.
-
-*** Variables ***
-| ${subid}= | 10
-
-| ${outer_vlan_id1}= | 110
-| ${outer_vlan_id2}= | 120
-| ${outer_vlan_wrong}= | 150
-
-| ${inner_vlan_id1}= | 210
-
-| ${src_ip}= | 3ffe:63::1
-| ${dst_ip}= | 3ffe:63::2
-
-*** Test Cases ***
-| TC01: DUT1 and DUT2 with L2XC and VLAN translate-2-1 (DUT1) switch ICMPv4 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1, \
-| | ... | Eth-dot1q-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2.
-| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to
-| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite
-| | ... | translate-2-1 method; on DUT2 configure L2 cross-connect (L2XC) with
-| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with
-| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv4 Echo Req
-| | ... | tagged with Dot1ad tags from one of its interfaces to another one
-| | ... | via DUT1 and DUT2; verify that packet is received.
-| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2}
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_id2}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-1
-| | And Connect interfaces and VLAN sub-interfaces using L2XC
-| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index}
-| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index}
-| | Then Send ICMP packet and verify received packet
-| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1ad
-| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1}
-
-| TC02: DUT1 and DUT2 with L2XC and VLAN translate-2-1 with wrong tag used (DUT1) switch ICMPv4 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1, \
-| | ... | Eth-dot1q-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2.
-| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to
-| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite
-| | ... | translate-2-1 method to set tag different from tag set on VLAN
-| | ... | sub-interface of DUT2; on DUT2 configure L2 cross-connect (L2XC) with
-| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with
-| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv4 Echo Req
-| | ... | tagged with Dot1ad tags from one of its interfaces to another one
-| | ... | via DUT1 and DUT2; verify that packet is not received.
-| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad
-| | [Tags] | SKIP_PATCH
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2}
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_wrong}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-1
-| | And Connect interfaces and VLAN sub-interfaces using L2XC
-| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index}
-| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index}
-| | Then Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1}
-| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1}
-| | ... | vlan2=${inner_vlan_id1}
-
-| TC03: DUT1 and DUT2 with L2XC and VLAN translate-2-1 (DUT1) switch ICMPv6 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, \
-| | ... | Eth-dot1q-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2.
-| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to
-| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite
-| | ... | translate-2-1 method; on DUT2 configure L2 cross-connect (L2XC) with
-| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with
-| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv6 Echo Req
-| | ... | tagegd with Dot1ad tags from one of its interfaces to another one
-| | ... | via DUT1 and DUT2; verify that packet is received.
-| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2}
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_id2}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-1
-| | And Connect interfaces and VLAN sub-interfaces using L2XC
-| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index}
-| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index}
-| | Then Send ICMP packet and verify received packet
-| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip}
-| | ... | dst_ip=${dst_ip} | encaps=Dot1ad | vlan1=${outer_vlan_id1}
-| | ... | vlan2=${inner_vlan_id1}
-
-| TC04: DUT1 and DUT2 with L2XC and VLAN translate-2-1 with wrong tag used (DUT1) switch ICMPv6 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, \
-| | ... | Eth-dot1q-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2.
-| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to
-| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite
-| | ... | translate-2-1 method to set tag different from tag set on VLAN
-| | ... | sub-interface of DUT2; on DUT2 configure L2 cross-connect (L2XC) with
-| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with
-| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv6 Echo Req
-| | ... | tagegd with Dot1ad tags from one of its interfaces to another one
-| | ... | via DUT1 and DUT2; verify that packet is not received.
-| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad
-| | [Tags] | SKIP_PATCH
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2}
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_wrong}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-1
-| | And Connect interfaces and VLAN sub-interfaces using L2XC
-| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index}
-| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index}
-| | Then Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1}
-| | ... | ${tg_to_dut2} | src_ip=${src_ip} | dst_ip=${dst_ip} | encaps=Dot1ad
-| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1}
index f030e61..e3f0571 100644 (file)
@@ -62,8 +62,9 @@
 | | And Configure L2 tag rewrite method on interfaces
 | | ... | ${dut1_node} | ${subif_index_1} | ${dut2_node} | ${subif_index_2}
 | | ... | ${tag_rewrite_method}
-| | And Connect interfaces and VLAN sub-interfaces using L2XC
+| | And Configure L2XC
 | | ... | ${dut1_node} | ${dut1_to_tg} | ${subif_index_1}
+| | And Configure L2XC
 | | ... | ${dut2_node} | ${dut2_to_tg} | ${subif_index_2}
 | | Then Send ICMP packet and verify received packet
 | | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2}
diff --git a/tests/vpp/func/l2xc/eth2p-dot1ad-l2xcbase-vlantrans22-func.robot b/tests/vpp/func/l2xc/eth2p-dot1ad-l2xcbase-vlantrans22-func.robot
deleted file mode 100644 (file)
index 14406da..0000000
+++ /dev/null
@@ -1,346 +0,0 @@
-# Copyright (c) 2016 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/shared/default.robot
-| Resource | resources/libraries/robot/shared/testing_path.robot
-| Resource | resources/libraries/robot/l2/tagging.robot
-| Resource | resources/libraries/robot/l2/l2_traffic.robot
-| Library  | resources.libraries.python.Trace
-| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH
-| Test Setup | Set up functional test
-| Test Teardown | Tear down functional test
-| Documentation | *L2XC with VLAN tag rewrite test cases - translate-2-2*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet encapsulations:* Eth-dot1ad-IPv4-ICMPv4 or
-| ... | Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and DUT1-DUT2, Eth-IPv4-ICMPv4 or
-| ... | Eth-IPv6-ICMPv6 on TG-DUT2 for L2 switching of IPv4/IPv6.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect
-| ... | (L2XC) switching between VLAN sub-interface with VLAN tag rewrite
-| ... | translate-2-2 method of interface towards TG and interface towards DUT2.
-| ... | DUT2 is configured configured with L2 cross-connect (L2XC) switching
-| ... | between VLAN sub-interface with VLAN tag rewrite pop-2 method
-| ... | of interface towards DUT1 and interface towards TG.
-| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are
-| ... | sent from TG on link to DUT1 and received in TG on link form DUT2;
-| ... | on receive TG verifies packets for correctness and their IPv4 src-addr,
-| ... | dst-addr and MAC addresses.
-| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad.
-
-*** Variables ***
-| ${subid}= | 10
-
-| ${outer_vlan_id1}= | 110
-| ${outer_vlan_id2}= | 120
-| ${outer_vlan_wrong}= | 150
-
-| ${inner_vlan_id1}= | 210
-| ${inner_vlan_id2}= | 220
-| ${inner_vlan_wrong}= | 250
-
-| ${src_ip}= | 3ffe:63::1
-| ${dst_ip}= | 3ffe:63::2
-
-*** Test Cases ***
-| TC01: DUT1 and DUT2 with L2XC and VLAN translate-2-2 switch ICMPv4 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \
-| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2
-| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad
-| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method;
-| | ... | on DUT2 configure L2 cross-connect (L2XC) with one interface to TG and
-| | ... | one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-1
-| | ... | tagged with Dot1ad tags from one of its interfaces to another one
-| | ... | method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; verify
-| | ... | that packet is received. [Ref] IEEE 802.1ad
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2}
-| | ... | type_subif=two_tags dot1ad
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False}
-| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id2}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-2
-| | And Connect interfaces and VLAN sub-interfaces using L2XC
-| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index}
-| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index}
-| | Then Send ICMP packet and verify received packet
-| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1ad
-| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1}
-
-| TC02: DUT1 and DUT2 with L2XC and VLAN translate-2-2 with wrong inner tag used (DUT1) switch ICMPv4 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \
-| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2
-| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad
-| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to
-| | ... | set inner tag different from inner tag set on Dot1ad sub-interface of
-| | ... | DUT2; on DUT2 configure L2 cross-connect (L2XC) with one interface to
-| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite
-| | ... | pop-1 tagged with Dot1ad tags from one of its interfaces to another one
-| | ... | method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; verify
-| | ... | that packet is not received. [Ref] IEEE 802.1ad
-| | [Tags] | SKIP_PATCH
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2}
-| | ... | type_subif=two_tags dot1ad
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False}
-| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-2
-| | And Connect interfaces and VLAN sub-interfaces using L2XC
-| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index}
-| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index}
-| | Then Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1}
-| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1}
-| | ... | vlan2=${inner_vlan_id1}
-
-| TC03: DUT1 and DUT2 with L2XC and VLAN translate-2-2 with wrong outer tag used (DUT1) switch ICMPv4 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \
-| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2
-| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad
-| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to
-| | ... | set outer tag different from outer tag set on Dot1ad sub-interface of
-| | ... | DUT2; on DUT2 configure L2 cross-connect (L2XC) with one interface to
-| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite
-| | ... | pop-1 tagged with Dot1ad tags from one of its interfaces to another
-| | ... | one method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2;
-| | ... | verify that packet is not received. [Ref] IEEE 802.1ad
-| | [Tags] | SKIP_PATCH
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2}
-| | ... | type_subif=two_tags dot1ad
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False}
-| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id2}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-2
-| | And Connect interfaces and VLAN sub-interfaces using L2XC
-| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index}
-| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index}
-| | Then Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1}
-| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1}
-| | ... | vlan2=${inner_vlan_id1}
-
-| TC04: DUT1 and DUT2 with L2XC and VLAN translate-2-2 with wrong outer and inner tags used (DUT1) switch ICMPv4 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \
-| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2
-| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad
-| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to
-| | ... | set tags different from tags set on Dot1ad sub-interface of DUT2;
-| | ... | on DUT2 configure L2 cross-connect (L2XC) with one interface to TG
-| | ... | and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-1
-| | ... | tagged with Dot1ad tags from one of its interfaces to another one
-| | ... | method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; verify
-| | ... | that packet is not received. [Ref] IEEE 802.1ad
-| | [Tags] | SKIP_PATCH
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2}
-| | ... | type_subif=two_tags dot1ad
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False}
-| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-2
-| | And Connect interfaces and VLAN sub-interfaces using L2XC
-| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index}
-| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index}
-| | Then Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1}
-| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1}
-| | ... | vlan2=${inner_vlan_id1}
-
-| TC05: DUT1 and DUT2 with L2XC and VLAN translate-2-2 switch ICMPv6 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \
-| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2
-| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad
-| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method;
-| | ... | on DUT2 configure L2 cross-connect (L2XC) with one interface to TG and
-| | ... | one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-1
-| | ... | tagegd with Dot1ad tags from one of its interfaces to another one
-| | ... | method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; verify
-| | ... | that packet is received. [Ref] IEEE 802.1ad
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2}
-| | ... | type_subif=two_tags dot1ad
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False}
-| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id2}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-2
-| | And Connect interfaces and VLAN sub-interfaces using L2XC
-| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index}
-| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index}
-| | Then Send ICMP packet and verify received packet
-| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip}
-| | ... | dst_ip=${dst_ip} | encaps=Dot1ad | vlan1=${outer_vlan_id1}
-| | ... | vlan2=${inner_vlan_id1}
-
-| TC06: DUT1 and DUT2 with L2XC and VLAN translate-2-2 with wrong inner tag used (DUT1) switch ICMPv6 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \
-| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2
-| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad
-| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to
-| | ... | set inner tag different from inner tag set on Dot1ad sub-interface of
-| | ... | DUT2; on DUT2 configure L2 cross-connect (L2XC) with one interface to
-| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite
-| | ... | pop-1 tagegd with Dot1ad tags from one of its interfaces to another one
-| | ... | method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; verify
-| | ... | that packet is not received. [Ref] IEEE 802.1ad
-| | [Tags] | SKIP_PATCH
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2}
-| | ... | type_subif=two_tags dot1ad
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False}
-| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-2
-| | And Connect interfaces and VLAN sub-interfaces using L2XC
-| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index}
-| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index}
-| | Then Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1}
-| | ... | ${tg_to_dut2} | src_ip=${src_ip} | dst_ip=${dst_ip} | encaps=Dot1ad
-| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1}
-
-| TC07: DUT1 and DUT2 with L2XC and VLAN translate-2-2 with wrong outer tag used (DUT1) switch ICMPv6 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \
-| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2
-| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad
-| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to
-| | ... | set outer tag different from outer tag set on Dot1ad sub-interface of
-| | ... | DUT2; on DUT2 configure L2 cross-connect (L2XC) with one interface to
-| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite
-| | ... | pop-1 tagegd with Dot1ad tags from one of its interfaces to another
-| | ... | one method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2;
-| | ... | verify that packet is not received. [Ref] IEEE 802.1ad
-| | [Tags] | SKIP_PATCH
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2}
-| | ... | type_subif=two_tags dot1ad
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False}
-| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id2}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-2
-| | And Connect interfaces and VLAN sub-interfaces using L2XC
-| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index}
-| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index}
-| | Then Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1}
-| | ... | ${tg_to_dut2} | src_ip=${src_ip} | dst_ip=${dst_ip} | encaps=Dot1ad
-| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1}
-
-| TC08: DUT1 and DUT2 with L2XC and VLAN translate-2-2 with wrong outer and inner tags used (DUT1) switch ICMPv6 between two TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \
-| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2
-| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad
-| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to
-| | ... | set tags different from tags set on Dot1ad sub-interface of DUT2;
-| | ... | on DUT2 configure L2 cross-connect (L2XC) with one interface to TG
-| | ... | and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-1
-| | ... | tagegd with Dot1ad tags from one of its interfaces to another one
-| | ... | method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; verify
-| | ... | that packet is not received. [Ref] IEEE 802.1ad
-| | [Tags] | SKIP_PATCH
-| | Given Configure path in 3-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface
-| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1}
-| | ... | type_subif=two_tags dot1ad
-| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid}
-| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2}
-| | ... | type_subif=two_tags dot1ad
-| | And Configure L2 tag rewrite method on interface | ${dut1_node}
-| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False}
-| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong}
-| | And Configure L2 tag rewrite method on interface | ${dut2_node}
-| | ... | ${vlan2_index} | pop-2
-| | And Connect interfaces and VLAN sub-interfaces using L2XC
-| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index}
-| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index}
-| | Then Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1}
-| | ... | ${tg_to_dut2} | src_ip=${src_ip} | dst_ip=${dst_ip} | encaps=Dot1ad
-| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1}
index 71419b5..381c09c 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 10
 | ${flows_per_dir}= | 100
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 3fa03d1..0c8aaa0 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 10
 | ${flows_per_dir}= | 100k
+| ${ip_nr}= | ${100}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 100
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 61673c6..08ca48e 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 10
 | ${flows_per_dir}= | 10k
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 261d171..8d9769b 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 10
 | ${flows_per_dir}= | 100
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 0869a58..e869784 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 10
 | ${flows_per_dir}= | 100k
+| ${ip_nr}= | ${100}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 100
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index d52f9d8..f156c1e 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 10
 | ${flows_per_dir}= | 10k
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 642c802..f59dc58 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 1
 | ${flows_per_dir}= | 100
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index fc201e7..166a57d 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 1
 | ${flows_per_dir}= | 100k
+| ${ip_nr}= | ${100}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 100
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index cecf733..d37416e 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 1
 | ${flows_per_dir}= | 10k
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -89,8 +90,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 049b649..aca0b05 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 1
 | ${flows_per_dir}= | 100
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index ae2cb58..b5ddf3d 100644 (file)
@@ -51,6 +51,7 @@
 | ${osi_layer}= | L3
 | ${nic_name}= | Intel-X710
 | ${overhead}= | ${0}
+| ${ip_nr}= | ${100}
 # ACL test setup
 | ${acl_action}= | permit
 | ${acl_apply_type}= | input
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 100
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index c8fdba2..8458686 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 1
 | ${flows_per_dir}= | 10k
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -89,8 +90,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 78d7679..2682a4c 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 50
 | ${flows_per_dir}= | 100
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 43cf6b4..3af4c48 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 50
 | ${flows_per_dir}= | 100k
+| ${ip_nr}= | ${100}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 100
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index cf8a757..c5b92b7 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 50
 | ${flows_per_dir}= | 10k
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -89,8 +90,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index b1be819..7db631a 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 50
 | ${flows_per_dir}= | 100
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 3fed11a..13e0c69 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 50
 | ${flows_per_dir}= | 100k
+| ${ip_nr}= | ${100}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 100
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 2b45776..0d25ee2 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 50
 | ${flows_per_dir}= | 10k
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -89,8 +90,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 6e43a21..5726c02 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | output
 | ${no_hit_aces_number}= | 10
 | ${flows_per_dir}= | 100
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 7a902bc..bc806f3 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | output
 | ${no_hit_aces_number}= | 10
 | ${flows_per_dir}= | 100k
+| ${ip_nr}= | ${100}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 100
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 56bad45..36eeeaf 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | output
 | ${no_hit_aces_number}= | 10
 | ${flows_per_dir}= | 10k
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 1b11aeb..6291183 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | output
 | ${no_hit_aces_number}= | 10
 | ${flows_per_dir}= | 100
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index c971f7f..87129b5 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | output
 | ${no_hit_aces_number}= | 10
 | ${flows_per_dir}= | 100k
+| ${ip_nr}= | ${100}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 100
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index e441814..00a69a0 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | output
 | ${no_hit_aces_number}= | 10
 | ${flows_per_dir}= | 10k
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 5f23e46..148c837 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | output
 | ${no_hit_aces_number}= | 1
 | ${flows_per_dir}= | 100
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 1f41774..083c09b 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | output
 | ${no_hit_aces_number}= | 1
 | ${flows_per_dir}= | 100k
+| ${ip_nr}= | ${100}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 100
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 3c1287e..0a97cd8 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | output
 | ${no_hit_aces_number}= | 1
 | ${flows_per_dir}= | 10k
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 2408753..be06969 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | output
 | ${no_hit_aces_number}= | 1
 | ${flows_per_dir}= | 100
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index b9d5ed1..7c87cb3 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | output
 | ${no_hit_aces_number}= | 1
 | ${flows_per_dir}= | 100k
+| ${ip_nr}= | ${100}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 100
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index a3aa66e..e41be6d 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | output
 | ${no_hit_aces_number}= | 1
 | ${flows_per_dir}= | 10k
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index c1a61b7..4bf8704 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | output
 | ${no_hit_aces_number}= | 50
 | ${flows_per_dir}= | 100
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index fa2e15f..8442f76 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | output
 | ${no_hit_aces_number}= | 50
 | ${flows_per_dir}= | 100k
+| ${ip_nr}= | ${100}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 100
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 809fb62..5254073 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | output
 | ${no_hit_aces_number}= | 50
 | ${flows_per_dir}= | 10k
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 18f4b1e..22a8d34 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | output
 | ${no_hit_aces_number}= | 50
 | ${flows_per_dir}= | 100
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 72f61ff..2eefcd8 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | output
 | ${no_hit_aces_number}= | 50
 | ${flows_per_dir}= | 100k
+| ${ip_nr}= | ${100}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 100
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 5eecf98..d1fb20f 100644 (file)
@@ -56,6 +56,7 @@
 | ${acl_apply_type}= | output
 | ${no_hit_aces_number}= | 50
 | ${flows_per_dir}= | 10k
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 37d3e5f..33c8869 100644 (file)
@@ -55,6 +55,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 1
 | ${flows_per_dir}= | 10k
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 56dd8f9..283f5be 100644 (file)
@@ -55,6 +55,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 1
 | ${flows_per_dir}= | 10k
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index d7f2898..5165323 100644 (file)
@@ -55,6 +55,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 50
 | ${flows_per_dir}= | 10k
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index ef1cac7..08c3b54 100644 (file)
@@ -55,6 +55,7 @@
 | ${acl_apply_type}= | input
 | ${no_hit_aces_number}= | 50
 | ${flows_per_dir}= | 10k
+| ${ip_nr}= | ${10}
 # starting points for non-hitting ACLs
 | ${src_ip_start}= | 30.30.30.1
 | ${dst_ip_start}= | 40.40.40.1
@@ -88,8 +89,8 @@
 | | And Add PCI devices to all DUTs
 | | And Set Max Rate And Jumbo And Handle Multi Seg
 | | And Apply startup configuration on all VPP DUTs
-| | ${ip_nr}= | Set Variable | 10
-| | When Initialize IPv4 routing for '${ip_nr}' addresses with IPv4 ACLs on DUT1 in circular topology
+| | When Initialize IPv4 routing with IPv4 ACLs on DUT1 in circular topology
+| | ... | ${ip_nr}
 | | Then Find NDR and PDR intervals using optimized search
 
 *** Test Cases ***
index 29d3114..e3dba2f 100644 (file)
@@ -88,8 +88,9 @@
 | | And Configure L2 tag rewrite method on interfaces
 | | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2}
 | | ... | ${tag_rewrite}
-| | And Connect interfaces and VLAN sub-interfaces using L2XC
+| | And Configure L2XC
 | | ... | ${dut1} | ${dut1_if1} | ${subif_index_1}
+| | And Configure L2XC
 | | ... | ${dut2} | ${dut2_if2} | ${subif_index_2}
 | | Then Find NDR and PDR intervals using optimized search
 
index a4a9ef9..8e06a53 100644 (file)
@@ -82,8 +82,9 @@
 | | And Configure L2 tag rewrite method on interfaces
 | | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2}
 | | ... | ${tag_rewrite}
-| | And Connect interfaces and VLAN sub-interfaces using L2XC
+| | And Configure L2XC
 | | ... | ${dut1} | ${dut1_if1} | ${subif_index_1}
+| | And Configure L2XC
 | | ... | ${dut2} | ${dut2_if2} | ${subif_index_2}
 | | Then Find NDR and PDR intervals using optimized search
 
index 079cd59..f1c3b9a 100644 (file)
@@ -81,7 +81,7 @@
 | | ... | ${dut1} | ${dut1_if2} | SUB_ID=${subid}
 | | And Configure L2 tag rewrite method on interfaces
 | | ... | ${dut1} | ${subif_index_1} | TAG_REWRITE_METHOD=${tag_rewrite}
-| | And Connect interfaces and VLAN sub-interfaces using L2XC
+| | And Configure L2XC
 | | ... | ${dut1} | ${dut1_if1} | ${subif_index_1}
 | | Then Find NDR and PDR intervals using optimized search