"Intel-X710": 10000000000,
"Intel-XL710": 24500000000,
"Intel-XXV710": 24500000000,
+ "virtual": 100000000,
}
# Suite file names use somewhat more rich (less readable) codes for NICs.
"""
worker_id = 0
worker_cnt = len(VPPUtil.vpp_show_threads(node)) - 1
+ if not worker_cnt:
+ return
for placement in InterfaceUtil.vpp_sw_interface_rx_placement_dump(node):
for interface in node['interfaces'].values():
if placement['sw_if_index'] == interface['vpp_sw_index'] \
| | ... | \| ${encr_alg}= \| Crypto Alg AES CBC 128 \|
| | ... | \| ${auth_alg}= \| Integ Alg SHA1 96 \|
| | ... | \| Generate keys for IPSec \| ${encr_alg} \| ${auth_alg} \|
+| | ...
| | [Arguments] | ${crypto_alg} | ${integ_alg}
+| | ...
| | ${encr_key_len}= | Get Crypto Alg Key Len | ${crypto_alg}
| | ${encr_key}= | Generate Random String | ${encr_key_len}
| | ${auth_key_len}= | Get Integ Alg Key Len | ${integ_alg}
| | [Documentation] | Setup path for IPsec testing TG<-->DUT1.
| | ...
| | ... | _NOTE:_ This KW sets following test case variable:
-| | ... | - tg_node - TG node. Type: dictionary
-| | ... | - tg_if - TG interface connected to DUT. Type: string
-| | ... | - tg_if_mac - TG interface MAC. Type: string
-| | ... | - dut_node - DUT node. Type: dictionary
-| | ... | - dut_if - DUT interface connected to TG. Type: string
-| | ... | - dut_if_mac - DUT interface MAC. Type: string
| | ... | - dut_lo - DUT loopback interface. Type: string
| | ...
| | ... | *Example:*
| | ... | \| Configure path for IPSec test \|
-| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']}
-| | Compute Path
-| | ${tg_if} | ${tg_node}= | Next Interface
-| | ${dut_if} | ${dut_node}= | Next Interface
-| | ${dut_if_mac}= | Get Interface Mac | ${dut_node} | ${dut_if}
-| | ${tg_if_mac}= | Get Interface Mac | ${tg_node} | ${tg_if}
-| | ${dut_lo}= | Vpp Create Loopback | ${dut_node}
-| | Set Interface State | ${dut_node} | ${dut_if} | up
-| | Set Interface State | ${dut_node} | ${dut_lo} | up
-| | Vpp Node Interfaces Ready Wait | ${dut_node}
-| | Set Test Variable | ${tg_node}
-| | Set Test Variable | ${tg_if}
-| | Set Test Variable | ${tg_if_mac}
-| | Set Test Variable | ${dut_node}
-| | Set Test Variable | ${dut_if}
-| | Set Test Variable | ${dut_if_mac}
-| | Set Test Variable | ${dut_lo}
+| | ...
+| | ${dut1_lo1}= | Vpp Create Loopback | ${dut1}
+| | Set Interface State | ${dut1} | ${dut1_if1} | up
+| | Set Interface State | ${dut1} | ${dut1_lo1} | up
+| | Vpp Node Interfaces Ready Wait | ${dut1}
+| | Set Test Variable | ${dut1_lo1}
| Configure topology for IPv4 IPsec testing
| | [Documentation] | Setup topology for IPv4 IPsec testing.
| | ...
| | ... | *Example:*
| | ... | \| Configure topology for IPv4 IPsec testing \|
+| | ...
| | Configure path for IPSec test
-| | VPP Interface Set IP Address | ${dut_node} | ${dut_if} | ${dut_if_ip4}
-| | ... | ${ip4_plen}
-| | VPP Interface Set IP Address | ${dut_node} | ${dut_lo} | ${dut_lo_ip4}
-| | ... | ${ip4_plen}
-| | VPP Add IP Neighbor | ${dut_node} | ${dut_if} | ${tg_if_ip4} | ${tg_if_mac}
-| | Vpp Route Add | ${dut_node} | ${tg_lo_ip4} | ${ip4_plen}
-| | ... | gateway=${tg_if_ip4} | interface=${dut_if}
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${dut1_if1} | ${dut_if_ip4} | ${ip4_plen}
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${dut1_lo1} | ${dut_lo_ip4} | ${ip4_plen}
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${dut1_if1} | ${tg_if_ip4} | ${tg_if1_mac}
+| | Vpp Route Add
+| | ... | ${dut1} | ${tg_lo_ip4} | ${ip4_plen} | gateway=${tg_if_ip4}
+| | ... | interface=${dut1_if1}
| | Set Test Variable | ${dut_tun_ip} | ${dut_if_ip4}
| | Set Test Variable | ${dut_src_ip} | ${dut_lo_ip4}
| | Set Test Variable | ${tg_tun_ip} | ${tg_if_ip4}
| | ...
| | ... | *Example:*
| | ... | \| Configure topology for IPv6 IPsec testing \|
+| | ...
| | Configure path for IPSec test
| | VPP Interface Set IP Address
-| | ... | ${dut_node} | ${dut_if} | ${dut_if_ip6} | ${ip6_plen}
+| | ... | ${dut1} | ${dut1_if1} | ${dut_if_ip6} | ${ip6_plen}
| | VPP Interface Set IP Address
-| | ... | ${dut_node} | ${dut_lo} | ${dut_lo_ip6} | ${ip6_plen}
-| | VPP Add IP Neighbor | ${dut_node} | ${dut_if} | ${tg_if_ip6} | ${tg_if_mac}
+| | ... | ${dut1} | ${dut1_lo1} | ${dut_lo_ip6} | ${ip6_plen}
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${dut1_if1} | ${tg_if_ip6} | ${tg_if1_mac}
| | Vpp All RA Suppress Link Layer | ${nodes}
-| | Vpp Route Add | ${dut_node} | ${tg_lo_ip6} | ${ip6_plen_rt}
-| | ... | gateway=${tg_if_ip6} | interface=${dut_if}
+| | Vpp Route Add
+| | ... | ${dut1} | ${tg_lo_ip6} | ${ip6_plen_rt} | gateway=${tg_if_ip6}
+| | ... | interface=${dut1_if1}
| | Set Test Variable | ${dut_tun_ip} | ${dut_if_ip6}
| | Set Test Variable | ${dut_src_ip} | ${dut_lo_ip6}
| | Set Test Variable | ${tg_tun_ip} | ${tg_if_ip6}
| | ... | \| 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}
# software interfaces. Run KW at the start phase of VPP setup to split
# from other "functional" configuration. This will allow modularity of this
# library
-| | ${duts}= | Get Matches | ${nodes} | DUT*
| | :FOR | ${dut} | IN | @{duts}
| | | ${if1_status} | ${value}= | Run Keyword And Ignore Error
| | | ... | Variable Should Exist | ${${dut}_if1}
| | | ... | Set Interface State | ${nodes['${dut}']} | ${${dut}_if2_1} | up
| | | Run Keyword Unless | '${if2_status}' == 'PASS'
| | | ... | Set Interface State | ${nodes['${dut}']} | ${${dut}_if2_2} | up
-| | All VPP Interfaces Ready Wait | ${nodes} | retries=${300}
-| | ${duts}= | Get Matches | ${nodes} | DUT*
| | :FOR | ${dut} | IN | @{duts}
| | | ${if1_status} | ${value}= | Run Keyword And Ignore Error
| | | ... | Variable Should Exist | ${${dut}_if1}
# software interfaces. Run KW at the start phase of VPP setup to split
# from other "functional" configuration. This will allow modularity of this
# library
-| | ${duts}= | Get Matches | ${nodes} | DUT*
| | :FOR | ${dut} | IN | @{duts}
| | | ${if1_status} | ${value}= | Run Keyword And Ignore Error
| | | ... | Variable Should Exist | ${${dut}_if1}
| | | ... | Set Interface State | ${nodes['${dut}']} | ${${dut}_if1_1} | up
| | | Run Keyword Unless | '${if1_status}' == 'PASS'
| | | ... | Set Interface State | ${nodes['${dut}']} | ${${dut}_if1_2} | up
-| | All VPP Interfaces Ready Wait | ${nodes} | retries=${300}
-| | ${duts}= | Get Matches | ${nodes} | DUT*
| | :FOR | ${dut} | IN | @{duts}
| | | ${if1_status} | ${value}= | Run Keyword And Ignore Error
| | | ... | Variable Should Exist | ${${dut}_if1}
| | ... | on DUT1-DUT2 link and set routing on both DUT nodes with prefix /24
| | ... | and next hop of neighbour DUT interface IPv4 address.
| | ...
+| | ... | *Arguments:*
+| | ... | - remote_host1_ip - IP address of remote host1 (Optional).
+| | ... | Type: string
+| | ... | - remote_host2_ip - IP address of remote host2 (Optional).
+| | ... | Type: string
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Initialize IPv4 forwarding in circular topology \
+| | ... | \| 192.168.0.1 \| 192.168.0.2 \|
+| | ...
+| | [Arguments] | ${remote_host1_ip}=${NONE} | ${remote_host2_ip}=${NONE}
+| | ...
| | ${dut2_status} | ${value}= | Run Keyword And Ignore Error
| | ... | Variable Should Exist | ${dut2}
| | ...
| | Set interfaces in path up
| | ...
-| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1}
-| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2}
-| | ${dut1_if2_mac}= | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Get Interface MAC | ${dut1} | ${dut1_if2}
-| | ${dut2_if1_mac}= | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Get Interface MAC | ${dut2} | ${dut2_if1}
-| | ...
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 10.10.10.2 | ${tg1_if1_mac}
+| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 10.10.10.2 | ${tg_if1_mac}
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Add IP Neighbor
| | ... | ${dut1} | ${dut1_if2} | 1.1.1.2 | ${dut2_if1_mac}
| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Set Variable | ${dut2_if2}
| | ... | ELSE | Set Variable | ${dut1_if2}
-| | VPP Add IP Neighbor | ${dut} | ${dut_if2} | 20.20.20.2 | ${tg1_if2_mac}
+| | VPP Add IP Neighbor | ${dut} | ${dut_if2} | 20.20.20.2 | ${tg_if2_mac}
| | ...
| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1}
| | ... | 10.10.10.1 | 24
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | gateway=1.1.1.1
| | ... | interface=${dut2_if1}
+| | ...
+| | Run Keyword Unless | '${remote_host1_ip}' == '${NONE}'
+| | ... | Vpp Route Add | ${dut1} | ${remote_host1_ip} | 32
+| | ... | gateway=10.10.10.2 | interface=${dut1_if1}
+| | Run Keyword Unless | '${remote_host2_ip}' == '${NONE}'
+| | ... | Vpp Route Add | ${dut} | ${remote_host2_ip} | 32
+| | ... | gateway=20.20.20.2 | interface=${dut_if2}
+| | Run Keyword Unless | '${remote_host1_ip}' == '${NONE}'
+| | ... | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut1} | ${remote_host1_ip} | 32
+| | ... | gateway=1.1.1.2 | interface=${dut1_if2}
+| | Run Keyword Unless | '${remote_host2_ip}' == '${NONE}'
+| | ... | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut2} | ${remote_host2_ip} | 32
+| | ... | gateway=1.1.1.1 | interface=${dut2_if1}
| Initialize IPv4 forwarding with scaling in circular topology
| | [Documentation]
| | Policer Classify Set Match IP | 10.10.10.2 | ${False}
| | Policer Set Configuration
-| Initialize IPv6 forwarding in 2-node circular topology
+| Initialize IPv6 forwarding in circular topology
| | [Documentation]
-| | ... | Set UP state on VPP interfaces in path on nodes in 2-node circular
-| | ... | topology. Get the interface MAC addresses and setup neighbour on all
-| | ... | VPP interfaces. Setup IPv6 addresses with /128 prefixes on all
-| | ... | interfaces.
+| | ... | Set UP state on VPP interfaces in path on nodes in 2-node / 3-node
+| | ... | circular topology. Get the interface MAC addresses and setup neighbor
+| | ... | on all VPP interfaces. Setup IPv6 addresses with /64 prefix on DUT-TG
+| | ... | links. In case of 3-node topology setup IPv6 adresses with /64 prefix
+| | ... | on DUT1-DUT2 link and set routing on both DUT nodes with prefix /64
+| | ... | and next hop of neighbour DUT interface IPv4 address.
| | ...
-| | Set interfaces in path up
-| | ${prefix}= | Set Variable | 64
-| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1}
-| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2}
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1} | 2001:1::1 | ${prefix}
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if2} | 2001:2::1 | ${prefix}
-| | Suppress ICMPv6 router advertisement message | ${nodes}
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 2001:1::2 | ${tg1_if1_mac}
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if2} | 2001:2::2 | ${tg1_if2_mac}
-
-| Initialize IPv6 forwarding 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 neighbour on all
-| | ... | VPP interfaces. Setup IPv6 addresses with /128 prefixes on all
-| | ... | interfaces. Set routing on both DUT nodes with prefix /64 and
-| | ... | next hop of neighbour DUT interface IPv6 address.
+| | ... | *Arguments:*
+| | ... | - remote_host1_ip - IP address of remote host1 (Optional).
+| | ... | Type: string
+| | ... | - remote_host2_ip - IP address of remote host2 (Optional).
+| | ... | Type: string
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Initialize IPv6 forwarding in circular topology \
+| | ... | \| 3ffe:5f::1 \| 3ffe:5f::2 \|
+| | ...
+| | [Arguments] | ${remote_host1_ip}=${NONE} | ${remote_host2_ip}=${NONE}
+| | ...
+| | ${dut2_status} | ${value}= | Run Keyword And Ignore Error
+| | ... | Variable Should Exist | ${dut2}
| | ...
| | Set interfaces in path up
-| | ${prefix}= | Set Variable | 64
-| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1}
-| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2}
-| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2}
-| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1}
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1} | 2001:1::1 | ${prefix}
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if2} | 2001:3::1 | ${prefix}
-| | VPP Interface Set IP Address | ${dut2} | ${dut2_if1} | 2001:3::2 | ${prefix}
-| | VPP Interface Set IP Address | ${dut2} | ${dut2_if2} | 2001:2::1 | ${prefix}
+| | ...
+| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 2001:1::2 | ${tg_if1_mac}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Add IP Neighbor
+| | ... | ${dut1} | ${dut1_if2} | 2001:3::1 | ${dut2_if1_mac}
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Add IP Neighbor
+| | ... | ${dut2} | ${dut2_if1} | 2001:3::2 | ${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 | ${dut1_if2}
+| | VPP Add IP Neighbor | ${dut} | ${dut_if2} | 2001:2::2 | ${tg_if2_mac}
+| | ...
+| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1} | 2001:1::1 | 64
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Interface Set IP Address | ${dut1} | ${dut1_if2} | 2001:3::1 | 64
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | VPP Interface Set IP Address | ${dut2} | ${dut2_if1} | 2001:3::2 | 64
+| | VPP Interface Set IP Address | ${dut} | ${dut_if2} | 2001:2::1 | 64
+| | ...
| | Suppress ICMPv6 router advertisement message | ${nodes}
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 2001:1::2 | ${tg1_if1_mac}
-| | VPP Add IP Neighbor | ${dut2} | ${dut2_if2} | 2001:2::2 | ${tg1_if2_mac}
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if2} | 2001:3::2 | ${dut2_if1_mac}
-| | VPP Add IP Neighbor | ${dut2} | ${dut2_if1} | 2001:3::1 | ${dut1_if2_mac}
-| | Vpp Route Add | ${dut1} | 2001:2::0 | ${prefix} | gateway=2001:3::2
+| | ...
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut1} | 2001:2::0 | 24 | gateway=2001:3::2
| | ... | interface=${dut1_if2}
-| | Vpp Route Add | ${dut2} | 2001:1::0 | ${prefix} | gateway=2001:3::1
+| | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut2} | 2001:1::0 | 24 | gateway=2001:3::1
| | ... | interface=${dut2_if1}
+| | ...
+| | Run Keyword Unless | '${remote_host1_ip}' == '${NONE}'
+| | ... | Vpp Route Add | ${dut1} | ${remote_host1_ip} | 128
+| | ... | gateway=2001:1::2 | interface=${dut1_if1}
+| | Run Keyword Unless | '${remote_host2_ip}' == '${NONE}'
+| | ... | Vpp Route Add | ${dut} | ${remote_host2_ip} | 128
+| | ... | gateway=2001:2::2 | interface=${dut_if2}
+| | Run Keyword Unless | '${remote_host1_ip}' == '${NONE}'
+| | ... | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut1} | ${remote_host1_ip} | 128
+| | ... | gateway=2001:3::2 | interface=${dut1_if2}
+| | Run Keyword Unless | '${remote_host2_ip}' == '${NONE}'
+| | ... | Run Keyword If | '${dut2_status}' == 'PASS'
+| | ... | Vpp Route Add | ${dut2} | ${remote_host2_ip} | 128
+| | ... | gateway=2001:3::1 | interface=${dut2_if1}
| Initialize IPv6 forwarding with scaling in circular topology
| | [Documentation]
| | ...
| | [Arguments] | ${dut} | ${count}
| | ...
-| | @{duts}= | Get Matches | ${nodes} | DUT*
| | ${dut_index}= | Get Index From List | ${duts} | ${dut}
-| | ${duts_length}= | Get Length | ${duts}
-| | ${last_dut_index}= | Evaluate | ${duts_length} - ${1}
+| | ${last_dut_index}= | Evaluate | ${duts_count} - ${1}
| | ...
| | ${tg_if1_net}= | Set Variable | 10.10.10.0
| | ${tg_if2_net}= | Set Variable | 20.20.20.0
| | ...
| | [Arguments] | ${count}=${1}
| | ...
-| | ${duts}= | Get Matches | ${nodes} | DUT*
| | :FOR | ${dut} | IN | @{duts}
| | | Initialize IPv4 routing with memif pairs on DUT node | ${dut} | ${count}
| | Set interfaces in path up
| | ... | - auto_scale - If True, use same amount of Dataplane threads for
| | ... | network function as DUT, otherwise use single physical core for
| | ... | every network function. Type: boolean
-| | ... | - nested: Set True if starting nested containers.
-| | ... | Type: boolean, default value: ${False}
+| | ... | - pinning: Set True if CPU pinning should be done on starting
+| | ... | containers. Type: boolean, default value: ${False}
| | ...
| | ... | *Example:*
| | ...
| | ... | \| Construct container on all DUTs \| 1 \| 1 \| 1 \| 1 \| ${True} \|
| | ...
| | [Arguments] | ${nf_chains}=${1} | ${nf_nodes}=${1} | ${nf_chain}=${1}
-| | ... | ${nf_node}=${1} | ${auto_scale}=${True} | ${nested}=${False}
+| | ... | ${nf_node}=${1} | ${auto_scale}=${True} | ${pinning}=${True}
| | ...
| | ${nf_dtcr_status} | ${value}= | Run Keyword And Ignore Error
| | ... | Variable Should Exist | ${nf_dtcr}
| | ${nf_dtcr}= | Run Keyword If | '${nf_dtcr_status}' == 'PASS'
| | ... | Set Variable | ${nf_dtcr} | ELSE | Set Variable | ${1}
-| | ${nf_dtc}= | Run Keyword Unless | ${nested}
+| | ${nf_dtc}= | Run Keyword If | ${pinning}
| | ... | Set Variable If | ${auto_scale} | ${cpu_count_int}
| | ... | ${nf_dtc}
| | ${duts}= | Get Matches | ${nodes} | DUT*
| | :FOR | ${dut} | IN | @{duts}
| | | ${nf_id}= | Evaluate | (${nf_chain} - ${1}) * ${nf_nodes} + ${nf_node}
| | | ${env}= | Create List | DEBIAN_FRONTEND=noninteractive
-| | | ${uuid}= | Get Variable Value | ${dcr_uuid} | ${Empty}
-| | | ${root}= | Get Variable Value | ${dcr_root} | ${Empty}
+| | | ${dut1_uuid_length} = | Get Length | ${dut1_uuid}
+| | | ${root}= | Run Keyword If | ${dut1_uuid_length}
+| | | ... | Get Docker Mergeddir | ${nodes['DUT1']} | ${dut1_uuid}
+| | | ... | ELSE | Set Variable | ${EMPTY}
| | | ${mnt}= | Create List
| | | ... | ${root}/tmp/:/mnt/host/
| | | ... | ${root}/dev/vfio/:/dev/vfio/
| | | ... | ${root}/usr/lib/x86_64-linux-gnu/:/usr/lib/x86_64-linux-gnu/
| | | ... | ${root}/usr/share/vpp/:/usr/share/vpp/
| | | ${nf_cpus}= | Set Variable | ${None}
-| | | ${nf_cpus}= | Run Keyword Unless | ${nested}
+| | | ${nf_cpus}= | Run Keyword If | ${pinning}
| | | ... | Get Affinity NF | ${nodes} | ${dut}
| | | ... | nf_chains=${nf_chains} | nf_nodes=${nf_nodes}
| | | ... | nf_chain=${nf_chain} | nf_node=${nf_node}
| | | ... | vs_dtc=${cpu_count_int} | nf_dtc=${nf_dtc} | nf_dtcr=${nf_dtcr}
| | | &{cont_args}= | Create Dictionary
-| | | ... | name=${dut}_${container_group}${nf_id}${uuid}
+| | | ... | name=${dut}_${container_group}${nf_id}${dut1_uuid}
| | | ... | node=${nodes['${dut}']} | mnt=${mnt} | env=${env}
-| | | Run Keyword Unless | ${nested}
+| | | Run Keyword If | ${pinning}
| | | ... | Set To Dictionary | ${cont_args} | cpuset_cpus=${nf_cpus}
| | | Run Keyword | ${container_group}.Construct container | &{cont_args}
| | ... | - auto_scale - If True, use same amount of Dataplane threads for
| | ... | network function as DUT, otherwise use single physical core for
| | ... | every network function. Type: boolean
-| | ... | - nested: Set True if starting nested containers.
-| | ... | Type: boolean, default value: ${False}
+| | ... | - pinning: Set True if CPU pinning should be done on starting
+| | ... | containers. Type: boolean, default value: ${False}
| | ...
| | ... | *Example:*
| | ...
| | ... | \| ${True} \|
| | ...
| | [Arguments] | ${nf_chains}=${1} | ${nf_nodes}=${1} | ${nf_chain}=${1}
-| | ... | ${auto_scale}=${True} | ${nested}=${False}
+| | ... | ${auto_scale}=${True} | ${pinning}=${True}
| | ...
| | :FOR | ${nf_node} | IN RANGE | 1 | ${nf_nodes}+1
| | | Construct container on all DUTs | nf_chains=${nf_chains}
| | | ... | nf_nodes=${nf_nodes} | nf_chain=${nf_chain} | nf_node=${nf_node}
-| | | ... | auto_scale=${auto_scale} | nested=${nested}
+| | | ... | auto_scale=${auto_scale} | pinning=${pinning}
| Construct chains of containers on all DUTs
| | [Documentation] | Construct 1..N chains of 1..N CNFs on all DUT nodes.
| | ...
| | ... | *Arguments:*
| | ... | - nf_chains: Total number of chains (Optional). Type: integer, default
-| | ... | value: ${1}
+| | ... | value: ${1}
| | ... | - nf_nodes: Total number of nodes per chain (Optional). Type: integer,
-| | ... | default value: ${1}
+| | ... | default value: ${1}
| | ... | - auto_scale - If True, use same amount of Dataplane threads for
| | ... | network function as DUT, otherwise use single physical core for
| | ... | every network function. Type: boolean
-| | ... | - nested: Set True if starting nested containers.
-| | ... | Type: boolean, default value: ${False}
+| | ... | - pinning: Set True if CPU pinning should be done on starting
+| | ... | containers. Type: boolean, default value: ${True}
| | ...
| | ... | *Example:*
| | ...
| | ... | \| Construct chains of containers on all DUTs \| 1 \| 1 \|
| | ...
| | [Arguments] | ${nf_chains}=${1} | ${nf_nodes}=${1} | ${auto_scale}=${True}
-| | ... | ${nested}=${False}
+| | ... | ${pinning}=${True}
| | ...
| | :FOR | ${nf_chain} | IN RANGE | 1 | ${nf_chains}+1
| | | Construct chain of containers on all DUTs | nf_chains=${nf_chains}
| | | ... | nf_nodes=${nf_nodes} | nf_chain=${nf_chain}
-| | | ... | auto_scale=${auto_scale} | nested=${nested}
+| | | ... | auto_scale=${auto_scale} | pinning=${pinning}
| Acquire all '${group}' containers
| | [Documentation] | Acquire all container(s) in specific container group on
| | ...
| | Run Keyword | ${group}.Destroy all containers
-| Start containers for performance test
+| Start containers for test
| | [Documentation]
-| | ... | Start containers for performance test.
+| | ... | Start containers for test.
| | ...
| | ... | *Arguments:*
| | ... | - nf_chains: Total number of chains. Type: integer
| | ... | - auto_scale - If True, use same amount of Dataplane threads for
| | ... | network function as DUT, otherwise use single physical core for
| | ... | every network function. Type: boolean
+| | ... | - pinning: Set True if CPU pinning should be done on starting
+| | ... | containers. Type: boolean, default value: ${False}
| | ...
| | ... | *Example:*
| | ...
-| | ... | \| Start containers for performance test \| 1 \| 1 \|
+| | ... | \| Start containers for test \| 1 \| 1 \|
| | ...
| | [Arguments] | ${nf_chains}=${1} | ${nf_nodes}=${1} | ${auto_scale}=${True}
+| | ... | ${pinning}=${True}
| | ...
| | Set Test Variable | @{container_groups} | @{EMPTY}
| | Set Test Variable | ${container_group} | CNF
| | Import Library | resources.libraries.python.ContainerUtils.ContainerManager
| | ... | engine=${container_engine} | WITH NAME | ${container_group}
| | Construct chains of containers on all DUTs | ${nf_chains} | ${nf_nodes}
-| | ... | auto_scale=${auto_scale}
-| | Acquire all '${container_group}' containers
-| | Create all '${container_group}' containers
-| | Configure VPP in all '${container_group}' containers
-| | Stop VPP service on all DUTs | ${nodes}
-| | Start VPP in all '${container_group}' containers
-| | Restart VPP service on all DUTs | ${nodes}
-| | Verify VPP on all DUTs | ${nodes}
-| | Save VPP PIDs
-| | Append To List | ${container_groups} | ${container_group}
-
-| Start containers for device test
-| | [Documentation]
-| | ... | Start containers for device test.
-| | ...
-| | ... | *Arguments:*
-| | ... | - nf_chains: Total number of chains (Optional). Type: integer, default
-| | ... | value: ${1}
-| | ... | - nf_nodes: Total number of nodes per chain (Optional). Type: integer,
-| | ... | default value: ${1}
-| | ...
-| | ... | _NOTE:_ This KW sets following test case variables:
-| | ... | - dcr_uuid - Parent container UUID.
-| | ... | - dcr_root - Parent container overlay.
-| | ...
-| | ... | *Example:*
-| | ...
-| | ... | \| Set up functional test with containers \| 1 \| 1 \|
-| | ...
-| | [Arguments] | ${nf_chains}=${1} | ${nf_nodes}=${1}
-| | ...
-| | Set Test Variable | @{container_groups} | @{EMPTY}
-| | Set Test Variable | ${container_group} | CNF
-| | Import Library | resources.libraries.python.ContainerUtils.ContainerManager
-| | ... | engine=${container_engine} | WITH NAME | ${container_group}
-| | ...
-| | ${dcr_uuid}= | Get Environment Variable | CSIT_DUT1_UUID
-| | ${dcr_root}= | Run Keyword | Get Docker Mergeddir | ${nodes['DUT1']}
-| | ... | ${dcr_uuid}
-| | Set Test Variable | ${dcr_uuid}
-| | Set Test Variable | ${dcr_root}
-| | ...
-| | Construct chains of containers on all DUTs | ${nf_chains} | ${nf_nodes}
-| | ... | nested=${True}
+| | ... | auto_scale=${auto_scale} | pinning=${pinning}
| | Acquire all '${container_group}' containers
| | Create all '${container_group}' containers
| | Configure VPP in all '${container_group}' containers
| Library | resources.libraries.python.CpuUtils
| Library | resources.libraries.python.DUTSetup
| Library | resources.libraries.python.L2Util
+| Library | resources.libraries.python.Namespaces
| Library | resources.libraries.python.SchedUtils
| Library | resources.libraries.python.Tap
| Library | resources.libraries.python.TGSetup
| Resource | resources/libraries/robot/shared/suite_setup.robot
| Resource | resources/libraries/robot/shared/test_teardown.robot
| Resource | resources/libraries/robot/shared/test_setup.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
*** Keywords ***
| Show Vpp Errors On All DUTs
| | ... | - txq - TX queues; 0 means do not set (Optional). Type: integer,
| | ... | default value: ${1}
| | ... | - role - Memif role (Optional). Type: string, default value: SLAVE
-| | ... | - dcr_uuid - UUID string (including prefix - underscore character) of
-| | ... | DUT1 /tmp volume created outside of the DUT1 docker in case of
-| | ... | vpp-device test. ${EMPTY} value means that /tmp directory is inside
-| | ... | the DUT1 docker. (Optional). Type: string, default value: ${EMPTY}
| | ...
| | ... | _NOTE:_ This KW sets following test case variable:
| | ... | - ${${memif_if1}} - 1st Memif interface.
| | ...
| | [Arguments] | ${dut_node} | ${filename1} | ${filename2} | ${mid}=${1}
| | ... | ${memif_if1}=memif_if1 | ${memif_if2}=memif_if2 | ${rxq}=${1}
-| | ... | ${txq}=${1} | ${role}=SLAVE | ${dcr_uuid}=${EMPTY}
+| | ... | ${txq}=${1} | ${role}=SLAVE
| | ...
| | ${sid_1}= | Evaluate | (${mid}*2)-1
| | ${sid_2}= | Evaluate | (${mid}*2)
| | ${memif_1}= | Create memif interface | ${dut_node}
-| | ... | ${filename1}${mid}${dcr_uuid}-${sid_1} | ${mid} | ${sid_1}
+| | ... | ${filename1}${mid}${dut1_uuid}-${sid_1} | ${mid} | ${sid_1}
| | ... | rxq=${rxq} | txq=${txq} | role=${role}
| | ${memif_2}= | Create memif interface | ${dut_node}
-| | ... | ${filename2}${mid}${dcr_uuid}-${sid_2} | ${mid} | ${sid_2}
+| | ... | ${filename2}${mid}${dut1_uuid}-${sid_2} | ${mid} | ${sid_2}
| | ... | rxq=${rxq} | txq=${txq} | role=${role}
| | Set Interface State | ${dut_node} | ${memif_1} | up
| | Set Interface State | ${dut_node} | ${memif_2} | up
-# Copyright (c) 2018 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:
| | ...
| | ... | perf_trial_multiplicity - Number of trials to execute in MRR test.
| | ... | perf_trial_duration - Duration of one trial in MRR test.
+| | ... | dut1_uuid - UUID string of DUT1 /tmp volume created outside of the
+| | ... | DUT1 docker in case of vpp-device test. ${EMPTY} value means that
+| | ... | /tmp directory is inside the DUT1 docker
| | ...
| | Ensure Global Variable | perf_trial_multiplicity | 10
| | Ensure Global Variable | perf_trial_duration | 1
+| | Ensure Global Variable | dut1_uuid | ${EMPTY}
*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
-| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
-| Resource | resources/libraries/robot/l2/l2_traffic.robot
-| Resource | resources/libraries/robot/shared/testing_path.robot
| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV
-| ... | FUNCTEST | L2BDMACLRN | BASE | ETH | MEMIF | DOCKER
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER
| ...
-| Suite Setup | Setup suite single link
+| Suite Setup | Setup suite single link | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace | container
| ...
| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets \
| ... | are sent in both directions by TG on links to DUT1 and via container; \
| ... | on receive TG verifies packets for correctness and their IPv4 (IPv6) \
-| ... | src-addr, dst-addr and MAC addresses.pecifications:* RFC792
+| ... | src-addr, dst-addr and MAC addresses.
+| ... | *[Ref] Applicable standard specifications:* RFC792
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so | memif_plugin.so
| ${nic_name}= | virtual
-# L2BD
-| ${bd_id1}= | 1
-| ${bd_id2}= | 2
-# Memif
-| ${sock_base}= | memif-DUT1_CNF
+| ${overhead}= | ${0}
# Container
| ${container_engine}= | Docker
| ${container_chain_topology}= | chain_functional
*** Test Cases ***
-| tc01-eth2p-ethip4-l2bdbase-eth-2memif-1dcr-device
+| tc01-eth2p-ethip4-l2bdbase-eth-2memif-1dcr-dev
| | [Documentation]
-| | ... | [Top] TG=DUT=DCR. [Enc] Eth-IPv4-ICMPv4. [Cfg] Configure two \
-| | ... | L2 bridge-domains (L2BD) with MAC learning enabled on DUT1, each \
-| | ... | with one untagged interface to TG and untagged i/f to docker over \
-| | ... | memif. [Ver] Make TG send ICMPv4 Echo Req in both directions between \
-| | ... | two of its interfaces to be switched by DUT1; verify all packets are \
-| | ... | received.
+| | ... | [Ver] Make TG send ICMPv4 Echo Reqs in both directions between two\
+| | ... | of its interfaces to be switched by DUT to and from docker; verify\
+| | ... | all packets are received.
+| | ...
+| | Set Test Variable | ${frame_size} | ${42}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Start containers for device test
-| | And Configure interfaces in path up
-| | When Set up memif interfaces on DUT node | ${dut_node} | ${sock_base}
-| | ... | ${sock_base} | dcr_uuid=${dcr_uuid}
-| | ... | memif_if1=memif_if1 | memif_if2=memif_if2 | rxq=${0} | txq=${0}
-| | And Create bridge domain | ${dut_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1}
-| | ... | ${bd_id1}
-| | And Add interface to bridge domain | ${dut_node} | ${memif_if1}
-| | ... | ${bd_id1}
-| | And Create bridge domain | ${dut_node} | ${bd_id2}
-| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if2}
-| | ... | ${bd_id2}
-| | And Add interface to bridge domain | ${dut_node} | ${memif_if2}
-| | ... | ${bd_id2}
-| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node}
-| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2}
+| | When Start containers for test | auto_scale=${False} | pinning=${False}
+| | And Initialize L2 Bridge Domain with memif pairs | auto_scale=${False}
+| | Then Send ICMPv4 bidirectionally and verify received packets
+| | ... | ${tg} | ${tg_if1} | ${tg_if2}
-| tc02-eth2p-ethip6-l2bdbase-eth-2memif-1dcr-device
+| tc02-eth2p-ethip6-l2bdbase-eth-2memif-1dcr-dev
| | [Documentation]
-| | ... | [Top] TG=DUT=DCR. [Enc] Eth-IPv6-ICMPv6. [Cfg] Configure two \
-| | ... | L2 bridge-domains (L2BD) with MAC learning enabled on DUT1, each \
-| | ... | with one untagged interface to TG and untagged i/f to docker over \
-| | ... | memif. [Ver] Make TG send ICMPv4 Echo Req in both directions between \
-| | ... | two of its interfaces to be switched by DUT1; verify all packets are \
-| | ... | received.
+| | ... | [Ver] Make TG send ICMPv6 Echo Reqs in both directions between two\
+| | ... | of its interfaces to be switched by DUT to and from docker; verify\
+| | ... | all packets are received.
+| | ...
+| | Set Test Variable | ${frame_size} | ${62}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Start containers for device test
-| | And Configure interfaces in path up
-| | When Set up memif interfaces on DUT node | ${dut_node} | ${sock_base}
-| | ... | ${sock_base} | dcr_uuid=${dcr_uuid}
-| | ... | memif_if1=memif_if1 | memif_if2=memif_if2 | rxq=${0} | txq=${0}
-| | And Create bridge domain | ${dut_node} | ${bd_id1}
-| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1}
-| | ... | ${bd_id1}
-| | And Add interface to bridge domain | ${dut_node} | ${memif_if1}
-| | ... | ${bd_id1}
-| | And Create bridge domain | ${dut_node} | ${bd_id2}
-| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if2}
-| | ... | ${bd_id2}
-| | And Add interface to bridge domain | ${dut_node} | ${memif_if2}
-| | ... | ${bd_id2}
+| | When Start containers for test | auto_scale=${False} | pinning=${False}
+| | And Initialize L2 Bridge Domain with memif pairs | auto_scale=${False}
| | Then Send ICMPv6 bidirectionally and verify received packets
-| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2}
+| | ... | ${tg} | ${tg_if1} | ${tg_if2}
*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
-| Resource | resources/libraries/robot/l2/l2_xconnect.robot
-| Resource | resources/libraries/robot/l2/l2_traffic.robot
-| Resource | resources/libraries/robot/shared/testing_path.robot
| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV
-| ... | FUNCTEST | L2XCFWD | BASE | ETH | MEMIF | DOCKER
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | ETH | L2XCFWD | BASE | MEMIF | DOCKER
| ...
-| Suite Setup | Setup suite single link
+| Suite Setup | Setup suite single link | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace | container
| ...
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so | memif_plugin.so
| ${nic_name}= | virtual
-# Memif
-| ${sock_base}= | memif-DUT1_CNF
+| ${overhead}= | ${0}
# Container
| ${container_engine}= | Docker
| ${container_chain_topology}= | chain_functional
*** Test Cases ***
-| tc01-eth2p-ethip4-l2xcbase-eth-2memif-1dcr-device
+| tc01-eth2p-ethip4-l2xcbase-eth-2memif-1dcr-dev
| | [Documentation]
-| | ... | [Top] TG=DUT=DCR. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT configure \
-| | ... | two L2 cross-connects (L2XC), each with one untagged interface \
-| | ... | to TG and untagged i/f to docker over memif. [Ver] Make \
-| | ... | TG send ICMPv4 Echo Reqs in both directions between two of its \
-| | ... | i/fs to be switched by DUT to and from docker; verify all packets \
-| | ... | are received. [Ref]
+| | ... | [Ver] Make TG send ICMPv4 Echo Reqs in both directions between two\
+| | ... | of its interfaces to be switched by DUT to and from docker; verify\
+| | ... | all packets are received.
+| | ...
+| | Set Test Variable | ${frame_size} | ${42}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Start containers for device test
-| | And Configure interfaces in path up
-| | When Set up memif interfaces on DUT node | ${dut_node} | ${sock_base}
-| | ... | ${sock_base} | dcr_uuid=${dcr_uuid}
-| | ... | memif_if1=memif_if1 | memif_if2=memif_if2 | rxq=${0} | txq=${0}
-| | And Configure L2XC | ${dut_node} | ${dut_to_tg_if1} | ${memif_if1}
-| | And Configure L2XC | ${dut_node} | ${dut_to_tg_if2} | ${memif_if2}
-| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node}
-| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2}
+| | When Start containers for test | auto_scale=${False} | pinning=${False}
+| | And Initialize L2 xconnect with memif pairs
+| | Then Send ICMPv4 bidirectionally and verify received packets
+| | ... | ${tg} | ${tg_if1} | ${tg_if2}
-| tc02-eth2p-ethip6-l2xcbase-eth-2memif-1dcr-device
+| tc02-eth2p-ethip6-l2xcbase-eth-2memif-1dcr-dev
| | [Documentation]
-| | ... | [Top] TG=DUT=DCR. [Enc] Eth-IPv6-ICMPv6. [Cfg] On DUT configure\
-| | ... | two L2 cross-connects (L2XC), each with one untagged i/f to TG\
-| | ... | and untagged i/f to docker over memif. [Ver] Make TG send\
-| | ... | ICMPv6 Echo Reqs in both directions between two of its i/fs to\
-| | ... | be switched by DUT to and from docker; verify all packets are\
-| | ... | received. [Ref]
+| | ... | [Ver] Make TG send ICMPv6 Echo Reqs in both directions between two\
+| | ... | of its interfaces to be switched by DUT to and from docker; verify\
+| | ... | all packets are received.
+| | ...
+| | Set Test Variable | ${frame_size} | ${62}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Start containers for device test
-| | And Configure interfaces in path up
-| | When Set up memif interfaces on DUT node | ${dut_node} | ${sock_base}
-| | ... | ${sock_base} | dcr_uuid=${dcr_uuid}
-| | ... | memif_if1=memif_if1 | memif_if2=memif_if2 | rxq=${0} | txq=${0}
-| | And Configure L2XC | ${dut_node} | ${dut_to_tg_if1} | ${memif_if1}
-| | And Configure L2XC | ${dut_node} | ${dut_to_tg_if2} | ${memif_if2}
-| | Then Send ICMPv6 bidirectionally and verify received packets | ${tg_node}
-| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2}
+| | When Start containers for test | auto_scale=${False} | pinning=${False}
+| | And Initialize L2 xconnect with memif pairs
+| | Then Send ICMPv6 bidirectionally and verify received packets
+| | ... | ${tg} | ${tg_if1} | ${tg_if2}
# limitations under the License.
*** Settings ***
-| Library | resources.libraries.python.InterfaceUtil
-| Library | resources.libraries.python.IPUtil
-| ...
| Resource | resources/libraries/robot/shared/default.robot
-| Resource | resources/libraries/robot/ip/ip4.robot
-| Resource | resources/libraries/robot/shared/testing_path.robot
-| Resource | resources/libraries/robot/shared/traffic.robot
| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV
-| ... | FUNCTEST | IP4FWD | BASE | ETH | MEMIF | DOCKER
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | ETH | IP4FWD | BASE | MEMIF | DOCKER
| ...
-| Suite Setup | Setup suite single link
+| Suite Setup | Setup suite single link | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace | container
| ...
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so | memif_plugin.so
| ${nic_name}= | virtual
-# IP
-| ${net1}= | 10.0.1.0
-| ${net3}= | 10.0.3.0
-| ${net1_ip1}= | 10.0.1.1
-| ${net1_ip2}= | 10.0.1.2
-| ${net2_ip1}= | 10.0.2.1
-| ${net2_ip2}= | 10.0.2.2
-| ${net3_ip1}= | 10.0.3.1
-| ${net3_ip2}= | 10.0.3.2
-| ${prefix_length}= | 24
-| ${fib_table_2}= | 20
-# Memif
-| ${sock_base}= | memif-DUT1_CNF
+| ${overhead}= | ${0}
# Container
| ${container_engine}= | Docker
| ${container_chain_topology}= | chain_functional
*** Test Cases ***
-| tc01-eth2p-ethip4-ip4base-eth-2memif-1dcr-device
+| tc01-eth2p-ethip4-ip4base-eth-2memif-1dcr-dev
| | [Documentation]
-| | ... | [Top] TG=DUT=DCR. [Enc] Eth-IPv4-ICMPv4. [Cfg] Configure two VRFs to \
-| | ... | route IPv4 traffic through two memif interfaces. Both interfaces are \
-| | ... | configured with IP addresses from the same network. [Ver] Make TG to \
-| | ... | send ICMPv4 Echo Reqest form one TG interface to another one to be \
-| | ... | switched by DUT1; verify header of received packet.
+| | ... | [Ver] Make TG send ICMPv4 Echo Reqs in both directions between two\
+| | ... | of its interfaces to be routed by DUT to and from docker; verify\
+| | ... | all packets are received.
+| | ...
+| | Set Test Variable | ${frame_size} | ${42}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Start containers for device test
-| | And Configure interfaces in path up
-| | When Set up memif interfaces on DUT node
-| | ... | ${dut_node} | ${sock_base} | ${sock_base} | dcr_uuid=${dcr_uuid}
-| | ... | memif_if1=memif_if1 | memif_if2=memif_if2 | rxq=${0} | txq=${0}
-| | And Add Fib Table | ${dut_node} | ${fib_table_2}
-| | And Assign Interface To Fib Table
-| | ... | ${dut_node} | ${memif_if2} | ${fib_table_2}
-| | And Assign Interface To Fib Table
-| | ... | ${dut_node} | ${dut_to_tg_if2} | ${fib_table_2}
-| | And Configure IP addresses on interfaces
-| | ... | ${dut_node} | ${dut_to_tg_if1} | ${net1_ip1} | ${prefix_length}
-| | ... | ${dut_node} | ${memif_if1} | ${net2_ip1} | ${prefix_length}
-| | ... | ${dut_node} | ${memif_if2} | ${net2_ip2} | ${prefix_length}
-| | ... | ${dut_node} | ${dut_to_tg_if2} | ${net3_ip1} | ${prefix_length}
-| | ${memif_if2_key}= | Get interface by sw index | ${nodes['DUT1']}
-| | ... | ${memif_if2}
-| | ${memif_if2_mac}= | Get interface MAC | ${nodes['DUT1']} | ${memif_if2_key}
-| | And Vpp Route Add
-| | ... | ${dut_node} | ${net3} | ${prefix_length}
-| | ... | gateway=${net2_ip2} | interface=${memif_if1}
-| | And Vpp Route Add
-| | ... | ${dut_node} | ${net1} | ${prefix_length}
-| | ... | gateway=${net2_ip1} | interface=${memif_if2} | vrf=${fib_table_2}
-| | VPP Add IP Neighbor
-| | ... | ${dut_node} | ${memif_if1} | ${net2_ip2} | ${memif_if2_mac}
-| | VPP Add IP Neighbor
-| | ... | ${dut_node} | ${dut_to_tg_if2} | ${net3_ip2} | ${tg_to_dut_if2_mac}
+| | When Start containers for test | auto_scale=${False} | pinning=${False}
+| | And Initialize IPv4 routing with memif pairs
| | Then Send packet and verify headers
-| | ... | ${tg_node} | ${net1_ip2} | ${net3_ip2}
-| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac}
-| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac}
+| | ... | ${tg} | 10.10.10.1 | 20.20.20.1
+| | ... | ${tg_if1} | ${tg_if1_mac} | ${dut1_if1_mac}
+| | ... | ${tg_if2} | ${dut1_if2_mac} | ${tg_if2_mac}
# limitations under the License.
*** Settings ***
-| Library | resources.libraries.python.InterfaceUtil
-| Library | resources.libraries.python.IPUtil
-| ...
| Resource | resources/libraries/robot/shared/default.robot
-| Resource | resources/libraries/robot/shared/testing_path.robot
-| Resource | resources/libraries/robot/shared/traffic.robot
| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV
-| ... | FUNCTEST | IP6FWD | BASE | ETH | MEMIF | DOCKER
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | ETH | IP6FWD | BASE | MEMIF | DOCKER
| ...
-| Suite Setup | Setup suite single link
+| Suite Setup | Setup suite single link | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace | container
| ...
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so | memif_plugin.so
| ${nic_name}= | virtual
-# IP
-| ${net1}= | 2001:1::0
-| ${net3}= | 2001:3::0
-| ${net1_ip1}= | 2001:1::1
-| ${net1_ip2}= | 2001:1::2
-| ${net2_ip1}= | 2001:2::1
-| ${net2_ip2}= | 2001:2::2
-| ${net3_ip1}= | 2001:3::1
-| ${net3_ip2}= | 2001:3::2
-| ${prefix_length}= | 64
-| ${fib_table_2}= | 20
-# Memif
-| ${sock_base}= | memif-DUT1_CNF
+| ${overhead}= | ${0}
# Container
| ${container_engine}= | Docker
| ${container_chain_topology}= | chain_functional
*** Test Cases ***
-| tc01-eth2p-ethip6-ip6base-eth-2memif-1dcr-device
+| tc01-eth2p-ethip6-ip6base-eth-2memif-1dcr-dev
| | [Documentation]
-| | ... | [Top] TG=DUT=DCR. [Enc] Eth-IPv6-ICMPv6. [Cfg] Configure two VRFs to \
-| | ... | route IPv6 traffic through two memif interfaces. Both interfaces are \
-| | ... | configured with IP addresses from the same network. [Ver] Make TG to \
-| | ... | send ICMPv6 Echo Reqest form one TG interface to another one to be \
-| | ... | switched by DUT1; verify header of received packet.
+| | ... | [Ver] Make TG send ICMPv6 Echo Reqs in both directions between two\
+| | ... | of its interfaces to be routed by DUT to and from docker; verify\
+| | ... | all packets are received.
+| | ...
+| | Set Test Variable | ${frame_size} | ${62}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Start containers for device test
-| | And Configure interfaces in path up
-| | When Set up memif interfaces on DUT node
-| | ... | ${dut_node} | ${sock_base} | ${sock_base} | dcr_uuid=${dcr_uuid}
-| | ... | memif_if1=memif_if1 | memif_if2=memif_if2 | rxq=${0} | txq=${0}
-| | And Add Fib Table | ${dut_node} | ${fib_table_2} | ipv6=${True}
+| | When Start containers for test | auto_scale=${False} | pinning=${False}
+| | And Set interfaces in path up
+| | And Set up memif interfaces on DUT node
+| | ... | ${dut1} | memif-DUT1_CNF | memif-DUT1_CNF
+| | ... | memif_if1=memif_if1 | memif_if2=memif_if2
+| | ... | rxq=${rxq_count_int} | txq=${rxq_count_int}
+| | And Add Fib Table | ${dut1} | 20 | ipv6=${True}
| | And Assign Interface To Fib Table
-| | ... | ${dut_node} | ${memif_if2} | ${fib_table_2} | ipv6=${True}
+| | ... | ${dut1} | ${memif_if2} | 20 | ipv6=${True}
| | And Assign Interface To Fib Table
-| | ... | ${dut_node} | ${dut_to_tg_if2} | ${fib_table_2} | ipv6=${True}
+| | ... | ${dut1} | ${dut1_if2} | 20 | ipv6=${True}
| | And VPP Interface Set IP Address
-| | ... | ${dut_node} | ${dut_to_tg_if1} | ${net1_ip1} | ${prefix_length}
+| | ... | ${dut1} | ${dut1_if1} | 2001:1::1 | 64
| | And VPP Interface Set IP Address
-| | ... | ${dut_node} | ${memif_if1} | ${net2_ip1} | ${prefix_length}
+| | ... | ${dut1} | ${memif_if1} | 2001:2::1 | 64
| | And VPP Interface Set IP Address
-| | ... | ${dut_node} | ${memif_if2} | ${net2_ip2} | ${prefix_length}
+| | ... | ${dut1} | ${memif_if2} | 2001:2::2 | 64
| | And VPP Interface Set IP Address
-| | ... | ${dut_node} | ${dut_to_tg_if2} | ${net3_ip1} | ${prefix_length}
+| | ... | ${dut1} | ${dut1_if2} | 2001:3::1 | 64
| | ${memif_if2_key}= | Get interface by sw index | ${nodes['DUT1']}
| | ... | ${memif_if2}
| | ${memif_if2_mac}= | Get interface MAC | ${nodes['DUT1']} | ${memif_if2_key}
| | And Vpp Route Add
-| | ... | ${dut_node} | ${net3} | ${prefix_length}
-| | ... | gateway=${net2_ip2} | interface=${memif_if1}
+| | ... | ${dut1} | 2001:3::0 | 64 | gateway=2001:2::2 | interface=${memif_if1}
| | And Vpp Route Add
-| | ... | ${dut_node} | ${net1} | ${prefix_length}
-| | ... | gateway=${net2_ip1} | interface=${memif_if2} | vrf=${fib_table_2}
+| | ... | ${dut1} | 2001:1::0 | 64 | gateway=2001:2::2 | interface=${memif_if2}
+| | ... | vrf=20
| | VPP Add IP Neighbor
-| | ... | ${dut_node} | ${memif_if1} | ${net2_ip2} | ${memif_if2_mac}
+| | ... | ${dut1} | ${memif_if1} | 2001:2::2 | ${memif_if2_mac}
| | VPP Add IP Neighbor
-| | ... | ${dut_node} | ${dut_to_tg_if2} | ${net3_ip2} | ${tg_to_dut_if2_mac}
+| | ... | ${dut1} | ${dut1_if2} | 2001:3::2 | ${tg_if2_mac}
| | Then Send packet and verify headers
-| | ... | ${tg_node} | ${net1_ip2} | ${net3_ip2}
-| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac}
-| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac}
+| | ... | ${tg} | 2001:1::1 | 2001:3::2
+| | ... | ${tg_if1} | ${tg_if1_mac} | ${dut1_if1_mac}
+| | ... | ${tg_if2} | ${dut1_if2_mac} | ${tg_if2_mac}
*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV
-| ... | FUNCTEST | IP4FWD | IPSEC | IPSEC_TNL | IP4BASE
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | IP4FWD | IPSEC | IPSEC_TNL | IP4BASE
| ...
-| Suite Setup | Setup suite single link
+| Suite Setup | Setup suite single link | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace
| ...
| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${nic_name}= | virtual
+| ${overhead}= | ${58}
| ${tg_spi}= | ${1000}
| ${dut_spi}= | ${1001}
| ${ESP_PROTO}= | ${50}
| ${ip4_plen}= | ${24}
*** Test Cases ***
-| tc01-eth2p-ethip4ipsectnl-ip4base-device-aes-128-cbc-sha-256-128
+| tc01-eth2p-ethip4ipsectnl-ip4base-dev-aes-128-cbc-sha-256-128
| | [Documentation]
| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\
| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-256-128 in tunnel\
| | ... | mode.
-| | ... | [Ver] Send and receive ESP packet between TG and VPP node.
+| | ...
+| | Set Test Variable | ${frame_size} | ${106}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
| | When Configure topology for IPv4 IPsec testing
| | ${auth_alg}= | Integ Alg SHA 256 128
| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
| | And Configure manual keyed connection for IPSec
-| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
+| | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
| | ... | ${dut_tun_ip} | ${tg_tun_ip}
| | Then Send IPsec Packet and verify ESP encapsulation in received packet
-| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac}
| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
| | ... | ${dut_tun_ip}
-| tc02-eth2p-ethip4ipsectnl-ip4base-device-aes-128-cbc-sha-512-256
+| tc02-eth2p-ethip4ipsectnl-ip4base-dev-aes-128-cbc-sha-512-256
| | [Documentation]
| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\
| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-512-256 in tunnel\
| | ... | mode.
-| | ... | [Ver] Send and receive ESP packet between TG and VPP node.
+| | ...
+| | Set Test Variable | ${frame_size} | ${106}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
| | When Configure topology for IPv4 IPsec testing
| | ${auth_alg}= | Integ Alg SHA 512 256
| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
| | And Configure manual keyed connection for IPSec
-| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
+| | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
| | ... | ${dut_tun_ip} | ${tg_tun_ip}
| | Then Send IPsec Packet and verify ESP encapsulation in received packet
-| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac}
| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
| | ... | ${dut_tun_ip}
*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV
-| ... | FUNCTEST | IP4FWD | IPSEC | IPSEC_TPT | IP4BASE
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | IP4FWD | IPSEC | IPSEC_TPT | IP4BASE
| ...
-| Suite Setup | Setup suite single link
+| Suite Setup | Setup suite single link | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace
| ...
| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${nic_name}= | virtual
+| ${overhead}= | ${58}
| ${tg_spi}= | ${1000}
| ${dut_spi}= | ${1001}
| ${ESP_PROTO}= | ${50}
| ${ip4_plen}= | ${24}
*** Test Cases ***
-| tc01-eth2p-ethip4ipsectpt-ip4base-device-aes-128-cbc-sha-256-128
+| tc01-eth2p-ethip4ipsectpt-ip4base-dev-aes-128-cbc-sha-256-128
| | [Documentation]
| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\
-| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-256-128 in transport
-| | ... | mode.
-| | ... | [Ver] Send and receive ESP packet between TG and VPP node.
+| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-256-128 in\
+| | ... | transport mode.
+| | ...
+| | Set Test Variable | ${frame_size} | ${90}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
| | When Configure topology for IPv4 IPsec testing
| | ${auth_alg}= | Integ Alg SHA 256 128
| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
| | And Configure manual keyed connection for IPSec
-| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
+| | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
| | Then Send IPsec Packet and verify ESP encapsulation in received packet
-| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac}
| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
-| tc02-eth2p-ethip4ipsectpt-ip4base-device-aes-128-cbc-sha-512-256
+| tc02-eth2p-ethip4ipsectpt-ip4base-dev-aes-128-cbc-sha-512-256
| | [Documentation]
| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\
-| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-512-256 in transport
-| | ... | mode.
-| | ... | [Ver] Send and receive ESP packet between TG and VPP node.
+| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-512-256 in\
+| | ... | transport mode.
+| | ...
+| | Set Test Variable | ${frame_size} | ${90}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
| | When Configure topology for IPv4 IPsec testing
| | ${auth_alg}= | Integ Alg SHA 512 256
| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
| | And Configure manual keyed connection for IPSec
-| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
+| | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
| | Then Send IPsec Packet and verify ESP encapsulation in received packet
-| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac}
| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
-# 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:
*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV
-| ... | FUNCTEST | IP6FWD | IPSEC | IPSEC_TNL | IP6BASE
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | IP6FWD | IPSEC | IPSEC_TNL | IP6BASE
| ...
-| Suite Setup | Setup suite single link
+| Suite Setup | Setup suite single link | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace
| ...
| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${nic_name}= | virtual
+| ${overhead}= | ${58}
| ${tg_spi}= | ${1000}
| ${dut_spi}= | ${1001}
| ${ESP_PROTO}= | ${50}
| ${ip6_plen_rt}= | ${128}
*** Test Cases ***
-| tc01-eth2p-ethip6ipsectnl-ip6base-device-aes-128-cbc-sha-256-128
+| tc01-eth2p-ethip6ipsectnl-ip6base-dev-aes-128-cbc-sha-256-128
| | [Documentation]
| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\
| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-256-128 in tunnel\
| | ... | mode.
-| | ... | [Ver] Send and receive ESP packet between TG and VPP node.
+| | ...
+| | Set Test Variable | ${frame_size} | ${158}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
| | When Configure topology for IPv6 IPsec testing
| | ${auth_alg}= | Integ Alg SHA 256 128
| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
| | And Configure manual keyed connection for IPSec
-| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
+| | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
| | ... | ${dut_tun_ip} | ${tg_tun_ip} | is_ipv6=${TRUE}
| | Then Send IPsec Packet and verify ESP encapsulation in received packet
-| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac}
| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
| | ... | ${dut_tun_ip}
-| tc02-eth2p-ethip6ipsectnl-ip6base-device-aes-128-cbc-sha-512-256
+| tc02-eth2p-ethip6ipsectnl-ip6base-dev-aes-128-cbc-sha-512-256
| | [Documentation]
| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\
| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-512-256 in tunnel\
| | ... | mode.
-| | ... | [Ver] Send and receive ESP packet between TG and VPP node.
+| | ...
+| | Set Test Variable | ${frame_size} | ${158}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
| | When Configure topology for IPv6 IPsec testing
| | ${auth_alg}= | Integ Alg SHA 512 256
| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
| | And Configure manual keyed connection for IPSec
-| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
+| | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
| | ... | ${dut_tun_ip} | ${tg_tun_ip} | is_ipv6=${TRUE}
| | Then Send IPsec Packet and verify ESP encapsulation in received packet
-| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac}
| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
| | ... | ${dut_tun_ip}
*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV
-| ... | FUNCTEST | IP6FWD | IPSEC | IPSEC_TPT | IP6BASE
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | IP6FWD | IPSEC | IPSEC_TPT | IP6BASE
| ...
-| Suite Setup | Setup suite single link
+| Suite Setup | Setup suite single link | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace
| ...
| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${nic_name}= | virtual
+| ${overhead}= | ${58}
| ${tg_spi}= | ${1000}
| ${dut_spi}= | ${1001}
| ${ESP_PROTO}= | ${50}
| ${ip6_plen_rt}= | ${128}
*** Test Cases ***
-| tc01-eth2p-ethip6ipsectpt-ip6base-device-aes-128-cbc-sha-256-128
+| tc01-eth2p-ethip6ipsectpt-ip6base-dev-aes-128-cbc-sha-256-128
| | [Documentation]
| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\
-| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-256-128 in transport
-| | ... | mode.
-| | ... | [Ver] Send and receive ESP packet between TG and VPP node.
+| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-256-128 in\
+| | ... | transport mode.
+| | ...
+| | Set Test Variable | ${frame_size} | ${174}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
| | When Configure topology for IPv6 IPsec testing
| | ${auth_alg}= | Integ Alg SHA 256 128
| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
| | And Configure manual keyed connection for IPSec
-| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
+| | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
| | ... | is_ipv6=${TRUE}
| | Then Send IPsec Packet and verify ESP encapsulation in received packet
-| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac}
| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
-| tc02-eth2p-ethip6ipsectpt-ip6base-device-aes-128-cbc-sha-512-256
+| tc02-eth2p-ethip6ipsectpt-ip6base-dev-aes-128-cbc-sha-512-256
| | [Documentation]
| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\
-| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-512-256 in transport
-| | ... | mode.
-| | ... | [Ver] Send and receive ESP packet between TG and VPP node.
+| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-512-256 in\
+| | ... | transport mode.
+| | ...
+| | Set Test Variable | ${frame_size} | ${174}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
| | When Configure topology for IPv6 IPsec testing
| | ${auth_alg}= | Integ Alg SHA 512 256
| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
| | And Configure manual keyed connection for IPSec
-| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg}
+| | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
| | ... | is_ipv6=${TRUE}
| | Then Send IPsec Packet and verify ESP encapsulation in received packet
-| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac}
+| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac}
| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
-| Resource | resources/libraries/robot/ip/ip4.robot
-| Resource | resources/libraries/robot/ip/ip6.robot
-| Resource | resources/libraries/robot/shared/interfaces.robot
-| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
-| Resource | resources/libraries/robot/shared/testing_path.robot
-| Resource | resources/libraries/robot/shared/traffic.robot
-| Library | resources.libraries.python.Trace
-| Library | resources.libraries.python.Tap
-| Library | resources.libraries.python.Namespaces
-| Library | resources.libraries.python.IPUtil
| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV
-| ... | FUNCTEST | L2BD | BASE | ETH | TAP
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | ETH | L2BD | BASE | TAP
| ...
-| Suite Setup | Setup suite single link
+| Suite Setup | Setup suite single link | scapy
| Test Setup | Setup test | namespace
| Test Teardown | Tear down test | packet_trace | namespace | linux_bridge
| ...
| Documentation | *Tap Interface Traffic Tests*
+| ...
| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links
| ... | between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so
| ${nic_name}= | virtual
-| ${bid_from_TG}= | 19
-| ${bid_to_TG}= | 20
+| ${overhead}= | ${0}
| ${bid_TAP}= | tapBr
-| ${tap_int1}= | tap0
-| ${tap_int2}= | tap1
*** Test Cases ***
-| tc01-eth2p-ethicmpv4-l2bdbasemaclrn-eth-2tap-device_tap-simple-bd
+| tc01-eth2p-ethicmpv4-l2bdbasemaclrn-eth-2tap-dev_tap-simple-bd
| | [Documentation]
-| | ... | [Cfg] On DUT1 configure two L2BD with two if's for each L2BD with MAC\
-| | ... | learning and one L2BD joining two linux-TAP interfaces created by VPP\
-| | ... | located in namespace.
| | ... | [Ver] Packet sent from TG is passed through all L2BD and received\
| | ... | back on TG. Then src_ip, dst_ip and MAC are checked.
| | ...
+| | Set Test Variable | ${frame_size} | ${42}
+| | Set Test Variable | ${rxq_count_int} | ${1}
+| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology | ${nodes['TG']}
-| | ... | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Set interfaces in 2-node circular topology up
-| | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1}
-| | ${int2}= | And Add Tap Interface | ${dut_node} | ${tap_int2}
-| | And Set Interface State | ${dut_node} | ${int1} | up
-| | And Set Interface State | ${dut_node} | ${int2} | up
-| | And Create bridge domain | ${dut_node}
-| | ... | ${bid_from_TG} | learn=${TRUE}
-| | And Create bridge domain | ${dut_node}
-| | ... | ${bid_to_TG} | learn=${TRUE}
-| | And Linux Add Bridge | ${dut_node}
-| | ... | ${bid_TAP} | ${tap_int1} | ${tap_int2}
-| | And Add interface to bridge domain | ${dut_node}
-| | ... | ${int1} | ${bid_to_TG} | 0
-| | And Add interface to bridge domain | ${dut_node}
-| | ... | ${dut_to_tg_if1} | ${bid_to_TG} | 0
-| | And Add interface to bridge domain | ${dut_node}
-| | ... | ${int2} | ${bid_from_TG} | 0
-| | And Add interface to bridge domain | ${dut_node}
-| | ... | ${dut_to_tg_if2} | ${bid_from_TG} | 0
-| | Then Send ICMP packet and verify received packet | ${tg_node}
-| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2}
+| | When Set interfaces in path up
+| | ${int1}= | And Add Tap Interface | ${dut1} | tap0
+| | ${int2}= | And Add Tap Interface | ${dut1} | tap1
+| | And Set Interface State | ${dut1} | ${int1} | up
+| | And Set Interface State | ${dut1} | ${int2} | up
+| | And Create bridge domain | ${dut1} | 19 | learn=${TRUE}
+| | And Create bridge domain | ${dut1} | 20 | learn=${TRUE}
+| | And Linux Add Bridge | ${dut1} | ${bid_TAP} | tap0 | tap1
+| | And Add interface to bridge domain | ${dut1} | ${int1} | 20 | 0
+| | And Add interface to bridge domain | ${dut1} | ${dut1_if1} | 20 | 0
+| | And Add interface to bridge domain | ${dut1} | ${int2} | 19 | 0
+| | And Add interface to bridge domain | ${dut1} | ${dut1_if2} | 19 | 0
+| | Then Send ICMP packet and verify received packet
+| | ... | ${tg} | ${tg_if1} | ${tg_if2}
# limitations under the License.
*** Settings ***
-| Library | resources.libraries.python.IPUtil
-| Library | resources.libraries.python.Namespaces
-| Library | resources.libraries.python.Tap
-| Library | resources.libraries.python.Trace
-| ...
| Resource | resources/libraries/robot/shared/default.robot
-| Resource | resources/libraries/robot/ip/ip4.robot
-| Resource | resources/libraries/robot/ip/ip6.robot
-| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
-| Resource | resources/libraries/robot/shared/interfaces.robot
-| Resource | resources/libraries/robot/shared/testing_path.robot
-| Resource | resources/libraries/robot/shared/traffic.robot
| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV
-| ... | FUNCTEST | IP4FWD | BASE | ETH | IP4BASE | TAP
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | ETH | IP4FWD | BASE | IP4BASE | TAP
| ...
-| Suite Setup | Setup suite single link
+| Suite Setup | Setup suite single link | scapy
| Test Setup | Setup test | namespace
| Test Teardown | Tear down test | packet_trace | namespace
| ...
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so
| ${nic_name}= | virtual
+| ${overhead}= | ${0}
| ${tap1_VPP_ip}= | 16.0.10.1
| ${tap1_NM_ip}= | 16.0.10.2
| ${tap1_NM_mac}= | 02:00:00:00:00:02
-| ${tap_int1}= | tap0
-| ${namespace1}= | nmspace1
| ${dut_ip_address}= | 192.168.0.1
| ${tg_ip_address}= | 192.168.0.2
| ${tg_ip_address_GW}= | 192.168.0.0
| ${prefix}= | 24
*** Test Cases ***
-| tc01-eth2p-ethicmpv4-ip4base-device_tap-no-namespace
+| tc01-eth2p-ethicmpv4-ip4base-dev_tap-no-namespace
| | [Documentation]
| | ... | [Cfg] On DUT1 configure two interface addresses with IPv4 of which\
| | ... | one is TAP interface (dut_to_tg_if and TAP) and one is linux-TAP.
| | ... | [Ver] Packet sent from TG gets to the destination and ICMP-reply is\
| | ... | received on TG.
| | ...
+| | Set Test Variable | ${frame_size} | ${42}
+| | Set Test Variable | ${rxq_count_int} | ${1}
+| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology | ${nodes['TG']}
-| | ... | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Set interfaces in 2-node circular topology up
-| | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1} |
+| | When Set interfaces in path up
+| | ${int1}= | And Add Tap Interface | ${dut1} | tap0
| | And VPP Interface Set IP Address
-| | ... | ${dut_node} | ${int1} | ${tap1_VPP_ip} | ${prefix}
+| | ... | ${dut1} | ${int1} | ${tap1_VPP_ip} | ${prefix}
| | And VPP Interface Set IP Address
-| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip_address} | ${prefix}
-| | And Set Interface State | ${dut_node} | ${int1} | up
-| | And Set Linux Interface MAC | ${dut_node} | ${tap_int1} | ${tap1_NM_mac}
-| | And Set Linux Interface IP | ${dut_node}
-| | ... | ${tap_int1} | ${tap1_NM_ip} | ${prefix}
-| | And Add Linux Route | ${dut_node}
-| | ... | ${tg_ip_address_GW} | ${prefix} | ${tap1_VPP_ip}
-| | And VPP Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1}
-| | ... | ${tg_ip_address} | ${tg_to_dut_if1_mac}
-| | And VPP Add IP Neighbor | ${dut_node} | ${int1}
-| | ... | ${tap1_NM_ip} | ${tap1_NM_mac}
-| | Then Send ICMP echo request and verify answer | ${tg_node}
-| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} | ${tg_to_dut_if1_mac}
+| | ... | ${dut1} | ${dut1_if1} | ${dut_ip_address} | ${prefix}
+| | And Set Interface State | ${dut1} | ${int1} | up
+| | And Set Linux Interface MAC | ${dut1} | tap0 | ${tap1_NM_mac}
+| | And Set Linux Interface IP | ${dut1} | tap0 | ${tap1_NM_ip} | ${prefix}
+| | And Add Linux Route
+| | ... | ${dut1} | ${tg_ip_address_GW} | ${prefix} | ${tap1_VPP_ip}
+| | And VPP Add IP Neighbor
+| | ... | ${dut1} | ${dut1_if1} | ${tg_ip_address} | ${tg_if1_mac}
+| | And VPP Add IP Neighbor
+| | ... | ${dut1} | ${int1} | ${tap1_NM_ip} | ${tap1_NM_mac}
+| | Then Send ICMP echo request and verify answer
+| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac} | ${tg_if1_mac}
| | ... | ${tap1_NM_ip} | ${tg_ip_address}
-| tc02-eth2p-ethicmpv4-ip4base-device_tap-namespace
+| tc02-eth2p-ethicmpv4-ip4base-dev_tap-namespace
| | [Documentation]
| | ... | [Cfg] On DUT1 configure two interface addresses with IPv4 of which\
| | ... | one is TAP interface (dut_to_tg_if and TAP) and one is linux-TAP in\
| | ... | [Ver] Packet sent from TG gets to the destination and ICMP-reply is\
| | ... | received on TG.
| | ...
+| | Set Test Variable | ${frame_size} | ${42}
+| | Set Test Variable | ${rxq_count_int} | ${1}
+| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology | ${nodes['TG']}
-| | ... | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Set interfaces in 2-node circular topology up
-| | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1} |
+| | When Set interfaces in path up
+| | ${int1}= | And Add Tap Interface | ${dut1} | tap0
| | And VPP Interface Set IP Address
-| | ... | ${dut_node} | ${int1} | ${tap1_VPP_ip} | ${prefix}
+| | ... | ${dut1} | ${int1} | ${tap1_VPP_ip} | ${prefix}
| | And VPP Interface Set IP Address
-| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip_address} | ${prefix}
-| | And Set Interface State | ${dut_node} | ${int1} | up
-| | When Create Namespace | ${dut_node} | ${namespace1}
-| | And Attach Interface To Namespace | ${dut_node}
-| | ... | ${namespace1} | ${tap_int1}
-| | And Set Linux Interface MAC | ${dut_node}
-| | ... | ${tap_int1} | ${tap1_NM_mac} | ${namespace1}
-| | And Set Linux Interface IP | ${dut_node}
-| | ... | ${tap_int1} | ${tap1_NM_ip} | ${prefix} | ${namespace1}
-| | And VPP Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1}
-| | ... | ${tg_ip_address} | ${tg_to_dut_if1_mac}
-| | And VPP Add IP Neighbor | ${dut_node} | ${int1}
-| | ... | ${tap1_NM_ip} | ${tap1_NM_mac}
-| | And Add Linux Route | ${dut_node}
-| | ... | ${tg_ip_address_GW} | ${prefix} | ${tap1_VPP_ip} | ${namespace1}
-| | Then Send ICMP echo request and verify answer | ${tg_node}
-| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} | ${tg_to_dut_if1_mac}
+| | ... | ${dut1} | ${dut1_if1} | ${dut_ip_address} | ${prefix}
+| | And Set Interface State | ${dut1} | ${int1} | up
+| | And Create Namespace | ${dut1} | nmspace1
+| | And Attach Interface To Namespace | ${dut1} | nmspace1 | tap0
+| | And Set Linux Interface MAC
+| | ... | ${dut1} | tap0 | ${tap1_NM_mac} | nmspace1
+| | And Set Linux Interface IP
+| | ... | ${dut1} | tap0 | ${tap1_NM_ip} | ${prefix} | nmspace1
+| | And VPP Add IP Neighbor
+| | ... | ${dut1} | ${dut1_if1} | ${tg_ip_address} | ${tg_if1_mac}
+| | And VPP Add IP Neighbor
+| | ... | ${dut1} | ${int1} | ${tap1_NM_ip} | ${tap1_NM_mac}
+| | And Add Linux Route
+| | ... | ${dut1} | ${tg_ip_address_GW} | ${prefix} | ${tap1_VPP_ip} | nmspace1
+| | Then Send ICMP echo request and verify answer
+| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac} | ${tg_if1_mac}
| | ... | ${tap1_NM_ip} | ${tg_ip_address}
*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
-| Resource | resources/libraries/robot/ip/ip4.robot
-| Resource | resources/libraries/robot/shared/interfaces.robot
-| Resource | resources/libraries/robot/shared/traffic.robot
| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV
-| ... | FUNCTEST | IP4FWD | BASE | ETH | IP4BASE
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | ETH | IP4FWD | BASE | IP4BASE
| ...
-| Suite Setup | Setup suite single link
+| Suite Setup | Setup suite single link | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace
| ...
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so
| ${nic_name}= | virtual
-| ${tg_to_dut_if1_ip4}= | 10.10.10.2
-| ${tg_to_dut_if2_ip4}= | 20.20.20.2
-| ${dut_to_tg_if1_ip4}= | 10.10.10.1
-| ${dut_to_tg_if2_ip4}= | 20.20.20.1
-| ${remote_host1_ip4}= | 192.168.0.1
-| ${remote_host2_ip4}= | 192.168.0.2
-| ${remote_host_ip4_prefix}= | 32
+| ${overhead}= | ${0}
*** Test Cases ***
-| tc01-eth2p-ethicmpv4-ip4base-device_echo-req-to-dut-ingress-interface
+| tc01-eth2p-ethicmpv4-ip4base-dev_echo-req-to-dut-ingress-interface
| | [Documentation]
-| | ... | Make TG send ICMPv4 Echo Req to DUT1 ingress interface. Make TG \
-| | ... | verify ICMP Echo Reply is correct.
+| | ... | [Ver] Make TG send ICMPv4 Echo Req to DUT1 ingress interface.\
+| | ... | Make TG verify ICMP Echo Reply is correct.
| | ...
-| | ${hops}= | Set Variable | ${0}
+| | Set Test Variable | ${frame_size} | ${42}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Configure IPv4 forwarding in circular topology | ${tg_to_dut_if1_ip4}
-| | ... | ${tg_to_dut_if2_ip4} | ${dut_to_tg_if1_ip4} | ${dut_to_tg_if2_ip4}
-| | When All Vpp Interfaces Ready Wait | ${nodes}
-| | Then Send IPv4 ping packet and verify headers | ${tg_node}
-| | ... | ${tg_to_dut_if1} | ${dut_node} | ${dut_to_tg_if1}
-| | ... | ${tg_to_dut_if1_ip4} | ${dut_to_tg_if1_ip4} | ${dut_to_tg_if1_mac}
-| | ... | ${hops}
-| | Get interface Ipv4 addresses | ${nodes['DUT1']} | ${dut_to_tg_if1}
+| | When Initialize IPv4 forwarding in circular topology
+| | Then Send IPv4 ping packet and verify headers
+| | ... | ${tg} | ${tg_if1} | ${dut1} | ${dut1_if1}
+| | ... | 10.10.10.2 | 10.10.10.1 | ${dut1_if1_mac} | ${0}
-| tc02-eth2p-ethicmpv4-ip4base-device_echo-req-to-dut-egress-interface
+| tc02-eth2p-ethicmpv4-ip4base-dev_echo-req-to-dut-egress-interface
| | [Documentation]
-| | ... | Make TG send ICMPv4 Echo Req towards DUT1 egress interface. Make TG \
-| | ... | verify ICMP Echo Reply is correct.
+| | ... | [Ver] Make TG send ICMPv4 Echo Req towards DUT1 egress interface.\
+| | ... | Make TG verify ICMP Echo Reply is correct.
| | ...
-| | ${hops}= | Set Variable | ${0}
+| | Set Test Variable | ${frame_size} | ${42}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Configure IPv4 forwarding in circular topology | ${tg_to_dut_if1_ip4}
-| | ... | ${tg_to_dut_if2_ip4} | ${dut_to_tg_if1_ip4} | ${dut_to_tg_if2_ip4}
-| | When All Vpp Interfaces Ready Wait | ${nodes}
-| | Then Send IPv4 ping packet and verify headers | ${tg_node}
-| | ... | ${tg_to_dut_if1} | ${dut_node} | ${dut_to_tg_if2}
-| | ... | ${tg_to_dut_if1_ip4} | ${dut_to_tg_if2_ip4} | ${dut_to_tg_if1_mac}
-| | ... | ${hops}
+| | When Initialize IPv4 forwarding in circular topology
+| | Then Send IPv4 ping packet and verify headers
+| | ... | ${tg} | ${tg_if1} | ${dut1} | ${dut1_if2}
+| | ... | 10.10.10.2 | 20.20.20.1 | ${dut1_if1_mac} | ${0}
-| tc03-eth2p-ethicmpv4-ip4base-device_echo-req-to-tg-interface-for-local-ipv4-address
+| tc03-eth2p-ethicmpv4-ip4base-dev_echo-req-to-tg-interface-for-local-ipv4-address
| | [Documentation]
-| | ... | Make TG send ICMPv4 Echo Req between its interfaces across DUT1 for \
-| | ... | locally connected IPv4 addresses. Make TG verify ICMPv4 Echo Replies \
-| | ... | are correct.
+| | ... | [Ver] Make TG send ICMPv4 Echo Req between its interfaces across DUT1\
+| | ... | for locally connected IPv4 addresses. Make TG verify ICMPv4 Echo\
+| | ... | Replies are correct.
| | ...
-| | ${hops}= | Set Variable | ${1}
+| | Set Test Variable | ${frame_size} | ${42}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Configure IPv4 forwarding in circular topology | ${tg_to_dut_if1_ip4}
-| | ... | ${tg_to_dut_if2_ip4} | ${dut_to_tg_if1_ip4} | ${dut_to_tg_if2_ip4}
-| | When All Vpp Interfaces Ready Wait | ${nodes}
-| | Then Send IPv4 ping packet and verify headers | ${tg_node}
-| | ... | ${tg_to_dut_if1} | ${tg_node} | ${tg_to_dut_if2}
-| | ... | ${tg_to_dut_if1_ip4} | ${tg_to_dut_if2_ip4} | ${dut_to_tg_if1_mac}
-| | ... | ${hops}
+| | When Initialize IPv4 forwarding in circular topology
+| | Then Send IPv4 ping packet and verify headers
+| | ... | ${tg} | ${tg_if1} | ${tg} | ${tg_if2}
+| | ... | 10.10.10.2 | 20.20.20.2 | ${dut1_if1_mac} | ${1}
-| tc04-eth2p-ethicmpv4-ip4base-device_echo-req-to-tg-interface-for-remote-host-ipv4-address
+| tc04-eth2p-ethicmpv4-ip4base-dev_echo-req-to-tg-interface-for-remote-host-ipv4-address
| | [Documentation]
-| | ... | Make TG send ICMPv4 Echo Req between its interfaces across DUT1 for \
-| | ... | remote host IPv4 addresses. Make TG verify ICMPv4 Echo Replies are \
-| | ... | correct.
+| | ... | [Ver] Make TG send ICMPv4 Echo Req between its interfaces across DUT1\
+| | ... | for remote host IPv4 addresses. Make TG verify ICMPv4 Echo Replies\
+| | ... | are correct.
| | ...
-| | ${hops}= | Set Variable | ${1}
+| | Set Test Variable | ${frame_size} | ${42}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Configure IPv4 forwarding in circular topology | ${tg_to_dut_if1_ip4}
-| | ... | ${tg_to_dut_if2_ip4} | ${dut_to_tg_if1_ip4} | ${dut_to_tg_if2_ip4}
-| | ... | remote_host1_ip4=${remote_host1_ip4}
-| | ... | remote_host2_ip4=${remote_host2_ip4}
-| | ... | remote_host_ip4_prefix=${remote_host_ip4_prefix}
-| | And VPP Get IP tables | ${dut_node}
-| | When All Vpp Interfaces Ready Wait | ${nodes}
-| | Then Send IPv4 ping packet and verify headers | ${tg_node}
-| | ... | ${tg_to_dut_if1} | ${tg_node} | ${tg_to_dut_if2}
-| | ... | ${remote_host1_ip4} | ${remote_host2_ip4} | ${dut_to_tg_if1_mac}
-| | ... | ${hops}
+| | When Initialize IPv4 forwarding in circular topology
+| | ... | remote_host1_ip=192.168.0.1 | remote_host2_ip=192.168.0.2
+| | Then Send IPv4 ping packet and verify headers
+| | ... | ${tg} | ${tg_if1} | ${tg} | ${tg_if2}
+| | ... | 192.168.0.1 | 192.168.0.2 | ${dut1_if1_mac} | ${1}
*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
-| Resource | resources/libraries/robot/ip/ip6.robot
-| Resource | resources/libraries/robot/shared/interfaces.robot
-| Resource | resources/libraries/robot/shared/traffic.robot
| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV
-| ... | FUNCTEST | IP6FWD | BASE | ETH | IP6BASE
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | ETH | IP6FWD | BASE | IP6BASE
| ...
-| Suite Setup | Setup suite single link
+| Suite Setup | Setup suite single link | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace
| ...
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so
| ${nic_name}= | virtual
-| ${tg_to_dut_if1_ip6}= | 2001:1::2
-| ${tg_to_dut_if2_ip6}= | 2001:2::2
-| ${dut_to_tg_if1_ip6}= | 2001:1::1
-| ${dut_to_tg_if2_ip6}= | 2001:2::1
-| ${remote_host1_ip6}= | 3ffe:5f::1
-| ${remote_host2_ip6}= | 3ffe:5f::2
-| ${remote_host_ip6_prefix}= | 128
+| ${overhead}= | ${0}
*** Test Cases ***
-| tc01-eth2p-ethicmpv6-ip6base-device_echo-req-to-dut-ingress-interface
+| tc01-eth2p-ethicmpv6-ip6base-dev_echo-req-to-dut-ingress-interface
| | [Documentation]
-| | ... | Make TG send ICMPv6 Echo Req to DUT1 ingress interface. Make TG \
-| | ... | verify ICMPv6 Echo Reply is correct.
+| | ... | [Ver ]Make TG send ICMPv6 Echo Req to DUT1 ingress interface.\
+| | ... | Make TG verify ICMPv6 Echo Reply is correct.
| | ...
-| | ${hops}= | Set Variable | ${0}
+| | Set Test Variable | ${frame_size} | ${62}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Configure IPv6 forwarding in circular topology | ${tg_to_dut_if1_ip6}
-| | ... | ${tg_to_dut_if2_ip6} | ${dut_to_tg_if1_ip6} | ${dut_to_tg_if2_ip6}
-| | And Suppress ICMPv6 router advertisement message | ${nodes}
-| | And All Vpp Interfaces Ready Wait | ${nodes}
-| | Then Send IPv6 echo request packet and verify headers | ${tg_node}
-| | ... | ${tg_to_dut_if1} | ${dut_node} | ${dut_to_tg_if1}
-| | ... | ${tg_to_dut_if1_ip6} | ${dut_to_tg_if1_ip6} | ${dut_to_tg_if1_mac}
-| | ... | ${hops}
-| | Get interface Ipv6 addresses | ${nodes['DUT1']} | ${dut_to_tg_if1}
+| | When Initialize IPv6 forwarding in circular topology
+| | Then Send IPv6 echo request packet and verify headers
+| | ... | ${tg} | ${tg_if1} | ${dut1} | ${dut1_if1}
+| | ... | 2001:1::2 | 2001:1::1 | ${dut1_if1_mac} | ${0}
-| tc02-eth2p-ethicmpv6-ip6base-device_echo-req-to-dut-egress-interface
+| tc02-eth2p-ethicmpv6-ip6base-dev_echo-req-to-dut-egress-interface
| | [Documentation]
-| | ... | Make TG send ICMPv6 Echo Req towards DUT1 egress interface. Make TG \
-| | ... | verify ICMPv6 Echo Reply is correct.
+| | ... | [Ver] Make TG send ICMPv6 Echo Req towards DUT1 egress interface.\
+| | ... | Make TG verify ICMPv6 Echo Reply is correct.
| | ...
-| | ${hops}= | Set Variable | ${0}
+| | Set Test Variable | ${frame_size} | ${62}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Configure IPv6 forwarding in circular topology | ${tg_to_dut_if1_ip6}
-| | ... | ${tg_to_dut_if2_ip6} | ${dut_to_tg_if1_ip6} | ${dut_to_tg_if2_ip6}
-| | And Suppress ICMPv6 router advertisement message | ${nodes}
-| | And All Vpp Interfaces Ready Wait | ${nodes}
-| | Then Send IPv6 echo request packet and verify headers | ${tg_node}
-| | ... | ${tg_to_dut_if1} | ${dut_node} | ${dut_to_tg_if2}
-| | ... | ${tg_to_dut_if1_ip6} | ${dut_to_tg_if2_ip6} | ${dut_to_tg_if1_mac}
-| | ... | ${hops}
+| | When Initialize IPv6 forwarding in circular topology
+| | Then Send IPv6 echo request packet and verify headers
+| | ... | ${tg} | ${tg_if1} | ${dut1} | ${dut1_if2}
+| | ... | 2001:1::2 | 2001:2::1 | ${dut1_if1_mac} | ${0}
-| tc03-eth2p-ethicmpv6-ip6base-device_echo-req-to-tg-interface-for-local-ipv4-address
+| tc03-eth2p-ethicmpv6-ip6base-dev_echo-req-to-tg-interface-for-local-ipv4-address
| | [Documentation]
-| | ... | Make TG send ICMPv6 Echo Req between its interfaces across DUT1 for \
-| | ... | locally connected IPv6 addresses. Make TG verify ICMPv6 Echo Replies \
-| | ... | are correct.
+| | ... | [Ver] Make TG send ICMPv6 Echo Req between its interfaces across DUT1\
+| | ... | for locally connected IPv6 addresses. Make TG verify ICMPv6 Echo\
+| | ... | Replies are correct.
| | ...
-| | ${hops}= | Set Variable | ${1}
+| | Set Test Variable | ${frame_size} | ${62}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Configure IPv6 forwarding in circular topology | ${tg_to_dut_if1_ip6}
-| | ... | ${tg_to_dut_if2_ip6} | ${dut_to_tg_if1_ip6} | ${dut_to_tg_if2_ip6}
-| | And Suppress ICMPv6 router advertisement message | ${nodes}
-| | And All Vpp Interfaces Ready Wait | ${nodes}
-| | Then Send IPv6 echo request packet and verify headers | ${tg_node}
-| | ... | ${tg_to_dut_if1} | ${tg_node} | ${tg_to_dut_if2}
-| | ... | ${tg_to_dut_if1_ip6} | ${tg_to_dut_if2_ip6} | ${dut_to_tg_if1_mac}
-| | ... | ${hops} | ${dut_to_tg_if2_mac}
+| | When Initialize IPv6 forwarding in circular topology
+| | Then Send IPv6 echo request packet and verify headers
+| | ... | ${tg} | ${tg_if1} | ${tg} | ${tg_if2}
+| | ... | 2001:1::2 | 2001:2::2 | ${dut1_if1_mac} | ${1} | ${dut1_if2_mac}
-| tc04-eth2p-ethicmpv6-ip6base-device_echo-req-to-tg-interface-for-remote-host-ipv4-address
+| tc04-eth2p-ethicmpv6-ip6base-dev_echo-req-to-tg-interface-for-remote-host-ipv4-address
| | [Documentation]
-| | ... | Make TG send ICMPv6 Echo Req between its interfaces across DUT1 for \
-| | ... | remote host IPv6 addresses. Make TG verify ICMPv6 Echo Replies are \
-| | ... | correct.
+| | ... | [Ver] Make TG send ICMPv6 Echo Req between its interfaces across DUT1\
+| | ... | for remote host IPv6 addresses. Make TG verify ICMPv6 Echo Replies\
+| | ... | are correct.
| | ...
-| | ${hops}= | Set Variable | ${1}
+| | Set Test Variable | ${frame_size} | ${62}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Configure IPv6 forwarding in circular topology | ${tg_to_dut_if1_ip6}
-| | ... | ${tg_to_dut_if2_ip6} | ${dut_to_tg_if1_ip6} | ${dut_to_tg_if2_ip6}
-| | ... | remote_host1_ip6=${remote_host1_ip6}
-| | ... | remote_host2_ip6=${remote_host2_ip6}
-| | ... | remote_host_ip6_prefix=${remote_host_ip6_prefix}
-| | And Suppress ICMPv6 router advertisement message | ${nodes}
-| | And VPP Get IP tables | ${dut_node}
-| | And All Vpp Interfaces Ready Wait | ${nodes}
-| | Then Send IPv6 echo request packet and verify headers | ${tg_node}
-| | ... | ${tg_to_dut_if1} | ${tg_node} | ${tg_to_dut_if2}
-| | ... | ${remote_host1_ip6} | ${remote_host2_ip6} | ${dut_to_tg_if1_mac}
-| | ... | ${hops} | ${dut_to_tg_if2_mac}
+| | When Initialize IPv6 forwarding in circular topology
+| | ... | remote_host1_ip=3ffe:5f::1 | remote_host2_ip=3ffe:5f::2
+| | Then Send IPv6 echo request packet and verify headers
+| | ... | ${tg} | ${tg_if1} | ${tg} | ${tg_if2}
+| | ... | 3ffe:5f::1 | 3ffe:5f::2 | ${dut1_if1_mac} | ${1} | ${dut1_if2_mac}
-# Copyright (c) 2018 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 ***
-| Library | resources.libraries.python.L2Util
| Resource | resources/libraries/robot/shared/default.robot
-| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
-| Resource | resources/libraries/robot/l2/l2_traffic.robot
-| Resource | resources/libraries/robot/shared/interfaces.robot
-| Resource | resources/libraries/robot/shared/testing_path.robot
| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV
-| ... | FUNCTEST | L2BDMACLRN | BASE | ETH | ICMP
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | ETH | L2BDMACLRN | BASE | ICMP
| ...
-| Suite Setup | Setup suite single link
+| Suite Setup | Setup suite single link | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace
| ...
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so
| ${nic_name}= | virtual
-| ${bd_id}= | 1
+| ${overhead}= | ${0}
*** Test Cases ***
-| tc01-eth2p-ethicmpv4-l2bdbase-device
+| tc01-eth2p-ethicmpv4-l2bdbase-dev
| | [Documentation]
-| | ... | [Top] TG-DUT1-TG. [Enc] Eth-IPv4-ICMPv4.
-| | ... | [Cfg] Configure L2 bridge-domain (L2BD) with MAC learning enabled on \
-| | ... | DUT1. Add both interfaces towards TG to this L2BD.
-| | ... | [Ver] Make TG send ICMPv4 Echo Req in both directions between two of \
-| | ... | its interfaces to be switched by DUT1; verify all packets are \
-| | ... | received.
+| | ... | [Ver] Make TG send ICMPv4 Echo Reqs in both directions between two\
+| | ... | of its interfaces to be switched by DUT to and from docker; verify\
+| | ... | all packets are received.
+| | ...
+| | Set Test Variable | ${frame_size} | ${42}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Configure interfaces in path up
-| | And Create bridge domain | ${dut_node} | ${bd_id}
-| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1}
-| | ... | ${bd_id}
-| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if2}
-| | ... | ${bd_id}
-| | And All Vpp Interfaces Ready Wait | ${nodes}
-| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node}
-| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2}
-| | ...
-| | And VPP get bridge domain data | ${nodes['DUT1']}
-| | And Get L2 Fib Table | ${nodes['DUT1']} | ${bd_id}
+| | When Initialize L2 bridge domain in circular topology
+| | Then Send ICMPv4 bidirectionally and verify received packets
+| | ... | ${tg} | ${tg_if1} | ${tg_if2}
-| tc02-eth2p-ethicmpv6-l2bdbase-device
+| tc02-eth2p-ethicmpv6-l2bdbase-dev
| | [Documentation]
-| | ... | [Top] TG-DUT1-TG. [Enc] Eth-IPv6-ICMPv6.
-| | ... | [Cfg] Configure L2 bridge-domain (L2BD) with MAC learning enabled on \
-| | ... | DUT1. Add both interfaces towards TG to this L2BD.
-| | ... | [Ver] Make TG send ICMPv6 Echo Req in both directions between two of \
-| | ... | its interfaces to be switched by DUT1; verify all packets are \
-| | ... | received.
+| | ... | [Ver] Make TG send ICMPv6 Echo Reqs in both directions between two\
+| | ... | of its interfaces to be switched by DUT to and from docker; verify\
+| | ... | all packets are received.
+| | ...
+| | Set Test Variable | ${frame_size} | ${62}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Configure interfaces in path up
-| | And Create bridge domain | ${dut_node} | ${bd_id}
-| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1}
-| | ... | ${bd_id}
-| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if2}
-| | ... | ${bd_id}
-| | And All Vpp Interfaces Ready Wait | ${nodes}
+| | When Initialize L2 bridge domain in circular topology
| | Then Send ICMPv6 bidirectionally and verify received packets
-| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2}
-| | VPP get bridge domain data | ${nodes['DUT1']} | bd_id=${bd_id}
+| | ... | ${tg} | ${tg_if1} | ${tg_if2}
-# Copyright (c) 2018 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:
*** Settings ***
| Resource | resources/libraries/robot/shared/default.robot
-| Resource | resources/libraries/robot/l2/l2_xconnect.robot
-| Resource | resources/libraries/robot/l2/l2_traffic.robot
-| Resource | resources/libraries/robot/shared/testing_path.robot
| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV
-| ... | FUNCTEST | L2XCFWD | BASE | ETH | ICMP
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | ETH | L2XCFWD | BASE | ICMP
| ...
-| Suite Setup | Setup suite single link
+| Suite Setup | Setup suite single link | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace
| ...
*** Variables ***
| @{plugins_to_enable}= | dpdk_plugin.so
| ${nic_name}= | virtual
+| ${overhead}= | ${0}
*** Test Cases ***
-| tc01-eth2p-ethicmpv4-l2xcbase-device
+| tc01-eth2p-ethicmpv4-l2xcbase-dev
| | [Documentation]
-| | ... | [Top] TG-DUT1-TG. [Enc] Eth-IPv4-ICMPv4.
-| | ... | [Cfg] Configure L2 cross-connects (L2XC) between both interfaces \
-| | ... | towards TG on DUT1.
-| | ... | [Ver] Make TG send ICMPv4 Echo Req in both directions between two of \
-| | ... | its interfaces to be switched by DUT1; verify all packets are \
-| | ... | received.
+| | ... | [Ver] Make TG send ICMPv4 Echo Reqs in both directions between two\
+| | ... | of its interfaces to be switched by DUT to and from docker; verify\
+| | ... | all packets are received.
+| | ...
+| | Set Test Variable | ${frame_size} | ${42}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Configure interfaces in path up
-| | And Configure L2XC | ${dut_node} | ${dut_to_tg_if1} | ${dut_to_tg_if2}
-| | And All Vpp Interfaces Ready Wait | ${nodes}
+| | When Initialize L2 xconnect in 2-node circular topology
| | Then Send ICMPv4 bidirectionally and verify received packets
-| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2}
+| | ... | ${tg} | ${tg_if1} | ${tg_if2}
-| tc02-eth2p-ethicmpv6-l2xcbase-device
+| tc02-eth2p-ethicmpv6-l2xcbase-dev
| | [Documentation]
-| | ... | [Top] TG-DUT1-TG. [Enc] Eth-IPv6-ICMPv6.
-| | ... | [Cfg] Configure L2 cross-connects (L2XC) between both interfaces \
-| | ... | towards TG on DUT1.
-| | ... | [Ver] Make TG send ICMPv6 Echo Req in both directions between two of \
-| | ... | its interfaces to be switched by DUT1; verify all packets are \
-| | ... | received.
+| | ... | [Ver] Make TG send ICMPv6 Echo Reqs in both directions between two\
+| | ... | of its interfaces to be switched by DUT to and from docker; verify\
+| | ... | all packets are received.
+| | ...
+| | Set Test Variable | ${frame_size} | ${62}
+| | Set Test Variable | ${rxq_count_int} | ${1}
| | ...
| | Given Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure path in 2-node circular topology
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Configure interfaces in path up
-| | And Configure L2XC | ${dut_node} | ${dut_to_tg_if1} | ${dut_to_tg_if2}
-| | And All Vpp Interfaces Ready Wait | ${nodes}
+| | When Initialize L2 xconnect in 2-node circular topology
| | Then Send ICMPv6 bidirectionally and verify received packets
-| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2}
+| | ... | ${tg} | ${tg_if1} | ${tg_if2}
| | 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
-| | When Start containers for performance test
+| | When Start containers for test
| | And Initialize L2 Bridge Domain with memif pairs and VLAN in circular topology
| | ... | ${bd_id1} | ${bd_id2} | ${subid} | ${tag_rewrite}
| | Then Find NDR and PDR intervals using optimized search
| | 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
-| | When Start containers for performance test
+| | When Start containers for test
| | And Initialize L2 Bridge Domain with memif pairs
| | Then Find NDR and PDR intervals using optimized search
| | And Add single PCI device to all DUTs
| | And Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
-| | When Start containers for performance test
+| | When Start containers for test
| | And Initialize L2 xconnect for single memif
| | Then Find NDR and PDR intervals using optimized search
| | 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
-| | When Start containers for performance test
+| | When Start containers for test
| | And Initialize L2 xconnect with memif pairs
| | Then Find NDR and PDR intervals using optimized search
| | 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
-| | When Start containers for performance test
+| | When Start containers for test
| | And Initialize L2 xconnect with memif pairs
| | Then Find NDR and PDR intervals using optimized search
| | 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
-| | When Start containers for performance test
+| | When Start containers for test
| | And Initialize IPv4 routing with memif pairs
| | Then Find NDR and PDR intervals using optimized search
| | 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
-| | When Start containers for performance test
+| | When Start containers for test
| | And Initialize L2 Bridge Domain with memif pairs and VLAN in circular topology
| | ... | ${bd_id1} | ${bd_id2} | ${subid} | ${tag_rewrite}
| | Then Find NDR and PDR intervals using optimized search
| | 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
-| | When Start containers for performance test
+| | When Start containers for test
| | And Initialize L2 Bridge Domain with memif pairs
| | Then Find NDR and PDR intervals using optimized search
| | 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
-| | When Start containers for performance test
+| | When Start containers for test
| | And Initialize L2 xconnect with memif pairs
| | Then Find NDR and PDR intervals using optimized search
| | 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
-| | When Start containers for performance test
+| | When Start containers for test
| | And Initialize IPv4 routing with memif pairs
| | Then Find NDR and PDR intervals using optimized search
| | 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
-| | When Initialize IPv6 forwarding in 3-node circular topology
+| | When Initialize IPv6 forwarding in circular topology
| | And Add Fib Table | ${dut1} | 1 | ipv6=${TRUE}
| | And Vpp Route Add | ${dut1} | 2001:1:: | 64 |Â vrf=1 | local=${TRUE}
| | And Add Fib Table | ${dut2} | 1 | ipv6=${TRUE}
| | 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
-| | When Initialize IPv6 forwarding in 3-node circular topology
+| | When Initialize IPv6 forwarding in circular topology
| | And Initialize IPv6 iAcl whitelist in 3-node circular topology
| | Then Find NDR and PDR intervals using optimized search
| | 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
-| | And Initialize IPv6 forwarding in 3-node circular topology
+| | And Initialize IPv6 forwarding in circular topology
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
| | 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
-| | And Initialize IPv6 forwarding in 2-node circular topology
+| | And Initialize IPv6 forwarding in circular topology
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${10} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${10} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${10} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${10} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${10} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${10} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${6} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${6} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${6} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${6} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${8} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${8} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${8} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${8} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${10} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${10} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${10} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${10} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${4} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${4} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${4} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${4} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${4} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${4} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${4} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${4} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${6} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${6} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${6} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${6} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${8} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${8} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${8} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${8} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${10} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${10} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${4} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${4} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${4} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${4} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${4} | nf_nodes=${4} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${4} | nf_nodes=${4} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${4} | nf_nodes=${4} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${4} | nf_nodes=${4} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${4} | nf_nodes=${6} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${4} | nf_nodes=${6} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${4} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${4} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${4} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${4} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${6} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${6} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${6} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${6} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${6} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${6} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${6} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${6} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${6} | nf_nodes=${4} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${6} | nf_nodes=${4} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${8} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${8} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${8} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${8} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${8} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${8} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${8} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
| | ... | nf_chains=${8} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${10} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${10} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${10} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${10} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${10} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${10} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${10} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${10} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${10} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${10} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${4} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${4} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${4} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${4} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${6} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${6} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${6} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${6} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${8} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${8} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${1} | nf_nodes=${8} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${1} | nf_nodes=${8} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${6} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${6} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${6} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${6} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${8} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${8} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${8} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${8} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${10} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${10} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${4} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${4} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${2} | nf_nodes=${4} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${2} | nf_nodes=${4} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${4} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${4} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${4} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${4} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${4} | nf_nodes=${4} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${4} | nf_nodes=${4} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${4} | nf_nodes=${4} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${4} | nf_nodes=${4} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${4} | nf_nodes=${6} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${4} | nf_nodes=${6} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${4} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${4} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${4} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${4} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${6} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${6} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${6} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${6} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${6} | nf_nodes=${4} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${6} | nf_nodes=${4} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${6} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${6} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${6} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${6} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${8} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${8} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${8} | nf_nodes=${2} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${8} | nf_nodes=${2} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${8} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${8} | nf_nodes=${1} | auto_scale=${False}
| | 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
-| | And Start containers for performance test
+| | And Start containers for test
| | ... | nf_chains=${8} | nf_nodes=${1} | auto_scale=${False}
| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
| | ... | nf_chains=${8} | nf_nodes=${1} | auto_scale=${False}
| | And Add PCI devices to all DUTs
| | Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
-| | And Start containers for performance test | nf_chains=${1} | nf_nodes=${1}
+| | And Start containers for test | nf_chains=${1} | nf_nodes=${1}
| | When Initialize IPv6 forwarding over SRv6 with endpoint to SR-unaware Service Function via 'dynamic_proxy' behaviour in 3-node circular topology
| | Then Find NDR and PDR intervals using optimized search
| | And Add PCI devices to all DUTs
| | Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
-| | And Start containers for performance test | nf_chains=${1} | nf_nodes=${1}
+| | And Start containers for test | nf_chains=${1} | nf_nodes=${1}
| | When Initialize IPv6 forwarding over SRv6 with endpoint to SR-unaware Service Function via 'masquerading' behaviour in 3-node circular topology
| | Then Find NDR and PDR intervals using optimized search
| | And Add PCI devices to all DUTs
| | Set Max Rate And Jumbo And Handle Multi Seg
| | And Apply startup configuration on all VPP DUTs
-| | And Start containers for performance test | nf_chains=${1} | nf_nodes=${1}
+| | And Start containers for test | nf_chains=${1} | nf_nodes=${1}
| | When Initialize IPv6 forwarding over SRv6 with endpoint to SR-unaware Service Function via 'static_proxy' behaviour in 3-node circular topology
| | Then Find NDR and PDR intervals using optimized search