aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rwxr-xr-xtests/dpdk/dpdk_scripts/cleanup_dpdk.sh90
-rwxr-xr-xtests/dpdk/dpdk_scripts/init_dpdk.sh35
-rwxr-xr-xtests/dpdk/dpdk_scripts/install_dpdk.sh63
-rwxr-xr-xtests/dpdk/dpdk_scripts/run_l2fwd.sh115
-rwxr-xr-xtests/dpdk/dpdk_scripts/run_l3fwd.sh104
-rw-r--r--tests/dpdk/perf/10ge2p1x520-eth-l2xcbase-testpmd-ndrpdrdisc.robot374
-rw-r--r--tests/dpdk/perf/10ge2p1x520-ethip4-ip4base-l3fwd-ndrpdrdisc.robot421
-rw-r--r--tests/dpdk/perf/10ge2p1x710-eth-l2xcbase-testpmd-ndrpdrdisc.robot422
-rw-r--r--tests/dpdk/perf/40ge2p1xl710-eth-l2xcbase-testpmd-ndrpdrdisc.robot424
-rw-r--r--tests/dpdk/perf/__init__.robot38
-rw-r--r--tests/nsh_sfc/func/__init__.robot20
-rw-r--r--tests/nsh_sfc/func/proxy/eth2p-ethip4-nsh-proxy-inbound-func.robot85
-rw-r--r--tests/nsh_sfc/func/proxy/eth2p-ethip4-nsh-proxy-outbound-func.robot86
-rw-r--r--tests/nsh_sfc/func/sff/eth2p-ethip4-sfc-sff-func.robot85
-rwxr-xr-xtests/nsh_sfc/sfc_scripts/install_sfc.sh114
-rwxr-xr-xtests/nsh_sfc/sfc_scripts/set_nsh_proxy_inbound.sh32
-rwxr-xr-xtests/nsh_sfc/sfc_scripts/set_nsh_proxy_outbound.sh32
-rwxr-xr-xtests/nsh_sfc/sfc_scripts/set_sfc_sff.sh32
-rwxr-xr-xtests/nsh_sfc/sfc_scripts/start_tcpdump.sh16
-rw-r--r--tests/tldk/func/__init__.robot18
-rw-r--r--tests/tldk/func/ipv4/ipv4_assemble.robot46
-rw-r--r--tests/tldk/func/ipv4/ipv4_checksum.robot43
-rw-r--r--tests/tldk/func/ipv4/ipv4_fragment.robot43
-rw-r--r--tests/tldk/func/ipv6/ipv6_checksum.robot43
-rw-r--r--tests/tldk/func/ipv6/ipv6_fragment.robot43
-rwxr-xr-xtests/tldk/tldk_scripts/install_tldk.sh57
-rwxr-xr-xtests/tldk/tldk_scripts/run_tldk.sh53
-rw-r--r--tests/tldk/tldk_testconfig/test_ipv4_assemble_be.cfg1
-rw-r--r--tests/tldk/tldk_testconfig/test_ipv4_assemble_fe.cfg2
-rw-r--r--tests/tldk/tldk_testconfig/test_ipv4_checksum_be.cfg2
-rw-r--r--tests/tldk/tldk_testconfig/test_ipv4_checksum_fe.cfg3
-rw-r--r--tests/tldk/tldk_testconfig/test_ipv4_fragment_be.cfg2
-rw-r--r--tests/tldk/tldk_testconfig/test_ipv4_fragment_fe.cfg3
-rw-r--r--tests/tldk/tldk_testconfig/test_ipv6_checksum_be.cfg2
-rw-r--r--tests/tldk/tldk_testconfig/test_ipv6_checksum_fe.cfg3
-rw-r--r--tests/tldk/tldk_testconfig/test_ipv6_fragment_be.cfg2
-rw-r--r--tests/tldk/tldk_testconfig/test_ipv6_fragment_fe.cfg3
-rw-r--r--tests/vpp/func/__init__.robot (renamed from tests/func/__init__.robot)4
-rw-r--r--tests/vpp/func/crypto/eth2p-ethip4ipsectnl-ip4base-func.robot (renamed from tests/func/ipsec/eth2p-ethip4ipsectnl-ip4base-func.robot)2
-rw-r--r--tests/vpp/func/crypto/eth2p-ethip4ipsectpt-ip4base-func.robot (renamed from tests/func/ipsec/eth2p-ethip4ipsectpt-ip4base-func.robot)2
-rw-r--r--tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip4base-func.robot (renamed from tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip4base-func.robot)18
-rw-r--r--tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip6base-func.robot (renamed from tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6base-func.robot)18
-rw-r--r--tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip6basevrf-func.robot (renamed from tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6basevrf-func.robot)18
-rw-r--r--tests/vpp/func/crypto/eth2p-ethip6ipsectnl-ip6base-func.robot (renamed from tests/func/ipsec/eth2p-ethip6ipsectnl-ip6base-func.robot)2
-rw-r--r--tests/vpp/func/crypto/eth2p-ethip6ipsectpt-ip6base-func.robot (renamed from tests/func/ipsec/eth2p-ethip6ipsectpt-ip6base-func.robot)2
-rw-r--r--tests/vpp/func/crypto/eth2p-ethip6ipsectptlispgpe-ip4base-func.robot (renamed from tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip4base-func.robot)18
-rw-r--r--tests/vpp/func/crypto/eth2p-ethip6ipsectptlispgpe-ip6base-func.robot (renamed from tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip6base-func.robot)18
-rw-r--r--tests/vpp/func/honeycomb/__init__.robot (renamed from tests/func/honeycomb/__init__.robot)2
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot)2
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-dhcp-apihc-apivat-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-dhcp-apihc-apivat-func.robot)6
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot)2
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-int-subint-apihc-apivat-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-int-subint-apihc-apivat-func.robot)2
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot)6
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-inttap-apihc-apivat-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-inttap-apihc-apivat-func.robot)2
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-intvhost-apihc-apivat-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-intvhost-apihc-apivat-func.robot)2
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-l2bd-apihc-apivat-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-l2bd-apihc-apivat-func.robot)2
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-l2fib-apihc-apivat-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-l2fib-apihc-apivat-func.robot)2
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-lisp-apihc-apivat-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-lisp-apihc-apivat-func.robot)2
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot)2
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot)2
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-pluginacl-apihc-apivat-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-pluginacl-apihc-apivat-func.robot)6
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-policer-apihc-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-policer-apihc-func.robot)4
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-proxyarp-apihc-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-proxyarp-apihc-func.robot)8
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-proxynd6-apihc-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-proxynd6-apihc-func.robot)10
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-routing-apihc-apivat-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-routing-apihc-apivat-func.robot)8
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-slaac-apihc-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-slaac-apihc-func.robot)6
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot)2
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-spanrx-apihc-apivat-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-spanrx-apihc-apivat-func.robot)4
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-vxlan-apihc-apivat-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-vxlan-apihc-apivat-func.robot)2
-rw-r--r--tests/vpp/func/honeycomb/mgmt-cfg-vxlangpe-apihc-apivat-func.robot (renamed from tests/func/honeycomb/mgmt-cfg-vxlangpe-apihc-apivat-func.robot)2
-rw-r--r--tests/vpp/func/honeycomb/mgmt-notif-apihcnc-func.robot (renamed from tests/func/honeycomb/mgmt-notif-apihcnc-func.robot)2
-rw-r--r--tests/vpp/func/honeycomb/mgmt-statepersist-apihc-func.robot (renamed from tests/func/honeycomb/mgmt-statepersist-apihc-func.robot)2
-rw-r--r--tests/vpp/func/interfaces/api-crud-tap-func.robot (renamed from tests/func/tap/api-crud-tap-func.robot)14
-rw-r--r--tests/vpp/func/interfaces/eth2p-eth-l2bdbasemaclrn-eth-2tap-func.robot (renamed from tests/func/tap/eth2p-eth-l2bdbasemaclrn-eth-2tap-func.robot)14
-rw-r--r--tests/vpp/func/interfaces/eth2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func.robot (renamed from tests/func/tap/eth2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func.robot)14
-rw-r--r--tests/vpp/func/interfaces/eth2p-ethip4-ip4base-eth-1tap-func.robot (renamed from tests/func/tap/eth2p-ethip4-ip4base-eth-1tap-func.robot)14
-rw-r--r--tests/vpp/func/ip4/eth2p-dot1q-ip4base-func.robot (renamed from tests/func/vlan/eth2p-dot1q-ip4base-func.robot)10
-rw-r--r--tests/vpp/func/ip4/eth2p-ethip4-ip4base-copblklistbase-func.robot (renamed from tests/func/cop/eth2p-ethip4-ip4base-copblklistbase-func.robot)12
-rw-r--r--tests/vpp/func/ip4/eth2p-ethip4-ip4base-copwhlistbase-func.robot (renamed from tests/func/cop/eth2p-ethip4-ip4base-copwhlistbase-func.robot)12
-rw-r--r--tests/vpp/func/ip4/eth2p-ethip4-ip4base-func.robot (renamed from tests/func/ipv4/eth2p-ethip4-ip4base-func.robot)6
-rw-r--r--tests/vpp/func/ip4/eth2p-ethip4-ip4base-iaclbase-func.robot (renamed from tests/func/iacl/eth2p-ethip4-ip4base-iaclbase-func.robot)16
-rw-r--r--tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4arp-func.robot (renamed from tests/func/ipv4/eth2p-ethip4-ip4base-ip4arp-func.robot)14
-rw-r--r--tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4dhcpclient-func.robot (renamed from tests/func/dhcp/eth2p-ethip4-ip4base-ip4dhcpclient-func.robot)8
-rw-r--r--tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4dhcpproxy-func.robot (renamed from tests/func/dhcp/eth2p-ethip4-ip4base-ip4dhcpproxy-func.robot)8
-rw-r--r--tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4ecmp-func.robot (renamed from tests/func/ipv4/eth2p-ethip4-ip4base-ip4ecmp-func.robot)12
-rw-r--r--tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4proxyarp-func.robot (renamed from tests/func/ipv4/eth2p-ethip4-ip4base-ip4proxyarp-func.robot)10
-rw-r--r--tests/vpp/func/ip4/eth2p-ethip4-ip4base-ipolicemarkbase-func.robot (renamed from tests/func/policer/eth2p-ethip4-ip4base-ipolicemarkbase-func.robot)2
-rw-r--r--tests/vpp/func/ip4/eth2p-ethip4-ip4base-rpf-func.robot (renamed from tests/func/rpf/eth2p-ethip4-ip4base-rpf-func.robot)14
-rw-r--r--tests/vpp/func/ip4/eth2p-ethip4-ip4basevrf-func.robot (renamed from tests/func/vrf/eth2p-ethip4-ip4basevrf-func.robot)14
-rw-r--r--tests/vpp/func/ip4_tunnels/gre/eth2p-ethip4gre-ip4base-func.robot (renamed from tests/func/gre/eth2p-ethip4gre-ip4base-func.robot)10
-rw-r--r--tests/vpp/func/ip4_tunnels/lisp/api-crud-lisp-func.robot (renamed from tests/func/lisp/api-crud-lisp-func.robot)6
-rw-r--r--tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lisp-ip4base-func.robot (renamed from tests/func/lisp/eth2p-ethip4lisp-ip4base-func.robot)12
-rw-r--r--tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lisp-l2bdbasemaclrn-func.robot (renamed from tests/func/lisp/eth2p-ethip4lisp-l2bdbasemaclrn-func.robot)12
-rw-r--r--tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip4base-func.robot (renamed from tests/func/lisp/eth2p-ethip4lispgpe-ip4base-func.robot)16
-rw-r--r--tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip4basevrf-func.robot (renamed from tests/func/lisp/eth2p-ethip4lispgpe-ip4basevrf-func.robot)16
-rw-r--r--tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip6base-func.robot (renamed from tests/func/lisp/eth2p-ethip4lispgpe-ip6base-func.robot)18
-rw-r--r--tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip6basevrf-func.robot (renamed from tests/func/lisp/eth2p-ethip4lispgpe-ip6basevrf-func.robot)18
-rw-r--r--tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swirelw46-func.robot (renamed from tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swirelw46-func.robot)10
-rw-r--r--tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremape-func.robot (renamed from tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremape-func.robot)10
-rw-r--r--tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremapt-func.robot (renamed from tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremapt-func.robot)10
-rw-r--r--tests/vpp/func/ip4_tunnels/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot (renamed from tests/func/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot)44
-rw-r--r--tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot (renamed from tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot)12
-rw-r--r--tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot (renamed from tests/func/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot)10
-rw-r--r--tests/vpp/func/ip4_tunnels/vxlan/eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot (renamed from tests/func/vxlan/eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot)12
-rw-r--r--tests/vpp/func/ip6/eth2p-ethip6-ip6base-copblklistbase-func.robot (renamed from tests/func/cop/eth2p-ethip6-ip6base-copblklistbase-func.robot)12
-rw-r--r--tests/vpp/func/ip6/eth2p-ethip6-ip6base-copwhlistbase-func.robot (renamed from tests/func/cop/eth2p-ethip6-ip6base-copwhlistbase-func.robot)12
-rw-r--r--tests/vpp/func/ip6/eth2p-ethip6-ip6base-func.robot (renamed from tests/func/ipv6/eth2p-ethip6-ip6base-func.robot)8
-rw-r--r--tests/vpp/func/ip6/eth2p-ethip6-ip6base-iaclbase-func.robot (renamed from tests/func/iacl/eth2p-ethip6-ip6base-iaclbase-func.robot)14
-rw-r--r--tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6dhcpproxy-func.robot (renamed from tests/func/dhcp/eth2p-ethip6-ip6base-ip6dhcpproxy-func.robot)8
-rw-r--r--tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6ecmp-func.robot (renamed from tests/func/ipv6/eth2p-ethip6-ip6base-ip6ecmp-func.robot)12
-rw-r--r--tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6ra-func.robot (renamed from tests/func/ipv6/eth2p-ethip6-ip6base-ip6ra-func.robot)12
-rw-r--r--tests/vpp/func/ip6/eth2p-ethip6-ip6base-ipolicemarkbase-func.robot (renamed from tests/func/policer/eth2p-ethip6-ip6base-ipolicemarkbase-func.robot)2
-rw-r--r--tests/vpp/func/ip6/eth2p-ethip6-ip6basevrf-func.robot (renamed from tests/func/vrf/eth2p-ethip6-ip6basevrf-func.robot)14
-rw-r--r--tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lisp-l2bdbasemaclrn-func.robot (renamed from tests/func/lisp/eth2p-ethip6lisp-l2bdbasemaclrn-func.robot)12
-rw-r--r--tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip4base-func.robot (renamed from tests/func/lisp/eth2p-ethip6lispgpe-ip4base-func.robot)12
-rw-r--r--tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip6base-func.robot (renamed from tests/func/lisp/eth2p-ethip6lispgpe-ip6base-func.robot)14
-rw-r--r--tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip6basevrf-func.robot (renamed from tests/func/lisp/eth2p-ethip6lispgpe-ip6basevrf-func.robot)14
-rw-r--r--tests/vpp/func/ip6_tunnels/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot (renamed from tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot)12
-rw-r--r--tests/vpp/func/ip6_tunnels/vxlan/eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot (renamed from tests/func/vxlan/eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot)12
-rw-r--r--tests/vpp/func/l2bd/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot (renamed from tests/func/vlan/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot)10
-rw-r--r--tests/vpp/func/l2bd/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot (renamed from tests/func/vlan/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot)10
-rw-r--r--tests/vpp/func/l2bd/eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot (renamed from tests/func/vlan/eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot)10
-rw-r--r--tests/vpp/func/l2bd/eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot (renamed from tests/func/vlan/eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot)10
-rw-r--r--tests/vpp/func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot (renamed from tests/func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot)10
-rw-r--r--tests/vpp/func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot (renamed from tests/func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot)8
-rw-r--r--tests/vpp/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot (renamed from tests/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot)8
-rw-r--r--tests/vpp/func/l2xc/eth2p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot (renamed from tests/func/vlan/eth2p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot)8
-rw-r--r--tests/vpp/func/l2xc/eth2p-dot1ad-l2xcbase-func.robot (renamed from tests/func/vlan/eth2p-dot1ad-l2xcbase-func.robot)8
-rw-r--r--tests/vpp/func/l2xc/eth2p-dot1ad-l2xcbase-vlantrans22-func.robot (renamed from tests/func/vlan/eth2p-dot1ad-l2xcbase-vlantrans22-func.robot)8
-rw-r--r--tests/vpp/func/l2xc/eth2p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot (renamed from tests/func/vlan/eth2p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot)8
-rw-r--r--tests/vpp/func/l2xc/eth2p-dot1q-l2xcbase-vlantrans11-func.robot (renamed from tests/func/vlan/eth2p-dot1q-l2xcbase-vlantrans11-func.robot)8
-rw-r--r--tests/vpp/func/l2xc/eth2p-eth-l2xcbase-func.robot (renamed from tests/func/l2xc/eth2p-eth-l2xcbase-func.robot)14
-rw-r--r--tests/vpp/func/l2xc/eth2p-eth-l2xcbase-iaclbase-func.robot (renamed from tests/func/iacl/eth2p-eth-l2xcbase-iaclbase-func.robot)12
-rw-r--r--tests/vpp/func/telemetry/eth2p-ethip4-ip4base-ip4ipfixbase-func.robot (renamed from tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixbase-func.robot)8
-rw-r--r--tests/vpp/func/telemetry/eth2p-ethip4-ip4base-ip4ipfixscale-func.robot (renamed from tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixscale-func.robot)8
-rw-r--r--tests/vpp/func/telemetry/eth2p-ethip4-ip4base-spanrx-func.robot (renamed from tests/func/telemetry/span/eth2p-ethip4-ip4base-spanrx-func.robot)4
-rw-r--r--tests/vpp/func/telemetry/eth2p-ethip6-ip6base-ip6ipfixbase-func.robot (renamed from tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixbase-func.robot)8
-rw-r--r--tests/vpp/func/telemetry/eth2p-ethip6-ip6base-ip6ipfixscale-func.robot (renamed from tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixscale-func.robot)8
-rw-r--r--tests/vpp/func/telemetry/eth2p-ethip6-ip6base-spanrx-func.robot (renamed from tests/func/telemetry/span/eth2p-ethip6-ip6base-spanrx-func.robot)4
-rw-r--r--tests/vpp/func/vm_vhost/ip4/eth2p-ethip4-ip4base-eth-2vhost-1vm.robot (renamed from tests/func/ipv4/eth2p-ethip4-ip4base-eth-2vhost-1vm.robot)14
-rw-r--r--tests/vpp/func/vm_vhost/ip4/eth2p-ethip4ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot (renamed from tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot)18
-rw-r--r--tests/vpp/func/vm_vhost/ip4/eth2p-ethip4ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot (renamed from tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot)18
-rw-r--r--tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip4base-eth-2vhost-1vm-func.robot (renamed from tests/func/lisp/eth2p-ethip4lispgpe-ip4base-eth-2vhost-1vm-func.robot)16
-rw-r--r--tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip4basevrf-eth-2vhost-1vm-func.robot (renamed from tests/func/lisp/eth2p-ethip4lispgpe-ip4basevrf-eth-2vhost-1vm-func.robot)16
-rw-r--r--tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip6base-eth-2vhost-1vm-func.robot (renamed from tests/func/lisp/eth2p-ethip4lispgpe-ip6base-eth-2vhost-1vm-func.robot)18
-rw-r--r--tests/vpp/func/vm_vhost/ip6/eth2p-ethip6ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot (renamed from tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot)18
-rw-r--r--tests/vpp/func/vm_vhost/ip6/eth2p-ethip6ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot (renamed from tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot)18
-rw-r--r--tests/vpp/func/vm_vhost/ip6/eth2p-ethip6lispgpe-ip6base-eth-2vhost-1vm-func.robot (renamed from tests/func/lisp/eth2p-ethip6lispgpe-ip6base-eth-2vhost-1vm-func.robot)14
-rw-r--r--tests/vpp/func/vm_vhost/ip6/eth2p-ethip6lispgpe-ip6basevrf-eth-2vhost-1vm-func.robot (renamed from tests/func/lisp/eth2p-ethip6lispgpe-ip6basevrf-eth-2vhost-1vm-func.robot)14
-rw-r--r--tests/vpp/func/vm_vhost/l2bd/eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-func.robot (renamed from tests/func/vlan/eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-func.robot)14
-rw-r--r--tests/vpp/func/vm_vhost/l2bd/eth2p-dot1q-l2bdbasemaclrn-eth-4vhost-2vm-fds-provider-nets-func.robot (renamed from tests/func/fds/eth2p-dot1q-l2bdbasemaclrn-eth-4vhost-2vm-fds-provider-nets-func.robot)12
-rw-r--r--tests/vpp/func/vm_vhost/l2bd/eth2p-eth-l2bdbasemaclrn-eth-2vhost-1vm-func.robot (renamed from tests/func/l2bd/eth2p-eth-l2bdbasemaclrn-eth-2vhost-1vm-func.robot)8
-rw-r--r--tests/vpp/func/vm_vhost/l2bd/eth2p-eth-l2bdbasemacstc-eth-2vhost-1vm-func.robot (renamed from tests/func/l2bd/eth2p-eth-l2bdbasemacstc-eth-2vhost-1vm-func.robot)8
-rw-r--r--tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4-l2bdbase-vhost-client-reconnect-2vm-func.robot (renamed from tests/func/vhost/eth2p-ethip4-l2bdbase-vhost-client-reconnect-2vm-func.robot)10
-rw-r--r--tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4vxlan-l2bdbasemaclrn--eth-4vhost-2vm-fds-tenant-nets-func.robot (renamed from tests/func/fds/eth2p-ethip4vxlan-l2bdbasemaclrn--eth-4vhost-2vm-fds-tenant-nets-func.robot)12
-rw-r--r--tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot (renamed from tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot)12
-rw-r--r--tests/vpp/func/vm_vhost/l2bd/eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot (renamed from tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot)12
-rw-r--r--tests/vpp/func/vm_vhost/l2xc/eth2p-eth-l2xcbase-eth-2vhost-1vm-func.robot (renamed from tests/func/l2xc/eth2p-eth-l2xcbase-eth-2vhost-1vm-func.robot)14
-rw-r--r--tests/vpp/perf/__init__.robot (renamed from tests/perf/__init__.robot)4
-rw-r--r--tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdrdisc.robot (renamed from tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdrdisc.robot)4
-rw-r--r--tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot (renamed from tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot)4
-rw-r--r--tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot (renamed from tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot)4
-rw-r--r--tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot (renamed from tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot)4
-rw-r--r--tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdrdisc.robot (renamed from tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdrdisc.robot)4
-rw-r--r--tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot (renamed from tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot)4
-rw-r--r--tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot (renamed from tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot)4
-rw-r--r--tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot (renamed from tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot)4
-rw-r--r--tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrpdrdisc.robot (renamed from tests/perf/40ge2p1xl710-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrpdrdisc.robot)6
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrchk.robot (renamed from tests/perf/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrchk.robot)2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrchk.robot (renamed from tests/perf/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrchk.robot)2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrchk.robot (renamed from tests/perf/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrchk.robot)2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ndrchk.robot (renamed from tests/perf/10ge2p1x520-ethip4-ip4base-ndrchk.robot)2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4-ip4base-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-pdrchk.robot (renamed from tests/perf/10ge2p1x520-ethip4-ip4base-pdrchk.robot)2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-snat-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4-ip4base-snat-ndrpdrdisc.robot)6
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale200k-ndrchk.robot (renamed from tests/perf/10ge2p1x520-ethip4-ip4scale200k-ndrchk.robot)2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale200k-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4-ip4scale200k-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale20k-ndrchk.robot (renamed from tests/perf/10ge2p1x520-ethip4-ip4scale20k-ndrchk.robot)2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale20k-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4-ip4scale20k-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-ndrchk.robot (renamed from tests/perf/10ge2p1x520-ethip4-ip4scale2m-ndrchk.robot)2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4-ip4scale2m-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-pdrchk.robot (renamed from tests/perf/10ge2p1x520-ethip4-ip4scale2m-pdrchk.robot)2
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4base-udpsrcscale15-snat-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4udp-ip4base-udpsrcscale15-snat-ndrpdrdisc.robot)6
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrpdrdisc.robot)6
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrpdrdisc.robot)6
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrpdrdisc.robot)6
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale2000-udpsrcscale15-snat-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4udp-ip4scale2000-udpsrcscale15-snat-ndrpdrdisc.robot)6
-rw-r--r--tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale4000-udpsrcscale15-snat-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4udp-ip4scale4000-udpsrcscale15-snat-ndrpdrdisc.robot)6
-rw-r--r--tests/vpp/perf/ip4/40ge2p1xl710-ethip4-ip4base-ndrpdrdisc.robot (renamed from tests/perf/40ge2p1xl710-ethip4-ip4base-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-ndrchk.robot (renamed from tests/perf/10ge2p1x520-ethip4lispip4-ip4base-ndrchk.robot)4
-rw-r--r--tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4lispip4-ip4base-ndrpdrdisc.robot)4
-rw-r--r--tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-pdrchk.robot (renamed from tests/perf/10ge2p1x520-ethip4lispip4-ip4base-pdrchk.robot)4
-rw-r--r--tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-ndrchk.robot (renamed from tests/perf/10ge2p1x520-ethip4lispip6-ip4base-ndrchk.robot)4
-rw-r--r--tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4lispip6-ip4base-ndrpdrdisc.robot)4
-rw-r--r--tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-pdrchk.robot (renamed from tests/perf/10ge2p1x520-ethip4lispip6-ip4base-pdrchk.robot)4
-rw-r--r--tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-pdrchk.robot (renamed from tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-pdrchk.robot)2
-rw-r--r--tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-ndrchk.robot (renamed from tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-ndrchk.robot)2
-rw-r--r--tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-pdrchk.robot (renamed from tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-pdrchk.robot)2
-rw-r--r--tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrchk.robot (renamed from tests/perf/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrchk.robot)2
-rw-r--r--tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrchk.robot (renamed from tests/perf/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrchk.robot)2
-rw-r--r--tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-ndrchk.robot (renamed from tests/perf/10ge2p1x520-ethip6-ip6base-ndrchk.robot)2
-rw-r--r--tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip6-ip6base-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-pdrchk.robot (renamed from tests/perf/10ge2p1x520-ethip6-ip6base-pdrchk.robot)2
-rw-r--r--tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale200k-ndrchk.robot (renamed from tests/perf/10ge2p1x520-ethip6-ip6scale200k-ndrchk.robot)2
-rw-r--r--tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale200k-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip6-ip6scale200k-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale20k-ndrchk.robot (renamed from tests/perf/10ge2p1x520-ethip6-ip6scale20k-ndrchk.robot)2
-rw-r--r--tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale20k-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip6-ip6scale20k-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-ndrchk.robot (renamed from tests/perf/10ge2p1x520-ethip6-ip6scale2m-ndrchk.robot)2
-rw-r--r--tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip6-ip6scale2m-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-pdrchk.robot (renamed from tests/perf/10ge2p1x520-ethip6-ip6scale2m-pdrchk.robot)2
-rw-r--r--tests/vpp/perf/ip6/40ge2p1xl710-ethip6-ip6base-ndrpdrdisc.robot (renamed from tests/perf/40ge2p1xl710-ethip6-ip6base-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-ndrchk.robot (renamed from tests/perf/10ge2p1x520-ethip6lispip4-ip6base-ndrchk.robot)4
-rw-r--r--tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip6lispip4-ip6base-ndrpdrdisc.robot)4
-rw-r--r--tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-pdrchk.robot (renamed from tests/perf/10ge2p1x520-ethip6lispip4-ip6base-pdrchk.robot)4
-rw-r--r--tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-ndrchk.robot (renamed from tests/perf/10ge2p1x520-ethip6lispip6-ip6base-ndrchk.robot)4
-rw-r--r--tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip6lispip6-ip6base-ndrpdrdisc.robot)4
-rw-r--r--tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-pdrchk.robot (renamed from tests/perf/10ge2p1x520-ethip6lispip6-ip6base-pdrchk.robot)4
-rw-r--r--tests/vpp/perf/l2/10ge2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/l2/10ge2p1x520-dot1ad-l2xcbase-ndrchk.robot (renamed from tests/perf/10ge2p1x520-dot1ad-l2xcbase-ndrchk.robot)4
-rw-r--r--tests/vpp/perf/l2/10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot)4
-rw-r--r--tests/vpp/perf/l2/10ge2p1x520-dot1q-l2xcbase-ndrchk.robot (renamed from tests/perf/10ge2p1x520-dot1q-l2xcbase-ndrchk.robot)4
-rw-r--r--tests/vpp/perf/l2/10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot)4
-rw-r--r--tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-ndrchk.robot (renamed from tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-ndrchk.robot)2
-rw-r--r--tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-pdrchk.robot (renamed from tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-pdrchk.robot)2
-rw-r--r--tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-ndrchk.robot (renamed from tests/perf/10ge2p1x520-eth-l2xcbase-ndrchk.robot)2
-rw-r--r--tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-pdrchk.robot (renamed from tests/perf/10ge2p1x520-eth-l2xcbase-pdrchk.robot)2
-rw-r--r--tests/vpp/perf/l2/10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/l2/40ge2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot (renamed from tests/perf/40ge2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/l2/40ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot (renamed from tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/l2/40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot (renamed from tests/perf/40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk.robot (renamed from tests/perf/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk.robot)2
-rw-r--r--tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk.robot (renamed from tests/perf/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk.robot)2
-rw-r--r--tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-pdrchk.robot (renamed from tests/perf/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-pdrchk.robot)2
-rw-r--r--tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-pdrchk.robot (renamed from tests/perf/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-pdrchk.robot)2
-rw-r--r--tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/vm_vhost/10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot (renamed from tests/perf/10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot (renamed from tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot (renamed from tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot (renamed from tests/perf/40ge2p1xl710-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot)2
-rw-r--r--tests/vpp/perf/vm_vhost/40ge2p1xl710-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot (renamed from tests/perf/40ge2p1xl710-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot)2
257 files changed, 3701 insertions, 746 deletions
diff --git a/tests/dpdk/dpdk_scripts/cleanup_dpdk.sh b/tests/dpdk/dpdk_scripts/cleanup_dpdk.sh
new file mode 100755
index 0000000000..48e1a29b63
--- /dev/null
+++ b/tests/dpdk/dpdk_scripts/cleanup_dpdk.sh
@@ -0,0 +1,90 @@
+#!/bin/bash
+
+set -x
+
+# Setting variables
+DPDK_VERSION=dpdk-17.05
+ROOTDIR=/tmp/openvpp-testing
+TESTPMDLOG=screenlog.0
+PWDDIR=$(pwd)
+
+# Setting command line arguments
+port1_driver=$1
+port1_pci=$2
+port2_driver=$3
+port2_pci=$4
+
+# Try to kill the testpmd
+sudo pgrep testpmd
+if [ $? -eq "0" ]; then
+ success=false
+ sudo pkill testpmd
+ echo "RC = $?"
+ for attempt in {1..5}; do
+ echo "Checking if testpmd is still alive, attempt nr ${attempt}"
+ sudo pgrep testpmd
+ if [ $? -eq "1" ]; then
+ echo "testpmd is dead"
+ success=true
+ break
+ fi
+ echo "testpmd is still alive, waiting 1 second"
+ sleep 1
+ done
+ if [ "$success" = false ]; then
+ echo "The command sudo pkill testpmd failed"
+ sudo pkill -9 testpmd
+ echo "RC = $?"
+ exit 1
+ fi
+else
+ echo "testpmd is not running"
+fi
+
+#also kill the l3fwd
+sudo pgrep l3fwd
+if [ $? -eq "0" ]; then
+ success=false
+ sudo pkill l3fwd
+ echo "RC = $?"
+ for attempt in {1..5}; do
+ echo "Checking if l3fwd is still alive, attempt nr ${attempt}"
+ sudo pgrep l3fwd
+ if [ $? -eq "1" ]; then
+ echo "l3fwd is dead"
+ success=true
+ break
+ fi
+ echo "l3fwd is still alive, waiting 1 second"
+ sleep 1
+ done
+ if [ "$success" = false ]; then
+ echo "The command sudo pkill l3fwd failed"
+ sudo pkill -9 l3fwd
+ echo "RC = $?"
+ exit 1
+ fi
+else
+ echo "l3fwd is not running"
+fi
+
+# Remove hugepages
+sudo rm -f /dev/hugepages/*
+
+# Unbind interfaces
+cd ${ROOTDIR}/${DPDK_VERSION}/
+sudo ./usertools/dpdk-devbind.py -b ${port1_driver} ${port1_pci} || \
+ { echo "Unbind ${port1_pci} failed"; exit 1; }
+sudo ./usertools/dpdk-devbind.py -b ${port2_driver} ${port2_pci} || \
+ { echo "Unbind ${port1_pci} failed"; exit 1; }
+
+sleep 2
+
+if1_name=`./usertools/dpdk-devbind.py --s | grep "${port1_pci}" | sed -n 's/.*if=\(\S\)/\1/p' | awk -F' ' '{print $1}'`
+if2_name=`./usertools/dpdk-devbind.py --s | grep "${port2_pci}" | sed -n 's/.*if=\(\S\)/\1/p' | awk -F' ' '{print $1}'`
+
+# Remove igb_uio driver
+rmmod igb_uio || \
+ { echo "Removing igb_uio failed"; exit 1; }
+
+cd ${PWDDIR}
diff --git a/tests/dpdk/dpdk_scripts/init_dpdk.sh b/tests/dpdk/dpdk_scripts/init_dpdk.sh
new file mode 100755
index 0000000000..bc4870e73e
--- /dev/null
+++ b/tests/dpdk/dpdk_scripts/init_dpdk.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+set -x
+
+# Setting variables
+DPDK_VERSION=dpdk-17.05
+ROOTDIR=/tmp/openvpp-testing
+PWDDIR=$(pwd)
+cd ${ROOTDIR}/${DPDK_VERSION}/
+
+modprobe uio
+echo "RC = $?"
+
+lsmod | grep igb_uio
+if [ $? -ne 1 ];
+then
+ rmmod igb_uio || \
+ { echo "Failed to remove igb_uio module"; exit 1; }
+fi
+
+lsmod | grep uio_pci_generic
+if [ $? -ne 1 ];
+then
+ rmmod uio_pci_generic || \
+ { echo "Failed to remove uio_pci_generic module"; exit 1; }
+fi
+
+insmod ./x86_64-native-linuxapp-gcc/kmod/igb_uio.ko || \
+ { echo "Failed to insert igb_uio module"; exit 1; }
+
+# Binding
+./usertools/dpdk-devbind.py -b igb_uio $1 $2 || \
+ { echo "Failed to bind interface $1 and $2 to igb_uio"; exit 1; }
+
+cd ${PWDDIR}
diff --git a/tests/dpdk/dpdk_scripts/install_dpdk.sh b/tests/dpdk/dpdk_scripts/install_dpdk.sh
new file mode 100755
index 0000000000..126e8cafc0
--- /dev/null
+++ b/tests/dpdk/dpdk_scripts/install_dpdk.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+set -x
+
+# Setting variables
+DPDK_VERSION=dpdk-17.05
+DPDK_DIR=${DPDK_VERSION}
+DPDK_PACKAGE=${DPDK_DIR}.tar.xz
+ROOTDIR=/tmp/openvpp-testing
+PWDDIR=$(pwd)
+
+# Download the DPDK package
+cd ${ROOTDIR}
+wget "fast.dpdk.org/rel/${DPDK_PACKAGE}" || \
+ { echo "Failed to download $DPDK_PACKAGE"; exit 1; }
+tar xJvf ${DPDK_PACKAGE} || \
+ { echo "Failed to extract $DPDK_PACKAGE"; exit 1; }
+
+# Compile the DPDK
+cd ./${DPDK_DIR}
+sudo sed -i 's/^CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n/CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=y/g' ./config/common_base
+make install T=x86_64-native-linuxapp-gcc -j || \
+ { echo "Failed to compile $DPDK_VERSION"; exit 1; }
+cd ${PWDDIR}
+
+# Compile the l3fwd
+export RTE_SDK=${ROOTDIR}/${DPDK_DIR}/
+export RTE_TARGET=x86_64-native-linuxapp-gcc
+cd ${RTE_SDK}/examples/l3fwd
+sudo sed -i 's/^#define RTE_TEST_RX_DESC_DEFAULT 128/#define RTE_TEST_RX_DESC_DEFAULT 2048/g' ./main.c
+sudo sed -i 's/^#define RTE_TEST_TX_DESC_DEFAULT 512/#define RTE_TEST_TX_DESC_DEFAULT 2048/g' ./main.c
+make -j || \
+ { echo "Failed to compile l3fwd"; exit 1; }
+cd ${PWDDIR}
+
+# Check and setup the hugepages
+SYS_HUGEPAGE=$(cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages)
+echo " SYS_HUGEPAGE = ${SYS_HUGEPAGE}"
+if [ ${SYS_HUGEPAGE} -lt 4096 ]; then
+ echo " It is not enough, should be at least 4096"
+ MOUNT=$(mount | grep /mnt/huge)
+ while [ "${MOUNT}" != "" ]
+ do
+ sudo umount /mnt/huge
+ sleep 1
+ MOUNT=$(mount | grep /mnt/huge)
+ done
+
+ echo 2048 | sudo tee /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
+ echo 2048 | sudo tee /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
+
+ echo " Mounting hugepages"
+ sudo mkdir -p /mnt/huge
+ sudo mount -t hugetlbfs nodev /mnt/huge/ || \
+ { echo "Failed to mount hugepages"; exit 1; }
+fi
+
+# Check and set the max map count
+SYS_MAP=$(cat /proc/sys/vm/max_map_count)
+
+if [ ${SYS_MAP} -lt 200000 ]; then
+ echo 200000 | sudo tee /proc/sys/vm/max_map_count
+fi
diff --git a/tests/dpdk/dpdk_scripts/run_l2fwd.sh b/tests/dpdk/dpdk_scripts/run_l2fwd.sh
new file mode 100755
index 0000000000..20c41d6d6f
--- /dev/null
+++ b/tests/dpdk/dpdk_scripts/run_l2fwd.sh
@@ -0,0 +1,115 @@
+#!/bin/bash
+
+set -x
+
+# Setting variables
+DPDK_VERSION=dpdk-17.05
+ROOTDIR=/tmp/openvpp-testing
+TESTPMDLOG=screenlog.0
+PWDDIR=$(pwd)
+
+# Setting command line arguments
+cpu_corelist=$1
+nb_cores=$2
+queue_nums=$3
+jumbo_frames=$4
+
+# Try to kill the testpmd
+sudo pgrep testpmd
+if [ $? -eq "0" ]; then
+ success=false
+ sudo pkill testpmd
+ echo "RC = $?"
+ for attempt in {1..5}; do
+ echo "Checking if testpmd is still alive, attempt nr ${attempt}"
+ sudo pgrep testpmd
+ if [ $? -eq "1" ]; then
+ echo "testpmd is dead"
+ success=true
+ break
+ fi
+ echo "testpmd is still alive, waiting 1 second"
+ sleep 1
+ done
+ if [ "$success" = false ]; then
+ echo "The command sudo pkill testpmd failed"
+ sudo pkill -9 testpmd
+ echo "RC = $?"
+ exit 1
+ fi
+else
+ echo "testpmd is not running"
+fi
+
+# Try to kill the l3fwd
+sudo pgrep l3fwd
+if [ $? -eq "0" ]; then
+ success=false
+ sudo pkill l3fwd
+ echo "RC = $?"
+ for attempt in {1..5}; do
+ echo "Checking if l3fwd is still alive, attempt nr ${attempt}"
+ sudo pgrep l3fwd
+ if [ $? -eq "1" ]; then
+ echo "l3fwd is dead"
+ success=true
+ break
+ fi
+ echo "l3fwd is still alive, waiting 1 second"
+ sleep 1
+ done
+ if [ "$success" = false ]; then
+ echo "The command sudo pkill l3fwd failed"
+ sudo pkill -9 l3fwd
+ echo "RC = $?"
+ exit 1
+ fi
+else
+ echo "l3fwd is not running"
+fi
+
+# Remove hugepages
+sudo rm -f /dev/hugepages/*
+
+sleep 2
+
+cd ${ROOTDIR}/${DPDK_VERSION}/
+rm -f ${TESTPMDLOG}
+if [ "$jumbo_frames" = "yes" ]; then
+ sudo sh -c "screen -dmSL DPDK-test ./x86_64-native-linuxapp-gcc/app/testpmd \
+ -l ${cpu_corelist} -n 4 -- \
+ --numa \
+ --nb-ports=2 \
+ --portmask=0x3 \
+ --nb-cores=${nb_cores} \
+ --max-pkt-len=9000 \
+ --txqflags=0 \
+ --forward-mode=io \
+ --rxq=${queue_nums} \
+ --txq=$((${nb_cores} + 1)) \
+ --burst=64 \
+ --rxd=1024 \
+ --txd=1024 \
+ --disable-link-check \
+ --auto-start"
+else
+ sudo sh -c "screen -dmSL DPDK-test ./x86_64-native-linuxapp-gcc/app/testpmd \
+ -l ${cpu_corelist} -n 4 -- \
+ --numa \
+ --nb-ports=2 \
+ --portmask=0x3 \
+ --nb-cores=${nb_cores} \
+ --forward-mode=io \
+ --rxq=${queue_nums} \
+ --txq=$((${nb_cores} + 1)) \
+ --burst=64 \
+ --rxd=1024 \
+ --txd=1024 \
+ --disable-link-check \
+ --auto-start"
+fi
+
+sleep 10
+less -r ${TESTPMDLOG}
+
+cd ${PWDDIR}
diff --git a/tests/dpdk/dpdk_scripts/run_l3fwd.sh b/tests/dpdk/dpdk_scripts/run_l3fwd.sh
new file mode 100755
index 0000000000..3363d71875
--- /dev/null
+++ b/tests/dpdk/dpdk_scripts/run_l3fwd.sh
@@ -0,0 +1,104 @@
+#!/bin/bash
+
+set -x
+
+# Setting variables
+DPDK_VERSION=dpdk-17.05
+ROOTDIR=/tmp/openvpp-testing
+L3FWDLOG=screenlog.0
+PWDDIR=$(pwd)
+
+cpu_corelist=$1
+port_config=$2
+adj_mac0=$3
+adj_mac1=$4
+jumbo_frames=$5
+
+SCRIPT_NAME=$(basename $0)
+
+# define a function to get the l3fwd PID
+function get_l3fwd_pid()
+{
+ pid_l3fwd=`sudo ps -elf | grep l3fwd | grep -v grep | grep -v SCREEN | grep -v ${SCRIPT_NAME} | awk '{print $4}'`
+ echo ${pid_l3fwd}
+}
+
+# Try to kill the l3fwd
+# Don't use the pgrep and pkill
+l3fwd_pid=`get_l3fwd_pid`
+echo ${l3fwd_pid}
+if [ ! -z ${l3fwd_pid} ]; then
+ success=false
+ sudo kill -15 ${l3fwd_pid}
+ echo "RC = $?"
+ for attempt in {1..5}; do
+ echo "Checking if l3fwd is still alive, attempt nr ${attempt}"
+ l3fwd_pid=`get_l3fwd_pid`
+ if [ -z ${l3fwd_pid} ]; then
+ echo "l3fwd is dead"
+ success=true
+ break
+ fi
+ echo "l3fwd is still alive, waiting 1 second"
+ sleep 1
+ done
+ if [ "$success" = false ]; then
+ echo "The command sudo kill -15 l3fwd failed"
+ sudo kill -9 ${l3fwd_pid}
+ echo "RC = $?"
+ exit 1
+ fi
+else
+ echo "l3fwd is not running"
+fi
+
+# Try to kill the testpmd
+sudo pgrep testpmd
+if [ $? -eq "0" ]; then
+ success=false
+ sudo pkill testpmd
+ echo "RC = $?"
+ for attempt in {1..5}; do
+ echo "Checking if testpmd is still alive, attempt nr ${attempt}"
+ sudo pgrep testpmd
+ if [ $? -eq "1" ]; then
+ echo "testpmd is dead"
+ success=true
+ break
+ fi
+ echo "testpmd is still alive, waiting 1 second"
+ sleep 1
+ done
+ if [ "$success" = false ]; then
+ echo "The command sudo pkill testpmd failed"
+ sudo pkill -9 testpmd
+ echo "RC = $?"
+ exit 1
+ fi
+else
+ echo "testpmd is not running"
+fi
+
+sudo rm -f /dev/hugepages/*
+
+sleep 2
+
+#run the l3fwd
+cd ${ROOTDIR}/${DPDK_VERSION}/
+rm -f ${L3FWDLOG}
+if [ "$jumbo_frames" = "yes" ]; then
+ sudo sh -c "screen -dmSL DPDK-test ./examples/l3fwd/build/app/l3fwd \
+ -l ${cpu_corelist} -n 4 -- -P -L -p 0x3 --config='${port_config}' \
+ --enable-jumbo --max-pkt-len=9000 --eth-dest=0,${adj_mac0} \
+ --eth-dest=1,${adj_mac1} --parse-ptype"
+else
+ sudo sh -c "screen -dmSL DPDK-test ./examples/l3fwd/build/app/l3fwd \
+ -l ${cpu_corelist} -n 4 -- -P -L -p 0x3 --config='${port_config}' \
+ --eth-dest=0,${adj_mac0} --eth-dest=1,${adj_mac1} --parse-ptype"
+fi
+
+sleep 10
+less -r ${L3FWDLOG}
+
+cd ${PWDDIR}
+
diff --git a/tests/dpdk/perf/10ge2p1x520-eth-l2xcbase-testpmd-ndrpdrdisc.robot b/tests/dpdk/perf/10ge2p1x520-eth-l2xcbase-testpmd-ndrpdrdisc.robot
new file mode 100644
index 0000000000..962552dae4
--- /dev/null
+++ b/tests/dpdk/perf/10ge2p1x520-eth-l2xcbase-testpmd-ndrpdrdisc.robot
@@ -0,0 +1,374 @@
+# Copyright (c) 2017 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/dpdk/default.robot
+| Library | resources.libraries.python.topology.Topology
+| Library | resources.libraries.python.NodePath
+| Library | resources.libraries.python.InterfaceUtil
+| Library | resources.libraries.python.DPDK.DPDKTools
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | PERFTEST | NDRPDRDISC | 1NUMA
+| ... | NIC_Intel-X520-DA2 | DPDK | ETH | L2XCFWD | BASE
+| Suite Setup | Set up DPDK 3-node performance topology with DUT's NIC model
+| ... | L2 | Intel-X520-DA2
+| Suite Teardown | Tear down DPDK 3-node performance topology
+| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 frame forwarding.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 run the DPDK testpmd\
+| ... | application and use the io forwarding mode. DUT1 and DUT2 tested with\
+| ... | 2p10GE NIC X520 Niantic by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using either binary search or linear search\
+| ... | algorithms with configured starting rate and final step that determines\
+| ... | throughput measurement resolution. Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 253 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of the TG node\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X520-DA2 bandwidth limit
+| ${s_limit} | ${10000000000}
+# Traffic profile:
+| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254
+
+*** Test Cases ***
+| tc01-64B-1t1c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames\
+| | ... | using binary search start at 10GE linerate, step 100kpps.
+| | [Tags] | 1T1C | STHREAD | NDRDISC
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc02-64B-1t1c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames\
+| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%.
+| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc03-1518B-1t1c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames\
+| | ... | using binary search start at 10GE linerate, step 10kpps.
+| | [Tags] | 1T1C | STHREAD | NDRDISC
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc04-1518B-1t1c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames\
+| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%.
+| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc05-9000B-1t1c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames\
+| | ... | using binary search start at 10GE linerate, step 10kpps.
+| | [Tags] | 1T1C | STHREAD | NDRDISC
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc06-9000B-1t1c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames\
+| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%.
+| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc07-64B-2t2c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\
+| | ... | cores, 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte\
+| | ... | frames using binary search start at 10GE linerate, step 100kpps.
+| | [Tags] | 2T2C | MTHREAD | NDRDISC
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc08-64B-2t2c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\
+| | ... | cores, 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte\
+| | ... | frames using binary search start at 10GE linerate, step 100kpps,\
+| | ... | LT=0.5%.
+| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc09-1518B-2t2c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\
+| | ... | cores, 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte\
+| | ... | frames using binary search start at 10GE linerate, step 10kpps.
+| | [Tags] | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc10-1518B-2t2c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\
+| | ... | cores, 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte\
+| | ... | frames using binary search start at 10GE linerate, step 10kpps,\
+| | ... | LT=0.5%.
+| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc11-9000B-2t2c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\
+| | ... | cores, 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte\
+| | ... | frames using binary search start at 10GE linerate, step 10kpps.
+| | [Tags] | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc12-9000B-2t2c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\
+| | ... | cores, 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte\
+| | ... | frames using binary search start at 10GE linerate, step 10kpps,\
+| | ... | LT=0.5%.
+| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc13-64B-4t4c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\
+| | ... | cores, 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte\
+| | ... | frames using binary search start at 10GE linerate, step 100kpps.
+| | [Tags] | 4T4C | MTHREAD | NDRDISC
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc14-64B-4t4c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\
+| | ... | cores, 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte\
+| | ... | frames using binary search start at 10GE linerate, step 100kpps,\
+| | ... | LT=0.5%.
+| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc15-1518B-4t4c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\
+| | ... | cores, 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte\
+| | ... | frames using binary search start at 10GE linerate, step 10kpps.
+| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc16-1518B-4t4c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\
+| | ... | cores, 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte\
+| | ... | frames using binary search start at 10GE linerate, step 10kpps,\
+| | ... | LT=0.5%.
+| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc17-9000B-4t4c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\
+| | ... | cores, 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte\
+| | ... | frames using binary search start at 10GE linerate, step 10kpps.
+| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc18-9000B-4t4c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\
+| | ... | cores, 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte
+| | ... | frames using binary search start at 10GE linerate, step 5kpps,\
+| | ... | LT=0.5%.
+| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
diff --git a/tests/dpdk/perf/10ge2p1x520-ethip4-ip4base-l3fwd-ndrpdrdisc.robot b/tests/dpdk/perf/10ge2p1x520-ethip4-ip4base-l3fwd-ndrpdrdisc.robot
new file mode 100644
index 0000000000..c493c27e7b
--- /dev/null
+++ b/tests/dpdk/perf/10ge2p1x520-ethip4-ip4base-l3fwd-ndrpdrdisc.robot
@@ -0,0 +1,421 @@
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/dpdk/default.robot
+| Library | resources.libraries.python.topology.Topology
+| Library | resources.libraries.python.NodePath
+| Library | resources.libraries.python.InterfaceUtil
+| Library | resources.libraries.python.DPDK.DPDKTools
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC | 1NUMA
+| ... | NIC_Intel-X520-DA2 | DPDK | IP4FWD | BASE | ETH
+| Suite Setup | Set up DPDK 3-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X520-DA2
+| Suite Teardown | Tear down DPDK 3-node performance topology
+| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L3 IPv4 routing.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 run the DPDK l3fwd application
+| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using either binary search or linear search
+| ... | algorithms with configured starting rate and final step that determines
+| ... | throughput measurement resolution. Test packets are generated by TG on
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
+| ... | (flow-group per direction, 253 flows per flow-group) with all packets
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
+| ... | payload. MAC addresses are matching MAC addresses of the TG node
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X520-DA2 bandwidth limit
+| ${s_limit} | ${10000000000}
+# Traffic profile:
+| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst253_l3fwd
+
+*** Test Cases ***
+| tc01-64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L3 IPv4 routing config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\
+| | ... | at 10GE linerate, step 100kpps.
+| | ...
+| | [Tags] | 1T1C | STHREAD | NDRDISC
+| | ...
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L3FWD '1' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate}
+| | ... | ${threshold}
+
+| tc02-64B-1t1c-ethip4-ip4base-l3fwd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L3 IPv4 routing config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\
+| | ... | at 10GE linerate, step 100kpps, LT=0.5%.
+| | ...
+| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L3FWD '1' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate}
+| | ... | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc03-1518B-1t1c-ethip4-ip4base-l3fwd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L3 IPv4 routing config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start\
+| | ... | at 10GE linerate, step 10kpps.
+| | ...
+| | [Tags] | 1T1C | STHREAD | NDRDISC
+| | ...
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L3FWD '1' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate}
+| | ... | ${threshold}
+
+| tc04-1518B-1t1c-ethip4-ip4base-l3fwd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L3 IPv4 routing config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start\
+| | ... | at 10GE linerate, step 10kpps, LT=0.5%.
+| | ...
+| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L3FWD '1' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate}
+| | ... | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc05-9000B-1t1c-ethip4-ip4base-l3fwd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L3 IPv4 routing config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\
+| | ... | at 10GE linerate, step 5kpps.
+| | ...
+| | [Tags] | 1T1C | STHREAD | NDRDISC
+| | ...
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L3FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate}
+| | ... | ${threshold}
+
+| tc06-9000B-1t1c-ethip4-ip4base-l3fwd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L3 IPv4 routing config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\
+| | ... | at 10GE linerate, step 5kpps, LT=0.5%.
+| | ...
+| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L3FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate}
+| | ... | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc07-64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L3 IPv4 routing config with 2 threads, 2 phy cores,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\
+| | ... | at 10GE linerate, step 100kpps.
+| | ...
+| | [Tags] | 2T2C | MTHREAD | NDRDISC
+| | ...
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L3FWD '2' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate}
+| | ... | ${threshold}
+
+| tc08-64B-2t2c-ethip4-ip4base-l3fwd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L3 IPv4 routing config with 2 threads, 2 phy cores,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\
+| | ... | at 10GE linerate, step 100kpps, LT=0.5%.
+| | ...
+| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L3FWD '2' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate}
+| | ... | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc09-1518B-2t2c-ethip4-ip4base-l3fwd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L3 IPv4 routing config with 2 threads, 2 phy cores,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start\
+| | ... | at 10GE linerate, step 10kpps.
+| | ...
+| | [Tags] | 2T2C | MTHREAD | NDRDISC
+| | ...
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L3FWD '2' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate}
+| | ... | ${threshold}
+
+| tc10-1518B-2t2c-ethip4-ip4base-l3fwd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L3 IPv4 routing config with 2 threads, 2 phy cores,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start\
+| | ... | at 10GE linerate, step 10kpps, LT=0.5%.
+| | ...
+| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L3FWD '2' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate}
+| | ... | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc11-9000B-2t2c-ethip4-ip4base-l3fwd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L3 IPv4 routing config with 2 threads, 2 phy cores,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\
+| | ... | at 10GE linerate, step 5kpps.
+| | ...
+| | [Tags] | 2T2C | MTHREAD | NDRDISC
+| | ...
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L3FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate}
+| | ... | ${threshold}
+
+| tc12-9000B-2t2c-ethip4-ip4base-l3fwd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L3 IPv4 routing config with 2 threads, 2 phy cores,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\
+| | ... | at 10GE linerate, step 5kpps, LT=0.5%.
+| | ...
+| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L3FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate}
+| | ... | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc13-64B-4t4c-ethip4-ip4base-l3fwd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L3 IPv4 routing config with 4 threads, 4 phy cores,\
+| | ... | 2 receive queues per NIC port.
+| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\
+| | ... | at 10GE linerate, step 100kpps.
+| | ...
+| | [Tags] | 4T4C | MTHREAD | NDRDISC
+| | ...
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L3FWD '4' worker threads and '2' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate}
+| | ... | ${threshold}
+
+| tc14-64B-4t4c-ethip4-ip4base-l3fwd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L3 IPv4 routing config with 4 threads, 4 phy cores,\
+| | ... | 2 receive queues per NIC port.
+| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\
+| | ... | at 10GE linerate, step 100kpps, LT=0.5%.
+| | ...
+| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L3FWD '4' worker threads and '2' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate}
+| | ... | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc15-1518B-4t4c-ethip4-ip4base-l3fwd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L3 IPv4 routing config with 4 threads, 4 phy cores,\
+| | ... | 2 receive queues per NIC port.
+| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start\
+| | ... | at 10GE linerate, step 10kpps.
+| | ...
+| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L3FWD '4' worker threads and '2' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate}
+| | ... | ${threshold}
+
+| tc16-1518B-4t4c-ethip4-ip4base-l3fwd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L3 IPv4 routing config with 4 threads, 4 phy cores,\
+| | ... | 2 receive queues per NIC port.
+| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start\
+| | ... | at 10GE linerate, step 10kpps, LT=0.5%.
+| | ...
+| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L3FWD '4' worker threads and '2' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate}
+| | ... | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc17-9000B-4t4c-ethip4-ip4base-l3fwd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L3 IPv4 routing config with 4 threads, 4 phy cores,\
+| | ... | 2 receive queues per NIC port.
+| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\
+| | ... | at 10GE linerate, step 5kpps.
+| | ...
+| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L3FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate}
+| | ... | ${threshold}
+
+| tc18-9000B-4t4c-ethip4-ip4base-l3fwd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L3 IPv4 routing config with 4 threads, 4 phy cores,\
+| | ... | 2 receive queues per NIC port.
+| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\
+| | ... | at 10GE linerate, step 5kpps, LT=0.5%.
+| | ...
+| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L3FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate}
+| | ... | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
diff --git a/tests/dpdk/perf/10ge2p1x710-eth-l2xcbase-testpmd-ndrpdrdisc.robot b/tests/dpdk/perf/10ge2p1x710-eth-l2xcbase-testpmd-ndrpdrdisc.robot
new file mode 100644
index 0000000000..148c4ddd35
--- /dev/null
+++ b/tests/dpdk/perf/10ge2p1x710-eth-l2xcbase-testpmd-ndrpdrdisc.robot
@@ -0,0 +1,422 @@
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/dpdk/default.robot
+| Library | resources.libraries.python.topology.Topology
+| Library | resources.libraries.python.NodePath
+| Library | resources.libraries.python.InterfaceUtil
+| Library | resources.libraries.python.DPDK.DPDKTools
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | PERFTEST | NDRPDRDISC | 1NUMA
+| ... | NIC_Intel-X710 | DPDK | ETH | L2XCFWD | BASE
+| Suite Setup | Set up DPDK 3-node performance topology with DUT's NIC model
+| ... | L2 | Intel-X710
+| Suite Teardown | Tear down DPDK 3-node performance topology
+| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 frame forwarding.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 run the DPDK testpmd\
+| ... | application and use the io forwarding mode. DUT1 and DUT2 tested with\
+| ... | 2p10GE NIC X710 Niantic by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using either binary search or linear search\
+| ... | algorithms with configured starting rate and final step that determines\
+| ... | throughput measurement resolution. Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 253 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of the TG node\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X520-DA2 bandwidth limit
+| ${s_limit} | ${10000000000}
+# Traffic profile:
+| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254
+
+*** Test Cases ***
+| tc01-64B-1t1c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\
+| | ... | linerate, step 100kpps.
+| | ...
+| | [Tags] | 1T1C | STHREAD | NDRDISC
+| | ...
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc02-64B-1t1c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\
+| | ... | linerate, step 100kpps, LT=0.5%.
+| | ...
+| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc03-1518B-1t1c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\
+| | ... | linerate, step 10kpps.
+| | ...
+| | [Tags] | 1T1C | STHREAD | NDRDISC
+| | ...
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc04-1518B-1t1c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\
+| | ... | linerate, step 10kpps, LT=0.5%.
+| | ...
+| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc05-9000B-1t1c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\
+| | ... | linerate, step 10kpps.
+| | ...
+| | [Tags] | 1T1C | STHREAD | NDRDISC
+| | ...
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc06-9000B-1t1c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\
+| | ... | linerate, step 10kpps, LT=0.5%.
+| | ...
+| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc07-64B-2t2c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\
+| | ... | cores, 1 receive queue per NIC port.
+| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\
+| | ... | linerate, step 100kpps.
+| | ...
+| | [Tags] | 2T2C | MTHREAD | NDRDISC
+| | ...
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc08-64B-2t2c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\
+| | ... | cores, 1 receive queue per NIC port.
+| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\
+| | ... | linerate, step 100kpps, LT=0.5%.
+| | ...
+| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc09-1518B-2t2c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\
+| | ... | cores, 1 receive queue per NIC port.
+| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\
+| | ... | linerate, step 10kpps.
+| | ...
+| | [Tags] | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc10-1518B-2t2c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\
+| | ... | cores, 1 receive queue per NIC port.
+| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\
+| | ... | linerate, step 10kpps, LT=0.5%.
+| | ...
+| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc11-9000B-2t2c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\
+| | ... | cores, 1 receive queue per NIC port.
+| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\
+| | ... | linerate, step 10kpps.
+| | ...
+| | [Tags] | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc12-9000B-2t2c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\
+| | ... | cores, 1 receive queue per NIC port.
+| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\
+| | ... | linerate, step 10kpps, LT=0.5%.
+| | ...
+| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc13-64B-4t4c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\
+| | ... | cores, 2 receive queues per NIC port.
+| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\
+| | ... | linerate, step 100kpps.
+| | ...
+| | [Tags] | 4T4C | MTHREAD | NDRDISC
+| | ...
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc14-64B-4t4c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\
+| | ... | cores, 2 receive queues per NIC port.
+| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\
+| | ... | linerate, step 100kpps, LT=0.5%.
+| | ...
+| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc15-1518B-4t4c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\
+| | ... | cores, 2 receive queues per NIC port.
+| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\
+| | ... | linerate, step 10kpps.
+| | ...
+| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc16-1518B-4t4c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\
+| | ... | cores, 2 receive queues per NIC port.
+| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\
+| | ... | linerate, step 10kpps, LT=0.5%.
+| | ...
+| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc17-9000B-4t4c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\
+| | ... | cores, 2 receive queues per NIC port.
+| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\
+| | ... | linerate, step 10kpps.
+| | ...
+| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc18-9000B-4t4c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\
+| | ... | cores, 2 receive queues per NIC port.
+| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\
+| | ... | linerate, step 5kpps, LT=0.5%.
+| | ...
+| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type} \ No newline at end of file
diff --git a/tests/dpdk/perf/40ge2p1xl710-eth-l2xcbase-testpmd-ndrpdrdisc.robot b/tests/dpdk/perf/40ge2p1xl710-eth-l2xcbase-testpmd-ndrpdrdisc.robot
new file mode 100644
index 0000000000..5d5418c6c1
--- /dev/null
+++ b/tests/dpdk/perf/40ge2p1xl710-eth-l2xcbase-testpmd-ndrpdrdisc.robot
@@ -0,0 +1,424 @@
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/dpdk/default.robot
+| Library | resources.libraries.python.topology.Topology
+| Library | resources.libraries.python.NodePath
+| Library | resources.libraries.python.InterfaceUtil
+| Library | resources.libraries.python.DPDK.DPDKTools
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | PERFTEST | NDRPDRDISC | 1NUMA
+| ... | NIC_Intel-XL710 | DPDK | ETH | L2XCFWD | BASE
+| Suite Setup | Set up DPDK 3-node performance topology with DUT's NIC model
+| ... | L2 | Intel-XL710
+| Suite Teardown | Tear down DPDK 3-node performance topology
+| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 frame forwarding.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 run the DPDK testpmd\
+| ... | application and use the io forwarding mode. DUT1 and DUT2 tested with\
+| ... | 2p40GE NIC XL710 Niantic by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using either binary search or linear search\
+| ... | algorithms with configured starting rate and final step that determines\
+| ... | throughput measurement resolution. Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 253 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of the TG node\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps
+| ${s_24.5G} | ${24500000000}
+# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps
+| ${s_18.75Mpps} | ${18750000}
+# Traffic profile:
+| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254
+
+*** Test Cases ***
+| tc01-64B-1t1c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\
+| | ... | linerate, step 100kpps.
+| | ...
+| | [Tags] | 1T1C | STHREAD | NDRDISC
+| | ...
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Set Variable | ${s_18.75Mpps}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc02-64B-1t1c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\
+| | ... | linerate, step 100kpps, LT=0.5%.
+| | ...
+| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Set Variable | ${s_18.75Mpps}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc03-1518B-1t1c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 40GE\
+| | ... | linerate, step 10kpps.
+| | ...
+| | [Tags] | 1T1C | STHREAD | NDRDISC
+| | ...
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc04-1518B-1t1c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\
+| | ... | linerate, step 10kpps, LT=0.5%.
+| | ...
+| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc05-9000B-1t1c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 40GE\
+| | ... | linerate, step 10kpps.
+| | ...
+| | [Tags] | 1T1C | STHREAD | NDRDISC
+| | ...
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc06-9000B-1t1c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\
+| | ... | 1 receive queue per NIC port.
+| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 40GE\
+| | ... | linerate, step 10kpps, LT=0.5%.
+| | ...
+| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc07-64B-2t2c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\
+| | ... | cores, 1 receive queue per NIC port.
+| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\
+| | ... | linerate, step 100kpps.
+| | ...
+| | [Tags] | 2T2C | MTHREAD | NDRDISC
+| | ...
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Set Variable | ${s_18.75Mpps}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc08-64B-2t2c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\
+| | ... | cores, 1 receive queue per NIC port.
+| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\
+| | ... | linerate, step 100kpps, LT=0.5%.
+| | ...
+| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Set Variable | ${s_18.75Mpps}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc09-1518B-2t2c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\
+| | ... | cores, 1 receive queue per NIC port.
+| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 40GE\
+| | ... | linerate, step 10kpps.
+| | ...
+| | [Tags] | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc10-1518B-2t2c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\
+| | ... | cores, 1 receive queue per NIC port.
+| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\
+| | ... | linerate, step 10kpps, LT=0.5%.
+| | ...
+| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc11-9000B-2t2c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\
+| | ... | cores, 1 receive queue per NIC port.
+| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 40GE\
+| | ... | linerate, step 10kpps.
+| | ...
+| | [Tags] | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc12-9000B-2t2c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\
+| | ... | cores, 1 receive queue per NIC port.
+| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 40GE\
+| | ... | linerate, step 10kpps, LT=0.5%.
+| | ...
+| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc13-64B-4t4c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\
+| | ... | cores, 2 receive queues per NIC port.
+| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\
+| | ... | linerate, step 100kpps.
+| | ...
+| | [Tags] | 4T4C | MTHREAD | NDRDISC
+| | ...
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Set Variable | ${s_18.75Mpps}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc14-64B-4t4c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\
+| | ... | cores, 2 receive queues per NIC port.
+| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\
+| | ... | linerate, step 100kpps, LT=0.5%.
+| | ...
+| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${64}
+| | ${min_rate}= | Set Variable | ${100000}
+| | ${max_rate}= | Set Variable | ${s_18.75Mpps}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc15-1518B-4t4c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\
+| | ... | cores, 2 receive queues per NIC port.
+| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 40GE\
+| | ... | linerate, step 10kpps.
+| | ...
+| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc16-1518B-4t4c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\
+| | ... | cores, 2 receive queues per NIC port.
+| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\
+| | ... | linerate, step 10kpps, LT=0.5%.
+| | ...
+| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${1518}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type}
+
+| tc17-9000B-4t4c-eth-l2xcbase-testpmd-ndrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\
+| | ... | cores, 2 receive queues per NIC port.
+| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 40GE\
+| | ... | linerate, step 10kpps.
+| | ...
+| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes'
+| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold}
+
+| tc18-9000B-4t4c-eth-l2xcbase-testpmd-pdrdisc
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\
+| | ... | cores, 2 receive queues per NIC port.
+| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 40GE\
+| | ... | linerate, step 5kpps, LT=0.5%.
+| | ...
+| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH
+| | ...
+| | ${framesize}= | Set Variable | ${9000}
+| | ${min_rate}= | Set Variable | ${10000}
+| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize}
+| | ${binary_min}= | Set Variable | ${min_rate}
+| | ${binary_max}= | Set Variable | ${max_rate}
+| | ${threshold}= | Set Variable | ${min_rate}
+| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes'
+| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min}
+| | ... | ${binary_max} | ${traffic_profile}
+| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
+| | ... | ${perf_pdr_loss_acceptance_type} \ No newline at end of file
diff --git a/tests/dpdk/perf/__init__.robot b/tests/dpdk/perf/__init__.robot
new file mode 100644
index 0000000000..5801fd1b25
--- /dev/null
+++ b/tests/dpdk/perf/__init__.robot
@@ -0,0 +1,38 @@
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Library | resources.libraries.python.DPDK.SetupDPDKTest
+| Suite Setup | Run Keywords | Setup performance global Variables
+| ... | AND | Setup DPDK Test | ${nodes}
+| ... | AND | Get CPU Layout from all nodes | ${nodes}
+| ... | AND | Update All Numa Nodes
+| ... | ${nodes} | skip_tg=${True}
+
+*** Keywords ***
+| Setup performance global Variables
+| | [Documentation]
+| | ... | Setup suite Variables. Variables are used across performance testing.
+| | ...
+| | ... | _NOTE:_ This KW sets following suite variables:
+| | ... | - perf_trial_duration - Duration of traffic run [s].
+| | ... | - perf_pdr_loss_acceptance - Loss acceptance treshold
+| | ... | - perf_pdr_loss_acceptance_type - Loss acceptance treshold type
+| | ... | - perf_vm_image - Guest VM disk image
+| | ...
+| | Set Global Variable | ${perf_trial_duration} | 10
+| | Set Global Variable | ${perf_pdr_loss_acceptance} | 0.5
+| | Set Global Variable | ${perf_pdr_loss_acceptance_type} | percentage
+| | Set Global Variable | ${perf_vm_image} | /var/lib/vm/csit-nested-1.6.img
diff --git a/tests/nsh_sfc/func/__init__.robot b/tests/nsh_sfc/func/__init__.robot
new file mode 100644
index 0000000000..707244ccb4
--- /dev/null
+++ b/tests/nsh_sfc/func/__init__.robot
@@ -0,0 +1,20 @@
+# Copyright (c) 2017 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Library | resources.libraries.python.SFC.SetupSFCTest
+| Suite Setup | Run Keywords | Setup NSH SFC test | ${nodes}
+| ... | AND | Setup All DUTs | ${nodes}
+| ... | AND | Update All Interface Data On All Nodes | ${nodes}
diff --git a/tests/nsh_sfc/func/proxy/eth2p-ethip4-nsh-proxy-inbound-func.robot b/tests/nsh_sfc/func/proxy/eth2p-ethip4-nsh-proxy-inbound-func.robot
new file mode 100644
index 0000000000..a85b539a83
--- /dev/null
+++ b/tests/nsh_sfc/func/proxy/eth2p-ethip4-nsh-proxy-inbound-func.robot
@@ -0,0 +1,85 @@
+# Copyright (c) 2017 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Library | resources.libraries.python.NodePath
+| Library | resources.libraries.python.Trace
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/nsh_sfc/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST
+| Suite Setup | Run Keywords
+| ... | Configure all DUTs before test | AND
+| ... | Configure all TGs for traffic script | AND
+| ... | Update All Interface Data On All Nodes | ${nodes} | AND
+| ... | Setup DUT nodes for 'Proxy Inbound' functional testing
+| Test Setup | Run Keywords | Save VPP PIDs | AND
+| ... | Reset VAT History On All DUTs | ${nodes} | AND
+| ... | Clear interface counters on all vpp nodes in topology | ${nodes}
+| Test Teardown | Run Keywords
+| ... | Show packet trace on all DUTs | ${nodes} | AND
+| ... | Show VAT History On All DUTs | ${nodes} | AND
+| ... | Verify VPP PID in Teardown
+| Documentation | *NSH SFC Proxy Inbound test cases*
+| ...
+| ... | Test the SFC Proxy Inbound functional. DUT run the VPP with NSH
+| ... | SFC Plugin, TG send a VxLAN-GPE+NSH packet to the DUT,
+| ... | if the packet match the SFC Proxy inbound rules, the SFC Proxy will
+| ... | pop the VxLAN-GPE and NSH protocol, then encapsulate with the
+| ... | VxLAN protocol. DUT will loopback the packet to the TG.
+| ... | The TG will capture this VxLAN packet and check the packet
+| ... | field is correct.
+
+*** Test Cases ***
+| TC01: NSH SFC Proxy Inbound functional test with 152B frame size
+| | [Documentation]
+| | ... | Make TG send 152 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\
+| | ... | Make TG verify SFC Proxy Inbound functional is correct.
+| | ${frame_size}= | Set Variable | ${152}
+| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Inbound" test
+
+| TC02: NSH SFC Proxy Inbound functional test with 256B frame size
+| | [Documentation]
+| | ... | Make TG send 256 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\
+| | ... | Make TG verify SFC Proxy Inbound functional is correct.
+| | ${frame_size}= | Set Variable | ${256}
+| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Inbound" test
+
+| TC03: NSH SFC Proxy Inbound functional test with 512B frame size
+| | [Documentation]
+| | ... | Make TG send 512 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\
+| | ... | Make TG verify SFC Proxy Inbound functional is correct.
+| | ${frame_size}= | Set Variable | ${512}
+| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Inbound" test
+
+| TC04: NSH SFC Proxy Inbound functional test with 1024B frame size
+| | [Documentation]
+| | ... | Make TG send 1024 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\
+| | ... | Make TG verify SFC Proxy Inbound functional is correct.
+| | ${frame_size}= | Set Variable | ${1024}
+| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Inbound" test
+
+| TC05: NSH SFC Proxy Inbound functional test with 1280B frame size
+| | [Documentation]
+| | ... | Make TG send 1280 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\
+| | ... | Make TG verify SFC Proxy Inbound functional is correct.
+| | ${frame_size}= | Set Variable | ${1280}
+| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Inbound" test
+
+| TC06: NSH SFC Proxy Inbound functional test with 1518B frame size
+| | [Documentation]
+| | ... | Make TG send 1518 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\
+| | ... | Make TG verify SFC Proxy Inbound functional is correct.
+| | ${frame_size}= | Set Variable | ${1518}
+| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Inbound" test
diff --git a/tests/nsh_sfc/func/proxy/eth2p-ethip4-nsh-proxy-outbound-func.robot b/tests/nsh_sfc/func/proxy/eth2p-ethip4-nsh-proxy-outbound-func.robot
new file mode 100644
index 0000000000..005272b1f9
--- /dev/null
+++ b/tests/nsh_sfc/func/proxy/eth2p-ethip4-nsh-proxy-outbound-func.robot
@@ -0,0 +1,86 @@
+# Copyright (c) 2017 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Library | resources.libraries.python.NodePath
+| Library | resources.libraries.python.Trace
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/nsh_sfc/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST
+| Suite Setup | Run Keywords
+| ... | Configure all DUTs before test | AND
+| ... | Configure all TGs for traffic script | AND
+| ... | Update All Interface Data On All Nodes | ${nodes} | AND
+| ... | Setup DUT nodes for 'Proxy Outbound' functional testing
+| Test Setup | Run Keywords | Save VPP PIDs | AND
+| ... | Reset VAT History On All DUTs | ${nodes} | AND
+| ... | Clear interface counters on all vpp nodes in topology | ${nodes}
+| Test Teardown | Run Keywords
+| ... | Show packet trace on all DUTs | ${nodes} | AND
+| ... | Show VAT History On All DUTs | ${nodes} | AND
+| ... | Verify VPP PID in Teardown
+| Documentation | *NSH SFC Proxy Outbound test cases*
+| ...
+| ... | Test the SFC Proxy Outbound functional. DUT run the VPP with NSH
+| ... | SFC Plugin, TG send a VxLAN packet to the DUT,
+| ... | if the packet match the SFC Proxy outbound rules, the SFC Proxy will
+| ... | push the NSH protocol, then encapsulate with the VxLAN-GPE protocol.
+| ... | DUT will loopback the packet to the TG.
+| ... | The TG will capture this VxLAN-GPE+NSH packet and check the packet
+| ... | field is correct.
+
+
+*** Test Cases ***
+| TC01: NSH SFC Proxy Outbound functional test with 128B frame size
+| | [Documentation]
+| | ... | Make TG send 128 Bytes VxLAN packet to DUT ingress interface.\
+| | ... | Make TG verify SFC Proxy Outbound functional is correct.
+| | ${frame_size}= | Set Variable | ${128}
+| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Outbound" test
+
+| TC02: NSH SFC Proxy Outbound functional test with 256B frame size
+| | [Documentation]
+| | ... | Make TG send 256 Bytes VxLAN packet to DUT ingress interface.\
+| | ... | Make TG verify SFC Proxy Outbound functional is correct.
+| | ${frame_size}= | Set Variable | ${256}
+| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Outbound" test
+
+| TC03: NSH SFC Proxy Outbound functional test with 512B frame size
+| | [Documentation]
+| | ... | Make TG send 512 Bytes VxLAN packet to DUT ingress interface.\
+| | ... | Make TG verify SFC Proxy Outbound functional is correct.
+| | ${frame_size}= | Set Variable | ${512}
+| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Outbound" test
+
+| TC04: NSH SFC Proxy Outbound functional test with 1024B frame size
+| | [Documentation]
+| | ... | Make TG send 1024 Bytes VxLAN packet to DUT ingress interface.\
+| | ... | Make TG verify SFC Proxy Outbound functional is correct.
+| | ${frame_size}= | Set Variable | ${1024}
+| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Outbound" test
+
+| TC05: NSH SFC Proxy Outbound functional test with 1280B frame size
+| | [Documentation]
+| | ... | Make TG send 1280 Bytes VxLAN packet to DUT ingress interface.\
+| | ... | Make TG verify SFC Proxy Outbound functional is correct.
+| | ${frame_size}= | Set Variable | ${1280}
+| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Outbound" test
+
+| TC06: NSH SFC Proxy Outbound functional test with 1518B frame size
+| | [Documentation]
+| | ... | Make TG send 1518 Bytes VxLAN packet to DUT ingress interface.\
+| | ... | Make TG verify SFC Proxy Outbound functional is correct.
+| | ${frame_size}= | Set Variable | ${1518}
+| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Outbound" test
diff --git a/tests/nsh_sfc/func/sff/eth2p-ethip4-sfc-sff-func.robot b/tests/nsh_sfc/func/sff/eth2p-ethip4-sfc-sff-func.robot
new file mode 100644
index 0000000000..1356c8c2da
--- /dev/null
+++ b/tests/nsh_sfc/func/sff/eth2p-ethip4-sfc-sff-func.robot
@@ -0,0 +1,85 @@
+# Copyright (c) 2017 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Library | resources.libraries.python.NodePath
+| Library | resources.libraries.python.Trace
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/nsh_sfc/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST
+| Suite Setup | Run Keywords
+| ... | Configure all DUTs before test | AND
+| ... | Configure all TGs for traffic script | AND
+| ... | Update All Interface Data On All Nodes | ${nodes} | AND
+| ... | Setup DUT nodes for 'SFF' functional testing
+| Test Setup | Run Keywords | Save VPP PIDs | AND
+| ... | Reset VAT History On All DUTs | ${nodes} | AND
+| ... | Clear interface counters on all vpp nodes in topology | ${nodes}
+| Test Teardown | Run Keywords
+| ... | Show packet trace on all DUTs | ${nodes} | AND
+| ... | Show VAT History On All DUTs | ${nodes} | AND
+| ... | Verify VPP PID in Teardown
+| Documentation | *NSH SFC SFF test cases*
+| ...
+| ... | Test the SFC Service Function Forward functional. DUT run the VPP
+| ... | with NSH SFC Plugin, TG send a VxLAN-GPE+NSH packet to the DUT,
+| ... | if the packet match the SFC SFF rules, the SFC SFF will
+| ... | swap the VxLAN-GPE and NSH protocol.
+| ... | DUT will loopback the packet to the TG.
+| ... | The TG will capture this VxLAN-GPE+NSH packet and check the packet
+| ... | field is correct.
+
+*** Test Cases ***
+| TC01: NSH SFC SFF functional test with 152B frame size
+| | [Documentation]
+| | ... | Make TG send 152 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\
+| | ... | Make TG verify SFC SFF functional is correct.
+| | ${frame_size}= | Set Variable | ${152}
+| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "SFF" test
+
+| TC02: NSH SFC SFF functional test with 256B frame size
+| | [Documentation]
+| | ... | Make TG send 256 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\
+| | ... | Make TG verify SFC SFF functional is correct.
+| | ${frame_size}= | Set Variable | ${256}
+| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "SFF" test
+
+| TC03: NSH SFC SFF functional test with 512B frame size
+| | [Documentation]
+| | ... | Make TG send 512 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\
+| | ... | Make TG verify SFC SFF functional is correct.
+| | ${frame_size}= | Set Variable | ${512}
+| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "SFF" test
+
+| TC04: NSH SFC SFF functional test with 1024B frame size
+| | [Documentation]
+| | ... | Make TG send 1024 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\
+| | ... | Make TG verify SFC SFF functional is correct.
+| | ${frame_size}= | Set Variable | ${1024}
+| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "SFF" test
+
+| TC05: NSH SFC SFF functional test with 1280B frame size
+| | [Documentation]
+| | ... | Make TG send 1280 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\
+| | ... | Make TG verify SFC SFF functional is correct.
+| | ${frame_size}= | Set Variable | ${1280}
+| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "SFF" test
+
+| TC06: NSH SFC SFF functional test with 1518B frame size
+| | [Documentation]
+| | ... | Make TG send 1518 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\
+| | ... | Make TG verify SFC SFF functional is correct.
+| | ${frame_size}= | Set Variable | ${1518}
+| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "SFF" test
diff --git a/tests/nsh_sfc/sfc_scripts/install_sfc.sh b/tests/nsh_sfc/sfc_scripts/install_sfc.sh
new file mode 100755
index 0000000000..265d4c153a
--- /dev/null
+++ b/tests/nsh_sfc/sfc_scripts/install_sfc.sh
@@ -0,0 +1,114 @@
+#!/bin/bash
+
+set -x
+
+ROOTDIR=/tmp/openvpp-testing
+PWDDIR=$(pwd)
+
+if_name1=$1
+if_name2=$2
+
+VPP_VERSION=`cat ${ROOTDIR}/NSH_SFC_VER | grep VPP | awk -F'= ' '{print $2}'`
+NSH_SFC_VERSION=`cat ${ROOTDIR}/NSH_SFC_VER | grep NSH_SFC | awk -F'= ' '{print $2}'`
+
+VPP_CODE_DIR=${ROOTDIR}/vpp_codes
+NSH_SFC_CODE_DIR=${ROOTDIR}/nsh_sfc_codes
+
+#at first, we need to stop the vpp service if have
+sudo service vpp stop
+
+#uninstall the vpp and nsh sfc plugin
+#and git clone the vpp and nsh sfc plugin source codes
+#then compile and install them in the dut nodes.
+nsh_need_install=0
+sudo dpkg -l vpp-nsh-plugin >/dev/null 2>&1
+if [ $? -eq 0 ]; then
+ nsh_plugin_version=`dpkg -s vpp-nsh-plugin | grep Version | awk -F' ' '{print $2}'`
+ if [ "${nsh_plugin_version}" \< "${NSH_SFC_VERSION}" ]; then
+ sudo dpkg -P vpp-nsh-plugin vpp-nsh-plugin-dbg vpp-nsh-plugin-dev >/dev/null 2>&1
+ test $? -eq 0 || exit 1
+ nsh_need_install=1
+ fi
+else
+ nsh_need_install=1
+fi
+
+vpp_need_install=0
+sudo dpkg -l vpp >/dev/null 2>&1
+if [ $? -eq 0 ]; then
+ vpp_version=`dpkg -s vpp | grep Version | awk -F' ' '{print $2}'`
+ if [ "${vpp_version}" \< "${VPP_VERSION}" ]; then
+ sudo dpkg -P vpp vpp-dbg vpp-dev vpp-dpdk-dev vpp-dpdk-dkms vpp-lib \
+ vpp-plugins vpp-python-api >/dev/null 2>&1
+ test $? -eq 0 || exit 1
+ vpp_need_install=1
+ fi
+else
+ vpp_need_install=1
+fi
+
+sleep 5
+
+##begin to clone the vpp source code
+if [ ${vpp_need_install} -eq 1 ]; then
+ sudo rm -rf ${VPP_CODE_DIR}
+ sudo mkdir -p ${VPP_CODE_DIR}
+ cd ${VPP_CODE_DIR}
+ git clone -b v${VPP_VERSION} https://gerrit.fd.io/r/vpp
+
+ #compile the vpp code
+ cd ./vpp/build-root/
+ make distclean
+ ./bootstrap.sh
+ make V=0 PLATFORM=vpp TAG=vpp install-deb
+
+ #after that, install vpp
+ sudo dpkg -i *.deb
+ cd ${PWDDIR}
+fi
+
+##begin to clone the nsh sfc source code
+if [ ${nsh_need_install} -eq 1 ]; then
+ sudo rm -rf ${NSH_SFC_CODE_DIR}
+ sudo mkdir -p ${NSH_SFC_CODE_DIR}
+ cd ${NSH_SFC_CODE_DIR}
+ git clone -b v${NSH_SFC_VERSION} https://gerrit.fd.io/r/nsh_sfc
+
+ #compile the nsh sfc code
+ cd ./nsh_sfc/nsh-plugin/
+ sudo rm -rf build
+ sudo ./build.sh
+
+ #after that, install the nsh sfc plugin
+ cd ./packaging/
+ sudo dpkg -i *.deb
+ cd ${PWDDIR}
+fi
+
+#check and setup the hugepages
+SYS_HUGEPAGE=$(cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages)
+if [ ${SYS_HUGEPAGE} -lt 1024 ]; then
+ MOUNT=$(mount | grep /mnt/huge)
+ while [ "${MOUNT}" != "" ]
+ do
+ sudo umount /mnt/huge
+ sleep 1
+ MOUNT=$(mount | grep /mnt/huge)
+ done
+
+ echo 2048 | sudo tee /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
+ echo 2048 | sudo tee /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
+
+ sudo mkdir -p /mnt/huge
+ sudo mount -t hugetlbfs nodev /mnt/huge/
+ test $? -eq 0 || exit 1
+fi
+
+#check and set the max map count
+SYS_MAP=$(cat /proc/sys/vm/max_map_count)
+if [ ${SYS_MAP} -lt 200000 ]; then
+ echo 200000 | sudo tee /proc/sys/vm/max_map_count
+fi
+
+#after all, we can start the vpp service now
+sudo service vpp start
diff --git a/tests/nsh_sfc/sfc_scripts/set_nsh_proxy_inbound.sh b/tests/nsh_sfc/sfc_scripts/set_nsh_proxy_inbound.sh
new file mode 100755
index 0000000000..453de3f8de
--- /dev/null
+++ b/tests/nsh_sfc/sfc_scripts/set_nsh_proxy_inbound.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+set -x
+
+sudo service vpp restart
+sleep 5
+
+sudo vppctl set int state $1 up
+sleep 10
+sudo vppctl set int ip table $1 0
+sudo vppctl set int ip address $1 192.168.50.76/24
+
+sudo vppctl create vxlan-gpe tunnel local 192.168.50.76 remote 192.168.50.72 vni 9 next-nsh encap-vrf-id 0 decap-vrf-id 0
+sudo vppctl set int l2 bridge vxlan_gpe_tunnel0 1 1
+
+sudo vppctl create vxlan tunnel src 192.168.50.76 dst 192.168.50.71 vni 1 encap-vrf-id 0 decap-next node nsh-proxy
+sudo vppctl set int l2 bridge vxlan_tunnel0 1 1
+
+sudo vppctl create nsh entry nsp 185 nsi 255 md-type 1 c1 3232248395 c2 9 c3 3232248392 c4 50336437 next-ethernet
+sudo vppctl create nsh entry nsp 185 nsi 254 md-type 1 c1 3232248395 c2 9 c3 3232248392 c4 50336437 next-ethernet
+
+sleep 2
+vxlan_gpe_index=`sudo vppctl sh int | grep "vxlan_gpe_tunnel0" | awk '{print $2}'`
+vxlan_index=`sudo vppctl sh int | grep "vxlan_tunnel0" | awk '{print $2}'`
+sudo vppctl create nsh map nsp 185 nsi 255 mapped-nsp 185 mapped-nsi 255 nsh_action pop encap-vxlan4-intf ${vxlan_index}
+sudo vppctl create nsh map nsp 185 nsi 254 mapped-nsp 185 mapped-nsi 254 nsh_action push encap-vxlan-gpe-intf ${vxlan_gpe_index}
+
+sudo vppctl ip route add 192.168.50.72/24 via 192.168.50.76
+sudo vppctl set ip arp $1 192.168.50.71 $2
+sudo vppctl set ip arp $1 192.168.50.72 $2
+
+sudo vppctl trace add dpdk-input 100
diff --git a/tests/nsh_sfc/sfc_scripts/set_nsh_proxy_outbound.sh b/tests/nsh_sfc/sfc_scripts/set_nsh_proxy_outbound.sh
new file mode 100755
index 0000000000..304ed30cda
--- /dev/null
+++ b/tests/nsh_sfc/sfc_scripts/set_nsh_proxy_outbound.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+set -x
+
+sudo service vpp restart
+sleep 5
+
+sudo vppctl set int state $1 up
+sleep 10
+sudo vppctl set int ip table $1 0
+sudo vppctl set int ip address $1 192.168.50.76/24
+
+sudo vppctl create vxlan-gpe tunnel local 192.168.50.76 remote 192.168.50.71 vni 9 next-nsh encap-vrf-id 0 decap-vrf-id 0
+sudo vppctl set int l2 bridge vxlan_gpe_tunnel0 1 1
+
+sudo vppctl create vxlan tunnel src 192.168.50.76 dst 192.168.50.72 vni 1 encap-vrf-id 0 decap-next node nsh-proxy
+sudo vppctl set int l2 bridge vxlan_tunnel0 1 1
+
+sudo vppctl create nsh entry nsp 185 nsi 255 md-type 1 c1 3232248395 c2 9 c3 3232248392 c4 50336437 next-ethernet
+sudo vppctl create nsh entry nsp 185 nsi 254 md-type 1 c1 3232248395 c2 9 c3 3232248392 c4 50336437 next-ethernet
+
+sleep 2
+vxlan_gpe_index=`sudo vppctl sh int | grep "vxlan_gpe_tunnel0" | awk '{print $2}'`
+vxlan_index=`sudo vppctl sh int | grep "vxlan_tunnel0" | awk '{print $2}'`
+sudo vppctl create nsh map nsp 185 nsi 255 mapped-nsp 185 mapped-nsi 255 nsh_action pop encap-vxlan4-intf ${vxlan_index}
+sudo vppctl create nsh map nsp 185 nsi 254 mapped-nsp 185 mapped-nsi 254 nsh_action push encap-vxlan-gpe-intf ${vxlan_gpe_index}
+
+sudo vppctl ip route add 192.168.50.72/24 via 192.168.50.76
+sudo vppctl set ip arp $1 192.168.50.71 $2
+sudo vppctl set ip arp $1 192.168.50.72 $2
+
+sudo vppctl trace add dpdk-input 100
diff --git a/tests/nsh_sfc/sfc_scripts/set_sfc_sff.sh b/tests/nsh_sfc/sfc_scripts/set_sfc_sff.sh
new file mode 100755
index 0000000000..03e2f0ade7
--- /dev/null
+++ b/tests/nsh_sfc/sfc_scripts/set_sfc_sff.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+set -x
+
+sudo service vpp restart
+sleep 5
+
+sudo vppctl set int state $1 up
+sleep 10
+sudo vppctl set int ip table $1 7
+sudo vppctl set int ip address $1 192.168.50.76/24
+
+sudo vppctl create vxlan-gpe tunnel local 192.168.50.76 remote 192.168.50.71 vni 9 next-nsh encap-vrf-id 7 decap-vrf-id 7
+sudo vppctl set int l2 bridge vxlan_gpe_tunnel0 1 1
+
+sudo vppctl create vxlan-gpe tunnel local 192.168.50.76 remote 192.168.50.72 vni 10 next-nsh encap-vrf-id 7 decap-vrf-id 7
+sudo vppctl set int l2 bridge vxlan_gpe_tunnel1 1 1
+
+sudo vppctl create nsh entry nsp 185 nsi 255 md-type 1 c1 3232248395 c2 9 c3 3232248392 c4 50336437 next-ethernet
+sudo vppctl create nsh entry nsp 185 nsi 254 md-type 1 c1 3232248395 c2 9 c3 3232248392 c4 50336437 next-ethernet
+
+sleep 2
+vxlan_gpe_index0=`sudo vppctl sh int | grep "vxlan_gpe_tunnel0" | awk '{print $2}'`
+vxlan_gpe_index1=`sudo vppctl sh int | grep "vxlan_gpe_tunnel1" | awk '{print $2}'`
+sudo vppctl create nsh map nsp 185 nsi 255 mapped-nsp 185 mapped-nsi 254 nsh_action swap encap-vxlan-gpe-intf ${vxlan_gpe_index0}
+
+sudo vppctl ip route add 192.168.50.71/32 via 192.168.50.76 $1
+sudo vppctl ip route add 192.168.50.72/32 via 192.168.50.76 $1
+sudo vppctl set ip arp fib-id 7 $1 192.168.50.71 $2
+sudo vppctl set ip arp fib-id 7 $1 192.168.50.72 $2
+
+sudo vppctl trace add dpdk-input 100
diff --git a/tests/nsh_sfc/sfc_scripts/start_tcpdump.sh b/tests/nsh_sfc/sfc_scripts/start_tcpdump.sh
new file mode 100755
index 0000000000..46f8217e26
--- /dev/null
+++ b/tests/nsh_sfc/sfc_scripts/start_tcpdump.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+ROOTDIR=/tmp/openvpp-testing
+PWDDIR=$(pwd)
+
+cd ${ROOTDIR}/nsh_sfc_tests/sfc_scripts/
+sudo rm -f temp_packet.pcap
+
+sudo /usr/sbin/tcpdump -i $1 -c 1 -w temp_packet.pcap dst host $2 &
+
+if [ ! $? -eq 0 ]; then
+ echo "Start the tcpdump failed!!!"
+ exit 1
+fi
+
+cd ${PWDDIR}
diff --git a/tests/tldk/func/__init__.robot b/tests/tldk/func/__init__.robot
new file mode 100644
index 0000000000..3b71353945
--- /dev/null
+++ b/tests/tldk/func/__init__.robot
@@ -0,0 +1,18 @@
+# Copyright (c) 2017 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Library | resources.libraries.python.TLDK.SetupTLDKTest
+| Suite Setup | Setup TLDK Test | ${nodes}
diff --git a/tests/tldk/func/ipv4/ipv4_assemble.robot b/tests/tldk/func/ipv4/ipv4_assemble.robot
new file mode 100644
index 0000000000..88f43823c8
--- /dev/null
+++ b/tests/tldk/func/ipv4/ipv4_assemble.robot
@@ -0,0 +1,46 @@
+# Copyright (c) 2017 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Library | resources.libraries.python.NodePath
+| Library | resources.libraries.python.Trace
+| Library | resources.libraries.python.TrafficScriptExecutor
+| Library | resources.libraries.python.TLDK.UdpTest
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/counters.robot
+| Resource | resources/libraries/robot/tldk/tldk_utils.robot
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST | TLDK
+| Documentation | *TLDK IPv4 assemble test suite.*
+| ...
+| ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG with single link
+| ... | between nodes. From this topology only TG and DUT1 nodes are used.
+| ... | In VM environment, the DUT2 is not configured since the DUT1 is testing
+| ... | with the pcap file that generated with the pcap_gen.py. There is no
+| ... | packet going out to DUT2, udpfwd app is verified on DUT1 only.
+| ... | This test case just use the pcap file for the UDP functional test.
+
+*** Variables ***
+| ${tc01_file_prefix}= | test_ipv4_assemble
+
+*** Test Cases ***
+| TC01: TLDK IPv4 assemble test case
+| | Given Path for 2-node testing is set | ${nodes['TG']} | ${nodes['DUT1']}
+| | And Pick out the port used to execute test
+| | And Get the pcap data | ${tc01_file_prefix}
+| | When Exec the udpfwd test | ${dut_node} | ${dut_port}
+| | ... | ${tc01_file_prefix} | ${dest_ip} | ${is_ipv4}
+| | ${pkt_count}= | Get the test result | ${dut_node}
+| | ... | ${tc01_file_prefix}
+| | ${result}= | Convert To Integer | ${pkt_count}
+| | Then Should Be Equal As Integers | ${result} | 1
diff --git a/tests/tldk/func/ipv4/ipv4_checksum.robot b/tests/tldk/func/ipv4/ipv4_checksum.robot
new file mode 100644
index 0000000000..d0710616fc
--- /dev/null
+++ b/tests/tldk/func/ipv4/ipv4_checksum.robot
@@ -0,0 +1,43 @@
+# Copyright (c) 2017 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Library | resources.libraries.python.NodePath
+| Library | resources.libraries.python.Trace
+| Library | resources.libraries.python.TrafficScriptExecutor
+| Library | resources.libraries.python.TLDK.UdpTest
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/counters.robot
+| Resource | resources/libraries/robot/tldk/tldk_utils.robot
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST | TLDK
+| Documentation | *TLDK IPv4 checksum test suite.*
+| ...
+| ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG with single link
+| ... | between nodes. From this topology only TG and DUT1 nodes are used.
+| ... | This test case just use the pcap file for the UDP functional test.
+
+*** Variables ***
+| ${tc01_file_prefix}= | test_ipv4_checksum
+
+*** Test Cases ***
+| TC01: TLDK IPv4 checksum test case
+| | Given Path for 2-node testing is set | ${nodes['TG']} | ${nodes['DUT1']}
+| | And Pick out the port used to execute test
+| | And Get the pcap data | ${tc01_file_prefix}
+| | When Exec the udpfwd test | ${dut_node} | ${dut_port}
+| | ... | ${tc01_file_prefix} | ${dest_ip} | ${is_ipv4}
+| | ${checksum}= | Get the test result | ${dut_node}
+| | ... | ${tc01_file_prefix}
+| | ${result}= | Convert To Integer | ${checksum}
+| | Then Should Be Equal As Integers | ${result} | ${packet_num}
diff --git a/tests/tldk/func/ipv4/ipv4_fragment.robot b/tests/tldk/func/ipv4/ipv4_fragment.robot
new file mode 100644
index 0000000000..e3c2475c6d
--- /dev/null
+++ b/tests/tldk/func/ipv4/ipv4_fragment.robot
@@ -0,0 +1,43 @@
+# Copyright (c) 2017 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Library | resources.libraries.python.NodePath
+| Library | resources.libraries.python.Trace
+| Library | resources.libraries.python.TrafficScriptExecutor
+| Library | resources.libraries.python.TLDK.UdpTest
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/counters.robot
+| Resource | resources/libraries/robot/tldk/tldk_utils.robot
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST | TLDK
+| Documentation | *TLDK IPv4 fragment test suite.*
+| ...
+| ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG with single link
+| ... | between nodes. From this topology only TG and DUT1 nodes are used.
+| ... | This test case just use the pcap file for the UDP functional test.
+
+*** Variables ***
+| ${tc01_file_prefix}= | test_ipv4_fragment
+
+*** Test Cases ***
+| TC01: TLDK IPv4 fragment test case
+| | Given Path for 2-node testing is set | ${nodes['TG']} | ${nodes['DUT1']}
+| | And Pick out the port used to execute test
+| | And Get the pcap data | ${tc01_file_prefix}
+| | When Exec the udpfwd test | ${dut_node} | ${dut_port}
+| | ... | ${tc01_file_prefix} | ${dest_ip} | ${is_ipv4}
+| | ${checksum}= | Get the test result | ${dut_node}
+| | ... | ${tc01_file_prefix}
+| | ${result}= | Convert To Integer | ${checksum}
+| | Then Should Be Equal As Integers | ${result} | 990
diff --git a/tests/tldk/func/ipv6/ipv6_checksum.robot b/tests/tldk/func/ipv6/ipv6_checksum.robot
new file mode 100644
index 0000000000..c216f82c40
--- /dev/null
+++ b/tests/tldk/func/ipv6/ipv6_checksum.robot
@@ -0,0 +1,43 @@
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Library | resources.libraries.python.NodePath
+| Library | resources.libraries.python.Trace
+| Library | resources.libraries.python.TrafficScriptExecutor
+| Library | resources.libraries.python.TLDK.UdpTest
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/counters.robot
+| Resource | resources/libraries/robot/tldk/tldk_utils.robot
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST | TLDK
+| Documentation | *TLDK IPv6 checksum test suit.*
+| ...
+| ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG with single link
+| ... | between nodes. From this topology only TG and DUT1 nodes are used.
+| ... | This test case just use the pcap file for the UDP functional test.
+
+*** Variables ***
+| ${tc01_file_prefix}= | test_ipv6_checksum
+
+*** Test Cases ***
+| TC01: TLDK IPv6 checksum test case
+| | Given Path for 2-node testing is set | ${nodes['TG']} | ${nodes['DUT1']}
+| | And Pick out the port used to execute test
+| | And Get the pcap data | ${tc01_file_prefix}
+| | When Exec the udpfwd test | ${dut_node} | ${dut_port}
+| | ... | ${tc01_file_prefix} | ${dest_ip} | ${is_ipv4}
+| | ${pkt_count}= | Get the test result | ${dut_node}
+| | ... | ${tc01_file_prefix}
+| | ${result}= | Convert To Integer | ${pkt_count}
+| | Then Should Be Equal As Integers | ${result} | ${packet_num}
diff --git a/tests/tldk/func/ipv6/ipv6_fragment.robot b/tests/tldk/func/ipv6/ipv6_fragment.robot
new file mode 100644
index 0000000000..b8c345f859
--- /dev/null
+++ b/tests/tldk/func/ipv6/ipv6_fragment.robot
@@ -0,0 +1,43 @@
+# Copyright (c) 2017 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Library | resources.libraries.python.NodePath
+| Library | resources.libraries.python.Trace
+| Library | resources.libraries.python.TrafficScriptExecutor
+| Library | resources.libraries.python.TLDK.UdpTest
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/counters.robot
+| Resource | resources/libraries/robot/tldk/tldk_utils.robot
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST | TLDK
+| Documentation | *TLDK IPv6 fragment test suite.*
+| ...
+| ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG with single link
+| ... | between nodes. From this topology only TG and DUT1 nodes are used.
+| ... | This test case just use the pcap file for the UDP functional test.
+
+*** Variables ***
+| ${tc01_file_prefix}= | test_ipv6_fragment
+
+*** Test Cases ***
+| TC01: TLDK IPv6 fragment test case
+| | Given Path for 2-node testing is set | ${nodes['TG']} | ${nodes['DUT1']}
+| | And Pick out the port used to execute test
+| | And Get the pcap data | ${tc01_file_prefix}
+| | When Exec the udpfwd test | ${dut_node} | ${dut_port}
+| | ... | ${tc01_file_prefix} | ${dest_ip} | ${is_ipv4}
+| | ${pkt_count}= | Get the test result | ${dut_node}
+| | ... | ${tc01_file_prefix}
+| | ${result}= | Convert To Integer | ${pkt_count}
+| | Then Should Be Equal As Integers | ${result} | ${970}
diff --git a/tests/tldk/tldk_scripts/install_tldk.sh b/tests/tldk/tldk_scripts/install_tldk.sh
new file mode 100755
index 0000000000..0cc65f949e
--- /dev/null
+++ b/tests/tldk/tldk_scripts/install_tldk.sh
@@ -0,0 +1,57 @@
+#!/bin/bash
+
+set -x
+
+DPDK_VERSION=16.11.1
+
+ROOTDIR=/tmp/TLDK-testing
+PWDDIR=$(pwd)
+DPDK_DIR=dpdk
+DPDK_PACKAGE=${DPDK_DIR}"-"${DPDK_VERSION}.tar.xz
+
+# compile and install the DPDK
+cd ${ROOTDIR}
+sudo tar xvf ${DPDK_PACKAGE}
+sudo mv dpdk-stable-${DPDK_VERSION} dpdk
+echo $PWD
+echo ${DPDK_PACKAGE}
+cd ./${DPDK_DIR}
+sudo sed -i 's/^CONFIG_RTE_LIBRTE_PMD_PCAP=n/CONFIG_RTE_LIBRTE_PMD_PCAP=y/g' ./config/common_base
+sudo make install T=x86_64-native-linuxapp-gcc
+cd ${PWDDIR}
+
+# compile the TLDK
+export RTE_SDK=${ROOTDIR}/${DPDK_DIR}/
+export RTE_TARGET=x86_64-native-linuxapp-gcc
+cd ${ROOTDIR}/tldk
+make all
+cd ${PWDDIR}
+
+sudo killall -9 l4fwd 2>/dev/null
+
+sleep 5
+
+pid=`pgrep l4fwd`
+if [ "$pid" != "" ]; then
+ echo "terminate the l4fwd failed!"
+ exit 1
+fi
+
+# check and setup the hugepages
+SYS_HUGEPAGE=$(cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages)
+if [ ${SYS_HUGEPAGE} -lt 1024 ]; then
+ MOUNT=$(mount | grep /mnt/huge)
+ while [ "${MOUNT}" != "" ]
+ do
+ sudo umount /mnt/huge
+ sleep 1
+ MOUNT=$(mount | grep /mnt/huge)
+ done
+
+ echo 1024 | sudo tee /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
+ echo 1024 | sudo tee /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
+
+ sudo mkdir -p /mnt/huge
+ sudo mount -t hugetlbfs nodev /mnt/huge/
+ test $? -eq 0 || exit 1
+fi
diff --git a/tests/tldk/tldk_scripts/run_tldk.sh b/tests/tldk/tldk_scripts/run_tldk.sh
new file mode 100755
index 0000000000..0f56f02dfc
--- /dev/null
+++ b/tests/tldk/tldk_scripts/run_tldk.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+set -x
+
+ROOTDIR=/tmp/TLDK-testing
+PWDDIR=$(pwd)
+
+rx_file=$1
+tx_file=$2
+nic_pci=$3
+fe_cfg=$4
+be_cfg=$5
+IPv4_addr=$6
+IPv6_addr=$7
+
+echo $IPv4_addr
+
+#kill the l4fwd
+sudo killall -9 l4fwd 2>/dev/null
+
+sleep 2
+
+pid=`pgrep l4fwd`
+if [ "$pid" != "" ]; then
+ echo "terminate the l4fwd failed!"
+ exit 1
+fi
+
+#mount the hugepages again
+sudo umount /mnt/huge
+sudo mount -t hugetlbfs nodev /mnt/huge/
+test $? -eq 0 || exit 1
+
+sleep 2
+
+#run the l4fwd with tag U
+# need to install libpcap, libpcap-dev to use --vdev
+cd ${ROOTDIR}
+if [ "$IPv6_addr" == "NONE" ]; then
+sudo sh -c "nohup ./tldk/x86_64-native-linuxapp-gcc/app/l4fwd --lcore='0' \
+ -n 2 --vdev 'eth_pcap1,rx_pcap=${rx_file},tx_pcap=${tx_file}' \
+ -b ${nic_pci} -- -P -U -R 0x1000 -S 0x1000 -s 0x20 -f ${fe_cfg} -b ${be_cfg} \
+ port=0,lcore=0,rx_offload=0,tx_offload=0,ipv4=${IPv4_addr} &"
+elif [ "$IPv4_addr" == "NONE" ]; then
+sudo sh -c "nohup ./tldk/x86_64-native-linuxapp-gcc/app/l4fwd --lcore='0' \
+ -n 2 --vdev 'eth_pcap1,rx_pcap=${rx_file},tx_pcap=${tx_file}' \
+ -b ${nic_pci} -- -P -U -R 0x1000 -S 0x1000 -s 0x20 -f ${fe_cfg} -b ${be_cfg} \
+ port=0,lcore=0,rx_offload=0,tx_offload=0,ipv6=${IPv6_addr} &"
+fi
+
+cd ${PWDDIR}
+
+sleep 10
diff --git a/tests/tldk/tldk_testconfig/test_ipv4_assemble_be.cfg b/tests/tldk/tldk_testconfig/test_ipv4_assemble_be.cfg
new file mode 100644
index 0000000000..7f7cb8e8fe
--- /dev/null
+++ b/tests/tldk/tldk_testconfig/test_ipv4_assemble_be.cfg
@@ -0,0 +1 @@
+port=0,masklen=24,addr=192.168.1.56,mac=68:05:ca:27:d1:6a
diff --git a/tests/tldk/tldk_testconfig/test_ipv4_assemble_fe.cfg b/tests/tldk/tldk_testconfig/test_ipv4_assemble_fe.cfg
new file mode 100644
index 0000000000..f3531e0b3a
--- /dev/null
+++ b/tests/tldk/tldk_testconfig/test_ipv4_assemble_fe.cfg
@@ -0,0 +1,2 @@
+#udpfwd config file
+lcore=0,op=echo,laddr=0.0.0.0,lport=0x8000,raddr=0.0.0.0,rport=0
diff --git a/tests/tldk/tldk_testconfig/test_ipv4_checksum_be.cfg b/tests/tldk/tldk_testconfig/test_ipv4_checksum_be.cfg
new file mode 100644
index 0000000000..c4e39e064f
--- /dev/null
+++ b/tests/tldk/tldk_testconfig/test_ipv4_checksum_be.cfg
@@ -0,0 +1,2 @@
+port=0,masklen=24,addr=192.168.1.56,mac=68:05:ca:27:d1:6a
+port=0,addr=2001:4860:b002::56,masklen=64,mac=68:05:ca:27:d1:6a
diff --git a/tests/tldk/tldk_testconfig/test_ipv4_checksum_fe.cfg b/tests/tldk/tldk_testconfig/test_ipv4_checksum_fe.cfg
new file mode 100644
index 0000000000..9553b7085c
--- /dev/null
+++ b/tests/tldk/tldk_testconfig/test_ipv4_checksum_fe.cfg
@@ -0,0 +1,3 @@
+#udpfwd config file
+lcore=0,op=echo,laddr=0.0.0.0,lport=0x8000,raddr=0.0.0.0,rport=0
+lcore=0,op=echo,laddr=::,lport=0x8000,raddr=::,rport=0
diff --git a/tests/tldk/tldk_testconfig/test_ipv4_fragment_be.cfg b/tests/tldk/tldk_testconfig/test_ipv4_fragment_be.cfg
new file mode 100644
index 0000000000..e769994319
--- /dev/null
+++ b/tests/tldk/tldk_testconfig/test_ipv4_fragment_be.cfg
@@ -0,0 +1,2 @@
+port=0,masklen=24,addr=192.168.1.56,mac=68:05:ca:27:d1:6a,mtu=1024
+port=0,addr=2001:4860:b002::56,masklen=64,mac=68:05:ca:27:d1:6a,mtu=1024
diff --git a/tests/tldk/tldk_testconfig/test_ipv4_fragment_fe.cfg b/tests/tldk/tldk_testconfig/test_ipv4_fragment_fe.cfg
new file mode 100644
index 0000000000..9553b7085c
--- /dev/null
+++ b/tests/tldk/tldk_testconfig/test_ipv4_fragment_fe.cfg
@@ -0,0 +1,3 @@
+#udpfwd config file
+lcore=0,op=echo,laddr=0.0.0.0,lport=0x8000,raddr=0.0.0.0,rport=0
+lcore=0,op=echo,laddr=::,lport=0x8000,raddr=::,rport=0
diff --git a/tests/tldk/tldk_testconfig/test_ipv6_checksum_be.cfg b/tests/tldk/tldk_testconfig/test_ipv6_checksum_be.cfg
new file mode 100644
index 0000000000..c4e39e064f
--- /dev/null
+++ b/tests/tldk/tldk_testconfig/test_ipv6_checksum_be.cfg
@@ -0,0 +1,2 @@
+port=0,masklen=24,addr=192.168.1.56,mac=68:05:ca:27:d1:6a
+port=0,addr=2001:4860:b002::56,masklen=64,mac=68:05:ca:27:d1:6a
diff --git a/tests/tldk/tldk_testconfig/test_ipv6_checksum_fe.cfg b/tests/tldk/tldk_testconfig/test_ipv6_checksum_fe.cfg
new file mode 100644
index 0000000000..9553b7085c
--- /dev/null
+++ b/tests/tldk/tldk_testconfig/test_ipv6_checksum_fe.cfg
@@ -0,0 +1,3 @@
+#udpfwd config file
+lcore=0,op=echo,laddr=0.0.0.0,lport=0x8000,raddr=0.0.0.0,rport=0
+lcore=0,op=echo,laddr=::,lport=0x8000,raddr=::,rport=0
diff --git a/tests/tldk/tldk_testconfig/test_ipv6_fragment_be.cfg b/tests/tldk/tldk_testconfig/test_ipv6_fragment_be.cfg
new file mode 100644
index 0000000000..e769994319
--- /dev/null
+++ b/tests/tldk/tldk_testconfig/test_ipv6_fragment_be.cfg
@@ -0,0 +1,2 @@
+port=0,masklen=24,addr=192.168.1.56,mac=68:05:ca:27:d1:6a,mtu=1024
+port=0,addr=2001:4860:b002::56,masklen=64,mac=68:05:ca:27:d1:6a,mtu=1024
diff --git a/tests/tldk/tldk_testconfig/test_ipv6_fragment_fe.cfg b/tests/tldk/tldk_testconfig/test_ipv6_fragment_fe.cfg
new file mode 100644
index 0000000000..9553b7085c
--- /dev/null
+++ b/tests/tldk/tldk_testconfig/test_ipv6_fragment_fe.cfg
@@ -0,0 +1,3 @@
+#udpfwd config file
+lcore=0,op=echo,laddr=0.0.0.0,lport=0x8000,raddr=0.0.0.0,rport=0
+lcore=0,op=echo,laddr=::,lport=0x8000,raddr=::,rport=0
diff --git a/tests/func/__init__.robot b/tests/vpp/func/__init__.robot
index 2016146e3b..0e4c9d6a82 100644
--- a/tests/func/__init__.robot
+++ b/tests/vpp/func/__init__.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
| Library | resources.libraries.python.SetupFramework
| Suite Setup | Run Keywords | Setup Framework | ${nodes}
| ... | AND | Setup All DUTs | ${nodes}
diff --git a/tests/func/ipsec/eth2p-ethip4ipsectnl-ip4base-func.robot b/tests/vpp/func/crypto/eth2p-ethip4ipsectnl-ip4base-func.robot
index c4c0f3c2b7..814d8ee45c 100644
--- a/tests/func/ipsec/eth2p-ethip4ipsectnl-ip4base-func.robot
+++ b/tests/vpp/func/crypto/eth2p-ethip4ipsectnl-ip4base-func.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/ipsec.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO
| ... | VM_ENV | HW_ENV | SKIP_VPP_PATCH
diff --git a/tests/func/ipsec/eth2p-ethip4ipsectpt-ip4base-func.robot b/tests/vpp/func/crypto/eth2p-ethip4ipsectpt-ip4base-func.robot
index 03753496ff..e599cf9506 100644
--- a/tests/func/ipsec/eth2p-ethip4ipsectpt-ip4base-func.robot
+++ b/tests/vpp/func/crypto/eth2p-ethip4ipsectpt-ip4base-func.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/ipsec.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO
| ... | VM_ENV | HW_ENV | SKIP_VPP_PATCH
diff --git a/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip4base-func.robot b/tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip4base-func.robot
index 5f9a37eeca..c77fb69c5c 100644
--- a/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip4base-func.robot
+++ b/tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip4base-func.robot
@@ -20,16 +20,16 @@
| Library | resources.libraries.python.QemuUtils
| Library | resources.libraries.python.VPPUtil
| Library | resources.libraries.python.IPsecUtil
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
| Resource | resources/libraries/robot/vrf.robot
-| Resource | resources/libraries/robot/ipsec.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/lisp/l2lisp.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/overlay/l2lisp.robot
# Import configuration and test data:
| Variables | resources/test_data/lisp/ipv4_ipsec_lispgpe_ipv4/ipv4_ipsec_lispgpe_ipv4.py
| ...
diff --git a/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6base-func.robot b/tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip6base-func.robot
index ac3620f8a7..550c9405cc 100644
--- a/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6base-func.robot
+++ b/tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip6base-func.robot
@@ -25,15 +25,15 @@
| Library | resources.libraries.python.QemuUtils
| Library | resources.libraries.python.VPPUtil
| Library | String
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/ipsec.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip6.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
# Import configuration and test data:
| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv4/ipv6_lispgpe_ipsec_ipv4.py
| ...
diff --git a/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6basevrf-func.robot b/tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip6basevrf-func.robot
index 0c87b3a906..e85ef57d1f 100644
--- a/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6basevrf-func.robot
+++ b/tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip6basevrf-func.robot
@@ -25,15 +25,15 @@
| Library | resources.libraries.python.QemuUtils
| Library | resources.libraries.python.VPPUtil
| Library | String
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/ipsec.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip6.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
# Import configuration and test data:
| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv4/ipv6_lispgpe_ipsec_ipv4.py
| ...
diff --git a/tests/func/ipsec/eth2p-ethip6ipsectnl-ip6base-func.robot b/tests/vpp/func/crypto/eth2p-ethip6ipsectnl-ip6base-func.robot
index 03ecb344e5..26d109a0b7 100644
--- a/tests/func/ipsec/eth2p-ethip6ipsectnl-ip6base-func.robot
+++ b/tests/vpp/func/crypto/eth2p-ethip6ipsectnl-ip6base-func.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/ipsec.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO
| ... | VM_ENV | HW_ENV | SKIP_VPP_PATCH
diff --git a/tests/func/ipsec/eth2p-ethip6ipsectpt-ip6base-func.robot b/tests/vpp/func/crypto/eth2p-ethip6ipsectpt-ip6base-func.robot
index 9c5ab83d40..e36630b681 100644
--- a/tests/func/ipsec/eth2p-ethip6ipsectpt-ip6base-func.robot
+++ b/tests/vpp/func/crypto/eth2p-ethip6ipsectpt-ip6base-func.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/ipsec.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO
| ... | VM_ENV | HW_ENV | SKIP_VPP_PATCH
diff --git a/tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip4base-func.robot b/tests/vpp/func/crypto/eth2p-ethip6ipsectptlispgpe-ip4base-func.robot
index b1f923d36b..f3bc2e28b1 100644
--- a/tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip4base-func.robot
+++ b/tests/vpp/func/crypto/eth2p-ethip6ipsectptlispgpe-ip4base-func.robot
@@ -24,15 +24,15 @@
| Library | resources.libraries.python.VhostUser
| Library | resources.libraries.python.QemuUtils
| Library | String
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/ipsec.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip6.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
# Import configuration and test data:
| Variables | resources/test_data/lisp/ipv4_lispgpe_ipv6/ipv4_lispgpe_ipsec_ipv6.py
| ...
diff --git a/tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip6base-func.robot b/tests/vpp/func/crypto/eth2p-ethip6ipsectptlispgpe-ip6base-func.robot
index 177550f468..ca81b425c8 100644
--- a/tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip6base-func.robot
+++ b/tests/vpp/func/crypto/eth2p-ethip6ipsectptlispgpe-ip6base-func.robot
@@ -25,15 +25,15 @@
| Library | resources.libraries.python.VhostUser
| Library | resources.libraries.python.QemuUtils
| Library | String
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/ipsec.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip6.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
# Import configuration and test data:
| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv6/ipv6_lispgpe_ipsec_ipv6.py
| ...
diff --git a/tests/func/honeycomb/__init__.robot b/tests/vpp/func/honeycomb/__init__.robot
index fff6097d08..b7f0c1d7b9 100644
--- a/tests/func/honeycomb/__init__.robot
+++ b/tests/vpp/func/honeycomb/__init__.robot
@@ -17,7 +17,7 @@
*** Settings ***
| Library | resources/libraries/python/honeycomb/HcPersistence.py
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| ...
| Suite Setup | Run Keywords | Configure all DUTs before test | AND
diff --git a/tests/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot
index f66eef88c4..3f209e3562 100644
--- a/tests/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot
@@ -16,7 +16,7 @@
| ${interface}= | ${node['interfaces']['port1']['name']}
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/access_control_lists.robot
| Variables | resources/test_data/honeycomb/acl.py
diff --git a/tests/func/honeycomb/mgmt-cfg-dhcp-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-dhcp-apihc-apivat-func.robot
index d73334eabd..958b27fd32 100644
--- a/tests/func/honeycomb/mgmt-cfg-dhcp-apihc-apivat-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-dhcp-apihc-apivat-func.robot
@@ -12,9 +12,9 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/dhcp_proxy.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/features/dhcp_proxy.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
| Resource | resources/libraries/robot/honeycomb/dhcp.robot
diff --git a/tests/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot
index 6989d356c7..2ba904449a 100644
--- a/tests/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/netconf.robot
| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot
diff --git a/tests/func/honeycomb/mgmt-cfg-int-subint-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-int-subint-apihc-apivat-func.robot
index 45ffd93af6..a37f538d2d 100644
--- a/tests/func/honeycomb/mgmt-cfg-int-subint-apihc-apivat-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-int-subint-apihc-apivat-func.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/sub_interface.robot
| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot
diff --git a/tests/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot
index 804c067a8a..f0f6e4e6ad 100644
--- a/tests/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot
@@ -16,11 +16,11 @@
| ${interface}= | ${node['interfaces']['port1']['name']}
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv6.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip6.robot
| Variables | resources/test_data/honeycomb/interface_ip.py
| ...
| Force Tags | HC_FUNC
diff --git a/tests/func/honeycomb/mgmt-cfg-inttap-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-inttap-apihc-apivat-func.robot
index f35384c473..cffec5b246 100644
--- a/tests/func/honeycomb/mgmt-cfg-inttap-apihc-apivat-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-inttap-apihc-apivat-func.robot
@@ -22,7 +22,7 @@
| ... | device-instance=${2}
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
| Resource | resources/libraries/robot/honeycomb/tap.robot
diff --git a/tests/func/honeycomb/mgmt-cfg-intvhost-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-intvhost-apihc-apivat-func.robot
index 4a2a763523..c5cbe6ea4a 100644
--- a/tests/func/honeycomb/mgmt-cfg-intvhost-apihc-apivat-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-intvhost-apihc-apivat-func.robot
@@ -23,7 +23,7 @@
| &{vhost_user_wrong}= | socket=/tmp/soc2 | role=wrong
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/vhost_user.robot
| ...
diff --git a/tests/func/honeycomb/mgmt-cfg-l2bd-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-l2bd-apihc-apivat-func.robot
index 6955167cb4..a869e96c11 100644
--- a/tests/func/honeycomb/mgmt-cfg-l2bd-apihc-apivat-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-l2bd-apihc-apivat-func.robot
@@ -24,7 +24,7 @@
| &{if_settings2}= | split_horizon_group=${2} | bvi=${True}
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot
diff --git a/tests/func/honeycomb/mgmt-cfg-l2fib-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-l2fib-apihc-apivat-func.robot
index 2073b9b24b..c243af28f9 100644
--- a/tests/func/honeycomb/mgmt-cfg-l2fib-apihc-apivat-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-l2fib-apihc-apivat-func.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot
diff --git a/tests/func/honeycomb/mgmt-cfg-lisp-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-lisp-apihc-apivat-func.robot
index 83634bf79b..ac5af9ab83 100644
--- a/tests/func/honeycomb/mgmt-cfg-lisp-apihc-apivat-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-lisp-apihc-apivat-func.robot
@@ -22,7 +22,7 @@
| ... | unknown-unicast-flood=${True} | arp-termination=${True}
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/lisp.robot
| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot
diff --git a/tests/func/honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot
index 9270b98156..b5048944f5 100644
--- a/tests/func/honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot
@@ -15,7 +15,7 @@
| ${super_if}= | ${node['interfaces']['port1']['name']}
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/nsh.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/vxlan_gpe.robot
diff --git a/tests/func/honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot
index fb9e49e059..4547c0c4bf 100644
--- a/tests/func/honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot
@@ -15,7 +15,7 @@
| ${super_if}= | ${node['interfaces']['port1']['name']}
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/provider_backbone_bridge.robot
| Variables | resources/test_data/honeycomb/pbb/pbb.py
diff --git a/tests/func/honeycomb/mgmt-cfg-pluginacl-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-pluginacl-apihc-apivat-func.robot
index d9a3933578..a08aecc050 100644
--- a/tests/func/honeycomb/mgmt-cfg-pluginacl-apihc-apivat-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-pluginacl-apihc-apivat-func.robot
@@ -29,13 +29,13 @@
| ${acl_name_reflex}= | acl_reflex
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot
| Resource | resources/libraries/robot/honeycomb/access_control_lists.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/traffic.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
| Library | resources.libraries.python.honeycomb.HcAPIKwACL.ACLKeywords
| Library | resources.libraries.python.Trace
| Library | resources.libraries.python.IPv4Setup
diff --git a/tests/func/honeycomb/mgmt-cfg-policer-apihc-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-policer-apihc-func.robot
index 7afffad4d8..7f61780fb5 100644
--- a/tests/func/honeycomb/mgmt-cfg-policer-apihc-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-policer-apihc-func.robot
@@ -21,12 +21,12 @@
| ${dscp_number}= | ${20}
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
| Resource | resources/libraries/robot/honeycomb/policer.robot
| Resource | resources/libraries/robot/honeycomb/access_control_lists.robot
-| Resource | resources/libraries/robot/testing_path.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
| Library | resources.libraries.python.Trace
| Variables | resources/test_data/honeycomb/policer_variables.py
| ...
diff --git a/tests/func/honeycomb/mgmt-cfg-proxyarp-apihc-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-proxyarp-apihc-func.robot
index 5e162a3e4e..1404633acd 100644
--- a/tests/func/honeycomb/mgmt-cfg-proxyarp-apihc-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-proxyarp-apihc-func.robot
@@ -22,13 +22,13 @@
| ${test_ip}= | 192.168.1.5
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
| Resource | resources/libraries/robot/honeycomb/proxyarp.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/traffic.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
| Library | resources.libraries.python.Trace
| ...
| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node}
diff --git a/tests/func/honeycomb/mgmt-cfg-proxynd6-apihc-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-proxynd6-apihc-func.robot
index 6b69f5b170..4425750add 100644
--- a/tests/func/honeycomb/mgmt-cfg-proxynd6-apihc-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-proxynd6-apihc-func.robot
@@ -25,14 +25,14 @@
| ${prefix_length}= | 64
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
| Resource | resources/libraries/robot/honeycomb/proxyarp.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/dhcp_proxy.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip6.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/features/dhcp_proxy.robot
| Library | resources.libraries.python.Trace
| ...
| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node}
diff --git a/tests/func/honeycomb/mgmt-cfg-routing-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-routing-apihc-apivat-func.robot
index acf203b796..9f2dbc0ae6 100644
--- a/tests/func/honeycomb/mgmt-cfg-routing-apihc-apivat-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-routing-apihc-apivat-func.robot
@@ -14,10 +14,10 @@
*** Settings ***
| Library | resources.libraries.python.honeycomb.Routing.RoutingKeywords
| Library | resources.libraries.python.Trace.Trace
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/ipv6.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/ip/ip6.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
| Resource | resources/libraries/robot/honeycomb/routing.robot
diff --git a/tests/func/honeycomb/mgmt-cfg-slaac-apihc-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-slaac-apihc-func.robot
index b621e17cb1..3b5f365758 100644
--- a/tests/func/honeycomb/mgmt-cfg-slaac-apihc-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-slaac-apihc-func.robot
@@ -16,12 +16,12 @@
| ${interface}= | ${node['interfaces']['port1']['name']}
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
| Resource | resources/libraries/robot/honeycomb/slaac.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/traffic.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
| ...
| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node}
| ...
diff --git a/tests/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot
index c281d95819..2ce02c6aa1 100644
--- a/tests/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot
@@ -15,7 +15,7 @@
| ${interface}= | ${node['interfaces']['port1']['name']}
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/nat.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Variables | resources/test_data/honeycomb/nat.py | ${node} | ${interface}
diff --git a/tests/func/honeycomb/mgmt-cfg-spanrx-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-spanrx-apihc-apivat-func.robot
index a24d355382..2bad2d7507 100644
--- a/tests/func/honeycomb/mgmt-cfg-spanrx-apihc-apivat-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-spanrx-apihc-apivat-func.robot
@@ -12,12 +12,12 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/port_mirroring.robot
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/sub_interface.robot
-| Resource | resources/libraries/robot/testing_path.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
| Resource | resources/libraries/robot/telemetry/span.robot
| Variables | resources/test_data/honeycomb/span.py
| ... | ${node['interfaces']['port1']['name']}
diff --git a/tests/func/honeycomb/mgmt-cfg-vxlan-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-vxlan-apihc-apivat-func.robot
index 74c18109d1..e40f9ff9cd 100644
--- a/tests/func/honeycomb/mgmt-cfg-vxlan-apihc-apivat-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-vxlan-apihc-apivat-func.robot
@@ -26,7 +26,7 @@
| ... | vni=${88} | encap-vrf-id=${0}
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
| Resource | resources/libraries/robot/honeycomb/vxlan.robot
diff --git a/tests/func/honeycomb/mgmt-cfg-vxlangpe-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-vxlangpe-apihc-apivat-func.robot
index 9f1cd86548..680baf1130 100644
--- a/tests/func/honeycomb/mgmt-cfg-vxlangpe-apihc-apivat-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-cfg-vxlangpe-apihc-apivat-func.robot
@@ -32,7 +32,7 @@
| ... | decap-vrf-id=${0}
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
| Resource | resources/libraries/robot/honeycomb/vxlan_gpe.robot
diff --git a/tests/func/honeycomb/mgmt-notif-apihcnc-func.robot b/tests/vpp/func/honeycomb/mgmt-notif-apihcnc-func.robot
index b943d78ad7..5320a7fcb7 100644
--- a/tests/func/honeycomb/mgmt-notif-apihcnc-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-notif-apihcnc-func.robot
@@ -19,7 +19,7 @@
| ... | device-instance=${1}
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
| Resource | resources/libraries/robot/honeycomb/tap.robot
diff --git a/tests/func/honeycomb/mgmt-statepersist-apihc-func.robot b/tests/vpp/func/honeycomb/mgmt-statepersist-apihc-func.robot
index 4277c91a4e..1d3ce02e05 100644
--- a/tests/func/honeycomb/mgmt-statepersist-apihc-func.robot
+++ b/tests/vpp/func/honeycomb/mgmt-statepersist-apihc-func.robot
@@ -16,7 +16,7 @@
| ${interface}= | ${node['interfaces']['port1']['name']}
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/honeycomb/persistence.robot
| Resource | resources/libraries/robot/honeycomb/interfaces.robot
| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot
diff --git a/tests/func/tap/api-crud-tap-func.robot b/tests/vpp/func/interfaces/api-crud-tap-func.robot
index c1a830937c..8116f9d60d 100644
--- a/tests/func/tap/api-crud-tap-func.robot
+++ b/tests/vpp/func/interfaces/api-crud-tap-func.robot
@@ -12,13 +12,13 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/traffic.robot
+| 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
diff --git a/tests/func/tap/eth2p-eth-l2bdbasemaclrn-eth-2tap-func.robot b/tests/vpp/func/interfaces/eth2p-eth-l2bdbasemaclrn-eth-2tap-func.robot
index 984b6e42ef..3b69f05698 100644
--- a/tests/func/tap/eth2p-eth-l2bdbasemaclrn-eth-2tap-func.robot
+++ b/tests/vpp/func/interfaces/eth2p-eth-l2bdbasemaclrn-eth-2tap-func.robot
@@ -12,13 +12,13 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/traffic.robot
+| 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
diff --git a/tests/func/tap/eth2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func.robot b/tests/vpp/func/interfaces/eth2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func.robot
index 8cfd10ac25..515596b147 100644
--- a/tests/func/tap/eth2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func.robot
+++ b/tests/vpp/func/interfaces/eth2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func.robot
@@ -12,13 +12,13 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/traffic.robot
+| 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
diff --git a/tests/func/tap/eth2p-ethip4-ip4base-eth-1tap-func.robot b/tests/vpp/func/interfaces/eth2p-ethip4-ip4base-eth-1tap-func.robot
index 9500debfbc..a870b89d1d 100644
--- a/tests/func/tap/eth2p-ethip4-ip4base-eth-1tap-func.robot
+++ b/tests/vpp/func/interfaces/eth2p-ethip4-ip4base-eth-1tap-func.robot
@@ -12,13 +12,13 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/traffic.robot
+| 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
diff --git a/tests/func/vlan/eth2p-dot1q-ip4base-func.robot b/tests/vpp/func/ip4/eth2p-dot1q-ip4base-func.robot
index 19247b00ce..f206fe3d64 100644
--- a/tests/func/vlan/eth2p-dot1q-ip4base-func.robot
+++ b/tests/vpp/func/ip4/eth2p-dot1q-ip4base-func.robot
@@ -12,11 +12,11 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/tagging.robot
-| Resource | resources/libraries/robot/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/l2/tagging.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
| Library | resources.libraries.python.Trace
| Library | resources.libraries.python.IPv6Util
| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | VM_ENV | HW_ENV | VPP_VM_ENV
diff --git a/tests/func/cop/eth2p-ethip4-ip4base-copblklistbase-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-copblklistbase-func.robot
index 3230dabfae..9ff3d2df75 100644
--- a/tests/func/cop/eth2p-ethip4-ip4base-copblklistbase-func.robot
+++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-copblklistbase-func.robot
@@ -14,12 +14,12 @@
*** Settings ***
| Library | resources.libraries.python.Trace
| Library | resources.libraries.python.Cop
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/l2_xconnect.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/l2/l2_xconnect.robot
| Variables | resources/libraries/python/IPv4NodeAddress.py | ${nodes}
| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO
| Test Setup | Set up functional test
diff --git a/tests/func/cop/eth2p-ethip4-ip4base-copwhlistbase-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-copwhlistbase-func.robot
index c46a8c9c27..775cbae579 100644
--- a/tests/func/cop/eth2p-ethip4-ip4base-copwhlistbase-func.robot
+++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-copwhlistbase-func.robot
@@ -14,12 +14,12 @@
*** Settings ***
| Library | resources.libraries.python.Trace
| Library | resources.libraries.python.Cop
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/l2_xconnect.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/l2/l2_xconnect.robot
| Variables | resources/libraries/python/IPv4NodeAddress.py | ${nodes}
| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO
| Test Setup | Set up functional test
diff --git a/tests/func/ipv4/eth2p-ethip4-ip4base-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-func.robot
index eadcdee43d..a8fb58d754 100644
--- a/tests/func/ipv4/eth2p-ethip4-ip4base-func.robot
+++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-func.robot
@@ -14,9 +14,9 @@
*** Settings ***
| Library | resources.libraries.python.NodePath
| Library | resources.libraries.python.Trace
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/ipv4.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | SKIP_VPP_PATCH
| Suite Setup | Run Keywords
| ... | Configure all DUTs before test | AND
diff --git a/tests/func/iacl/eth2p-ethip4-ip4base-iaclbase-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-iaclbase-func.robot
index 04bfb1602b..5afa75b55e 100644
--- a/tests/func/iacl/eth2p-ethip4-ip4base-iaclbase-func.robot
+++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-iaclbase-func.robot
@@ -12,14 +12,14 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/counters.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/l2_xconnect.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
-| Resource | resources/libraries/robot/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/counters.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/l2/l2_xconnect.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
| Library | resources.libraries.python.Classify.Classify
| Library | resources.libraries.python.Trace
| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO | SKIP_VPP_PATCH
diff --git a/tests/func/ipv4/eth2p-ethip4-ip4base-ip4arp-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4arp-func.robot
index f6b551e7a3..8d93aec58a 100644
--- a/tests/func/ipv4/eth2p-ethip4-ip4base-ip4arp-func.robot
+++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4arp-func.robot
@@ -12,13 +12,13 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/counters.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/l2_xconnect.robot
-| Resource | resources/libraries/robot/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/counters.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/l2/l2_xconnect.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
| Library | resources.libraries.python.Trace
| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO
| Test Setup | Set up functional test
diff --git a/tests/func/dhcp/eth2p-ethip4-ip4base-ip4dhcpclient-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4dhcpclient-func.robot
index cf7b40bef7..5960e83797 100644
--- a/tests/func/dhcp/eth2p-ethip4-ip4base-ip4dhcpclient-func.robot
+++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4dhcpclient-func.robot
@@ -12,10 +12,10 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/dhcp_client.robot
-| Resource | resources/libraries/robot/ipv4.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/features/dhcp_client.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
| Library | resources.libraries.python.Trace
| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO
| Test Setup | Set up functional test
diff --git a/tests/func/dhcp/eth2p-ethip4-ip4base-ip4dhcpproxy-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4dhcpproxy-func.robot
index 3e89c63f73..9df4174ba9 100644
--- a/tests/func/dhcp/eth2p-ethip4-ip4base-ip4dhcpproxy-func.robot
+++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4dhcpproxy-func.robot
@@ -12,10 +12,10 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/dhcp_proxy.robot
-| Resource | resources/libraries/robot/ipv4.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/features/dhcp_proxy.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
| Library | resources.libraries.python.Trace
| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO | SKIP_VPP_PATCH
| Test Setup | Set up functional test
diff --git a/tests/func/ipv4/eth2p-ethip4-ip4base-ip4ecmp-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4ecmp-func.robot
index 8c707fc18d..67640443c7 100644
--- a/tests/func/ipv4/eth2p-ethip4-ip4base-ip4ecmp-func.robot
+++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4ecmp-func.robot
@@ -13,12 +13,12 @@
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/counters.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/counters.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
| Library | resources.libraries.python.Trace
| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO
| Test Setup | Set up functional test
diff --git a/tests/func/ipv4/eth2p-ethip4-ip4base-ip4proxyarp-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4proxyarp-func.robot
index afe4581b16..8097526ccf 100644
--- a/tests/func/ipv4/eth2p-ethip4-ip4base-ip4proxyarp-func.robot
+++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4proxyarp-func.robot
@@ -12,11 +12,11 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
| Library | resources.libraries.python.Trace
| Library | resources.libraries.python.ProxyArp
| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO
diff --git a/tests/func/policer/eth2p-ethip4-ip4base-ipolicemarkbase-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ipolicemarkbase-func.robot
index 9992bb76a3..60e480c287 100644
--- a/tests/func/policer/eth2p-ethip4-ip4base-ipolicemarkbase-func.robot
+++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ipolicemarkbase-func.robot
@@ -13,7 +13,7 @@
*** Settings ***
| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | VM_ENV | HW_ENV
-| Resource | resources/libraries/robot/policer.robot
+| Resource | resources/libraries/robot/features/policer.robot
| Library | resources.libraries.python.Trace
| Test Setup | Run Keywords | Set up functional test
| ... | AND | Configure topology for IPv4 policer test
diff --git a/tests/func/rpf/eth2p-ethip4-ip4base-rpf-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-rpf-func.robot
index 5a704e83a0..71246c2c57 100644
--- a/tests/func/rpf/eth2p-ethip4-ip4base-rpf-func.robot
+++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-rpf-func.robot
@@ -12,13 +12,13 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/counters.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/l2_xconnect.robot
-| Resource | resources/libraries/robot/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/counters.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/l2/l2_xconnect.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
| Library | resources.libraries.python.Trace
| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO
| Test Setup | Set up functional test
diff --git a/tests/func/vrf/eth2p-ethip4-ip4basevrf-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4basevrf-func.robot
index 841077203b..b520d4df6c 100644
--- a/tests/func/vrf/eth2p-ethip4-ip4basevrf-func.robot
+++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4basevrf-func.robot
@@ -12,13 +12,13 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
+| 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/shared/testing_path.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
| Library | resources.libraries.python.Trace
| Library | resources.libraries.python.IPUtil
| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO | SKIP_VPP_PATCH
diff --git a/tests/func/gre/eth2p-ethip4gre-ip4base-func.robot b/tests/vpp/func/ip4_tunnels/gre/eth2p-ethip4gre-ip4base-func.robot
index 3959e0954f..a4e7dbbbb0 100644
--- a/tests/func/gre/eth2p-ethip4gre-ip4base-func.robot
+++ b/tests/vpp/func/ip4_tunnels/gre/eth2p-ethip4gre-ip4base-func.robot
@@ -12,11 +12,11 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/gre.robot
-| Resource | resources/libraries/robot/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/overlay/gre.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
| Library | resources.libraries.python.IPUtil
| Library | resources.libraries.python.Trace
| Force Tags | VM_ENV | HW_ENV | 3_NODE_DOUBLE_LINK_TOPO | SKIP_VPP_PATCH
diff --git a/tests/func/lisp/api-crud-lisp-func.robot b/tests/vpp/func/ip4_tunnels/lisp/api-crud-lisp-func.robot
index da97272913..118d657515 100644
--- a/tests/func/lisp/api-crud-lisp-func.robot
+++ b/tests/vpp/func/ip4_tunnels/lisp/api-crud-lisp-func.robot
@@ -16,9 +16,9 @@
| Library | resources.libraries.python.NodePath
| Library | resources.libraries.python.Trace
| Library | resources.libraries.python.LispUtil
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/lisp/lisp_api.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/overlay/lisp_api.robot
# import additional Lisp settings from resource file
| Variables | resources/test_data/lisp/api/lisp_api_resources.py
| ...
diff --git a/tests/func/lisp/eth2p-ethip4lisp-ip4base-func.robot b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lisp-ip4base-func.robot
index b506c9517f..ae9485c3b8 100644
--- a/tests/func/lisp/eth2p-ethip4lisp-ip4base-func.robot
+++ b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lisp-ip4base-func.robot
@@ -12,12 +12,12 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
| Library | resources.libraries.python.IPUtil
| Library | resources.libraries.python.Trace
# import additional Lisp settings from resource file
diff --git a/tests/func/lisp/eth2p-ethip4lisp-l2bdbasemaclrn-func.robot b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lisp-l2bdbasemaclrn-func.robot
index b4c4459e3d..98602fc45f 100644
--- a/tests/func/lisp/eth2p-ethip4lisp-l2bdbasemaclrn-func.robot
+++ b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lisp-l2bdbasemaclrn-func.robot
@@ -18,12 +18,12 @@
| Library | resources.libraries.python.IPUtil
| Library | resources.libraries.python.LispUtil
| Library | resources.libraries.python.L2Util
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/lisp/l2lisp.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/overlay/l2lisp.robot
# Import configuration and test data:
| Variables | resources/test_data/lisp/l2/l2_ipv4.py
| ...
diff --git a/tests/func/lisp/eth2p-ethip4lispgpe-ip4base-func.robot b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip4base-func.robot
index 9c3b7afa31..90a0ae1599 100644
--- a/tests/func/lisp/eth2p-ethip4lispgpe-ip4base-func.robot
+++ b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip4base-func.robot
@@ -19,15 +19,15 @@
| Library | resources.libraries.python.VPPUtil
| Library | resources.libraries.python.InterfaceUtil
| Library | resources.libraries.python.VhostUser
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
| Resource | resources/libraries/robot/vrf.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
# Import configuration and test data:
| Variables | resources/test_data/lisp/ipv4_lispgpe_ipv4/ipv4_lispgpe_ipv4.py
| ...
diff --git a/tests/func/lisp/eth2p-ethip4lispgpe-ip4basevrf-func.robot b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip4basevrf-func.robot
index b4d5c08bb6..f41be5fecc 100644
--- a/tests/func/lisp/eth2p-ethip4lispgpe-ip4basevrf-func.robot
+++ b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip4basevrf-func.robot
@@ -19,15 +19,15 @@
| Library | resources.libraries.python.VPPUtil
| Library | resources.libraries.python.InterfaceUtil
| Library | resources.libraries.python.VhostUser
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
| Resource | resources/libraries/robot/vrf.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
# Import configuration and test data:
| Variables | resources/test_data/lisp/ipv4_lispgpe_ipv4/ipv4_lispgpe_ipv4.py
| ...
diff --git a/tests/func/lisp/eth2p-ethip4lispgpe-ip6base-func.robot b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip6base-func.robot
index 7966d1c57c..7e97aca29e 100644
--- a/tests/func/lisp/eth2p-ethip4lispgpe-ip6base-func.robot
+++ b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip6base-func.robot
@@ -12,15 +12,15 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/qemu.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
| Library | resources.libraries.python.IPUtil
| Library | resources.libraries.python.VhostUser
| Library | resources.libraries.python.Trace
diff --git a/tests/func/lisp/eth2p-ethip4lispgpe-ip6basevrf-func.robot b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip6basevrf-func.robot
index d1db5a8a19..668e870ff0 100644
--- a/tests/func/lisp/eth2p-ethip4lispgpe-ip6basevrf-func.robot
+++ b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip6basevrf-func.robot
@@ -12,15 +12,15 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/qemu.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
| Library | resources.libraries.python.IPUtil
| Library | resources.libraries.python.VhostUser
| Library | resources.libraries.python.Trace
diff --git a/tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swirelw46-func.robot b/tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swirelw46-func.robot
index 3c98d4a67b..378accb922 100644
--- a/tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swirelw46-func.robot
+++ b/tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swirelw46-func.robot
@@ -12,11 +12,11 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/map.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/ip/ip6.robot
+| Resource | resources/libraries/robot/ip/map.robot
| Library | resources.libraries.python.Trace
| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO
| Test Setup | Set up functional test
diff --git a/tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremape-func.robot b/tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremape-func.robot
index c509d5d0cd..95e61db654 100644
--- a/tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremape-func.robot
+++ b/tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremape-func.robot
@@ -13,11 +13,11 @@
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/map.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/ip/ip6.robot
+| Resource | resources/libraries/robot/ip/map.robot
| Library | resources.libraries.python.IPUtil
| Library | resources.libraries.python.Trace
| Variables | resources/test_data/softwire/map_e_domains.py | ${5}
diff --git a/tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremapt-func.robot b/tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremapt-func.robot
index d3550bcac3..89ff28af38 100644
--- a/tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremapt-func.robot
+++ b/tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremapt-func.robot
@@ -13,11 +13,11 @@
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/map.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/ip/ip6.robot
+| Resource | resources/libraries/robot/ip/map.robot
| Library | resources.libraries.python.IPUtil
| Library | resources.libraries.python.Trace
| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO
diff --git a/tests/func/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot b/tests/vpp/func/ip4_tunnels/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot
index 0155b4953d..e4c8c25f0a 100644
--- a/tests/func/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot
+++ b/tests/vpp/func/ip4_tunnels/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot
@@ -12,10 +12,10 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/vxlan.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/overlay/vxlan.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV
| Test Setup | Set up functional test
@@ -53,24 +53,22 @@
| | ... | two of its interfaces, verify all packets are received. [Ref] RFC7348.
| | Given Configure path in 3-node circular topology
| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Set interfaces in 3-node circular topology up
-| | And Create vlan interfaces for VXLAN | ${VLAN}
-| | ... | ${dut1_node} | ${dut1_to_dut2}
-| | ... | ${dut2_node} | ${dut2_to_dut1}
-| | And Configure IP addresses and neighbors on interfaces
-| | ... | ${dut1_node} | ${dut1s_vlan_name} | ${dut1s_vlan_index}
-| | ... | ${dut2_node} | ${dut2s_vlan_name} | ${dut2s_vlan_index}
-| | ${dut1s_vxlan}= | When Create VXLAN interface | ${dut1_node} | ${VNI}
-| | | ... | ${dut1s_ip_address} | ${dut2s_ip_address}
-| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan}
-| | ... | up
-| | And Add interfaces to L2BD | ${dut1_node} | ${BID}
-| | ... | ${dut1_to_tg} | ${dut1s_vxlan}
-| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${VNI}
-| | | ... | ${dut2s_ip_address} | ${dut1s_ip_address}
-| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan}
-| | ... | up
-| | And Add interfaces to L2BD | ${dut2_node} | ${BID}
-| | ... | ${dut2_to_tg} | ${dut2s_vxlan}
+| | And Set interfaces in 3-node circular topology up
+| | And Create vlan interfaces for VXLAN | ${VLAN}
+| | ... | ${dut1_node} | ${dut1_to_dut2}
+| | ... | ${dut2_node} | ${dut2_to_dut1}
+| | And Configure IP addresses and neighbors on interfaces
+| | ... | ${dut1_node} | ${dut1s_vlan_name} | ${dut1s_vlan_index}
+| | ... | ${dut2_node} | ${dut2s_vlan_name} | ${dut2s_vlan_index}
+| | ${dut1s_vxlan}= | When Create VXLAN interface | ${dut1_node} | ${VNI}
+| | | ... | ${dut1s_ip_address} | ${dut2s_ip_address}
+| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan} | up
+| | And Add interfaces to L2BD | ${dut1_node} | ${BID}
+| | ... | ${dut1_to_tg} | ${dut1s_vxlan}
+| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${VNI}
+| | | ... | ${dut2s_ip_address} | ${dut1s_ip_address}
+| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan} | up
+| | And Add interfaces to L2BD | ${dut2_node} | ${BID}
+| | ... | ${dut2_to_tg} | ${dut2s_vxlan}
| | Then Send ICMPv4 bidirectionally and verify received packets
| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2}
diff --git a/tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot b/tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot
index 6db2ee27ff..32014e5985 100644
--- a/tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot
+++ b/tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot
@@ -12,12 +12,12 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/vxlan.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/double_qemu_setup.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/overlay/vxlan.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/vm/double_qemu_setup.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV
| Test Setup | Set up functional test
diff --git a/tests/func/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot b/tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot
index 83985cdb00..aa88be5731 100644
--- a/tests/func/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot
+++ b/tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot
@@ -12,11 +12,11 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/vxlan.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
-| Resource | resources/libraries/robot/l2_xconnect.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/overlay/vxlan.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
+| Resource | resources/libraries/robot/l2/l2_xconnect.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV
| Test Setup | Set up functional test
diff --git a/tests/func/vxlan/eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot b/tests/vpp/func/ip4_tunnels/vxlan/eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot
index 8ae7286583..8fd608eada 100644
--- a/tests/func/vxlan/eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot
+++ b/tests/vpp/func/ip4_tunnels/vxlan/eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot
@@ -12,12 +12,12 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/vxlan.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/double_qemu_setup.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/overlay/vxlan.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/vm/double_qemu_setup.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV
| Test Setup | Set up functional test
diff --git a/tests/func/cop/eth2p-ethip6-ip6base-copblklistbase-func.robot b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-copblklistbase-func.robot
index d0a395cf44..f4314500e5 100644
--- a/tests/func/cop/eth2p-ethip6-ip6base-copblklistbase-func.robot
+++ b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-copblklistbase-func.robot
@@ -14,12 +14,12 @@
*** Settings ***
| Library | resources.libraries.python.Trace
| Library | resources.libraries.python.Cop
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/l2_xconnect.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/ip/ip6.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/l2/l2_xconnect.robot
| Variables | resources/libraries/python/IPv6NodesAddr.py | ${nodes}
| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO
| Test Setup | Set up functional test
diff --git a/tests/func/cop/eth2p-ethip6-ip6base-copwhlistbase-func.robot b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-copwhlistbase-func.robot
index 3fb80ba308..a60aa7760c 100644
--- a/tests/func/cop/eth2p-ethip6-ip6base-copwhlistbase-func.robot
+++ b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-copwhlistbase-func.robot
@@ -14,12 +14,12 @@
*** Settings ***
| Library | resources.libraries.python.Trace
| Library | resources.libraries.python.Cop
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/l2_xconnect.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/ip/ip6.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/l2/l2_xconnect.robot
| Variables | resources/libraries/python/IPv6NodesAddr.py | ${nodes}
| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO
| Test Setup | Set up functional test
diff --git a/tests/func/ipv6/eth2p-ethip6-ip6base-func.robot b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-func.robot
index 88c739dd27..bd0b2a6b64 100644
--- a/tests/func/ipv6/eth2p-ethip6-ip6base-func.robot
+++ b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-func.robot
@@ -13,10 +13,10 @@
*** Settings ***
| Library | resources.libraries.python.Trace
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/counters.robot
-| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/ip/ip6.robot
+| Resource | resources/libraries/robot/shared/counters.robot
+| Resource | resources/libraries/robot/shared/default.robot
| Variables | resources/libraries/python/IPv6NodesAddr.py | ${nodes}
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | SKIP_VPP_PATCH
| Suite Setup | Run Keywords
diff --git a/tests/func/iacl/eth2p-ethip6-ip6base-iaclbase-func.robot b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-iaclbase-func.robot
index a3eef2a665..e0862ab9ef 100644
--- a/tests/func/iacl/eth2p-ethip6-ip6base-iaclbase-func.robot
+++ b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-iaclbase-func.robot
@@ -12,13 +12,13 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/counters.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/l2_xconnect.robot
-| Resource | resources/libraries/robot/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/counters.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip6.robot
+| Resource | resources/libraries/robot/l2/l2_xconnect.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
| Library | resources.libraries.python.Classify.Classify
| Library | resources.libraries.python.Trace
| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO
diff --git a/tests/func/dhcp/eth2p-ethip6-ip6base-ip6dhcpproxy-func.robot b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6dhcpproxy-func.robot
index 88f0fbdcb5..2858f3743e 100644
--- a/tests/func/dhcp/eth2p-ethip6-ip6base-ip6dhcpproxy-func.robot
+++ b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6dhcpproxy-func.robot
@@ -12,10 +12,10 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/dhcp_proxy.robot
-| Resource | resources/libraries/robot/ipv6.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/features/dhcp_proxy.robot
+| Resource | resources/libraries/robot/ip/ip6.robot
| Library | resources.libraries.python.Trace
| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO | SKIP_VPP_PATCH
| Test Setup | Set up functional test
diff --git a/tests/func/ipv6/eth2p-ethip6-ip6base-ip6ecmp-func.robot b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6ecmp-func.robot
index e65ac9aa76..1f4b6c7270 100644
--- a/tests/func/ipv6/eth2p-ethip6-ip6base-ip6ecmp-func.robot
+++ b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6ecmp-func.robot
@@ -13,12 +13,12 @@
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/counters.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/counters.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip6.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
| Library | resources.libraries.python.Trace
| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO
| Test Setup | Set up functional test
diff --git a/tests/func/ipv6/eth2p-ethip6-ip6base-ip6ra-func.robot b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6ra-func.robot
index 0eb017b125..20fa1bd876 100644
--- a/tests/func/ipv6/eth2p-ethip6-ip6base-ip6ra-func.robot
+++ b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6ra-func.robot
@@ -12,12 +12,12 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/counters.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/counters.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip6.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
| Library | resources.libraries.python.Trace
| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO
| Test Setup | Set up functional test
diff --git a/tests/func/policer/eth2p-ethip6-ip6base-ipolicemarkbase-func.robot b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-ipolicemarkbase-func.robot
index 958607eee4..788d74ba92 100644
--- a/tests/func/policer/eth2p-ethip6-ip6base-ipolicemarkbase-func.robot
+++ b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-ipolicemarkbase-func.robot
@@ -13,7 +13,7 @@
*** Settings ***
| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | VM_ENV | HW_ENV
-| Resource | resources/libraries/robot/policer.robot
+| Resource | resources/libraries/robot/features/policer.robot
| Library | resources.libraries.python.Trace
| Test Setup | Run Keywords | Set up functional test
| ... | AND | Configure topology for IPv6 policer test
diff --git a/tests/func/vrf/eth2p-ethip6-ip6basevrf-func.robot b/tests/vpp/func/ip6/eth2p-ethip6-ip6basevrf-func.robot
index 64a34c4458..cf0ed43a4a 100644
--- a/tests/func/vrf/eth2p-ethip6-ip6basevrf-func.robot
+++ b/tests/vpp/func/ip6/eth2p-ethip6-ip6basevrf-func.robot
@@ -12,13 +12,13 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
+| 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/shared/testing_path.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
| Library | resources.libraries.python.Trace
| Library | resources.libraries.python.IPUtil
| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO | SKIP_VPP_PATCH
diff --git a/tests/func/lisp/eth2p-ethip6lisp-l2bdbasemaclrn-func.robot b/tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lisp-l2bdbasemaclrn-func.robot
index 7db90b677a..6927dacde4 100644
--- a/tests/func/lisp/eth2p-ethip6lisp-l2bdbasemaclrn-func.robot
+++ b/tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lisp-l2bdbasemaclrn-func.robot
@@ -18,12 +18,12 @@
| Library | resources.libraries.python.IPUtil
| Library | resources.libraries.python.LispUtil
| Library | resources.libraries.python.L2Util
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/lisp/l2lisp.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/overlay/l2lisp.robot
# Import configuration and test data:
| Variables | resources/test_data/lisp/l2/l2_ipv6.py
| ...
diff --git a/tests/func/lisp/eth2p-ethip6lispgpe-ip4base-func.robot b/tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip4base-func.robot
index 5ddf50eb96..08fc5c76c6 100644
--- a/tests/func/lisp/eth2p-ethip6lispgpe-ip4base-func.robot
+++ b/tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip4base-func.robot
@@ -12,12 +12,12 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
| Library | resources.libraries.python.IPUtil
| Library | resources.libraries.python.Trace
# import additional Lisp settings from resource file
diff --git a/tests/func/lisp/eth2p-ethip6lispgpe-ip6base-func.robot b/tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip6base-func.robot
index 93399bbe35..43f19740e3 100644
--- a/tests/func/lisp/eth2p-ethip6lispgpe-ip6base-func.robot
+++ b/tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip6base-func.robot
@@ -18,14 +18,14 @@
| Library | resources.libraries.python.IPUtil
| Library | resources.libraries.python.IPv6Setup
| Library | resources.libraries.python.VPPUtil
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
| Resource | resources/libraries/robot/vrf.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
# Import configuration and test data:
| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv6/ipv6_lispgpe_ipv6.py
| ...
diff --git a/tests/func/lisp/eth2p-ethip6lispgpe-ip6basevrf-func.robot b/tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip6basevrf-func.robot
index 281bbd0dda..5d3d969426 100644
--- a/tests/func/lisp/eth2p-ethip6lispgpe-ip6basevrf-func.robot
+++ b/tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip6basevrf-func.robot
@@ -18,14 +18,14 @@
| Library | resources.libraries.python.IPUtil
| Library | resources.libraries.python.IPv6Setup
| Library | resources.libraries.python.VPPUtil
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
| Resource | resources/libraries/robot/vrf.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
# Import configuration and test data:
| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv6/ipv6_lispgpe_ipv6.py
| ...
diff --git a/tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot b/tests/vpp/func/ip6_tunnels/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot
index f817baa3a6..165da28bd2 100644
--- a/tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot
+++ b/tests/vpp/func/ip6_tunnels/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot
@@ -12,12 +12,12 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/vxlan.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/double_qemu_setup.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/overlay/vxlan.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/vm/double_qemu_setup.robot
| Library | resources.libraries.python.Trace
| Library | resources.libraries.python.IPv6Setup
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV
diff --git a/tests/func/vxlan/eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot b/tests/vpp/func/ip6_tunnels/vxlan/eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot
index e4dec5bd1e..115883f1b1 100644
--- a/tests/func/vxlan/eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot
+++ b/tests/vpp/func/ip6_tunnels/vxlan/eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot
@@ -12,12 +12,12 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/vxlan.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/double_qemu_setup.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/overlay/vxlan.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/vm/double_qemu_setup.robot
| Library | resources.libraries.python.Trace
| Library | resources.libraries.python.IPv6Setup
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV
diff --git a/tests/func/vlan/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot b/tests/vpp/func/l2bd/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot
index 249e0dea33..38f370ef34 100644
--- a/tests/func/vlan/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot
+++ b/tests/vpp/func/l2bd/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot
@@ -12,11 +12,11 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/tagging.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/l2/tagging.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH
| Test Setup | Set up functional test
diff --git a/tests/func/vlan/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot b/tests/vpp/func/l2bd/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot
index 6efc508423..06a4794086 100644
--- a/tests/func/vlan/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot
+++ b/tests/vpp/func/l2bd/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot
@@ -12,11 +12,11 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/tagging.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/l2/tagging.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH
| Test Setup | Set up functional test
diff --git a/tests/func/vlan/eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot b/tests/vpp/func/l2bd/eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot
index b5fbb41138..e71e75f563 100644
--- a/tests/func/vlan/eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot
+++ b/tests/vpp/func/l2bd/eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot
@@ -12,11 +12,11 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/tagging.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/l2/tagging.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH
| Test Setup | Set up functional test
diff --git a/tests/func/vlan/eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot b/tests/vpp/func/l2bd/eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot
index 379d9a4ab6..aba84789b1 100644
--- a/tests/func/vlan/eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot
+++ b/tests/vpp/func/l2bd/eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot
@@ -12,11 +12,11 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/tagging.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/l2/tagging.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH
| Test Setup | Set up functional test
diff --git a/tests/func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot b/tests/vpp/func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot
index 096c0eb38e..43e092dae2 100644
--- a/tests/func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot
+++ b/tests/vpp/func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot
@@ -12,11 +12,11 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/interfaces.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
| Library | resources.libraries.python.Trace
| Force Tags | HW_ENV | VM_ENV | SKIP_VPP_PATCH
| Test Setup | Set up functional test
diff --git a/tests/func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot b/tests/vpp/func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot
index 7ba6b46591..ce99a35fcb 100644
--- a/tests/func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot
+++ b/tests/vpp/func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot
@@ -12,10 +12,10 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/qemu.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
| Library | resources.libraries.python.Trace
| Force Tags | HW_ENV | VM_ENV | SKIP_VPP_PATCH
| Test Setup | Set up functional test
diff --git a/tests/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot b/tests/vpp/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot
index 3649f928c5..04cb91376a 100644
--- a/tests/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot
+++ b/tests/vpp/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot
@@ -12,10 +12,10 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/qemu.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
| Library | resources.libraries.python.Trace
| Force Tags | HW_ENV | VM_ENV
| Test Setup | Set up functional test
diff --git a/tests/func/vlan/eth2p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot b/tests/vpp/func/l2xc/eth2p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot
index f3643be8bb..c0e8c5c899 100644
--- a/tests/func/vlan/eth2p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot
+++ b/tests/vpp/func/l2xc/eth2p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot
@@ -12,10 +12,10 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/tagging.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/l2/tagging.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH
| Test Setup | Set up functional test
diff --git a/tests/func/vlan/eth2p-dot1ad-l2xcbase-func.robot b/tests/vpp/func/l2xc/eth2p-dot1ad-l2xcbase-func.robot
index 488f9fa822..f030e618f7 100644
--- a/tests/func/vlan/eth2p-dot1ad-l2xcbase-func.robot
+++ b/tests/vpp/func/l2xc/eth2p-dot1ad-l2xcbase-func.robot
@@ -12,10 +12,10 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/tagging.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/l2/tagging.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV
| Test Setup | Set up functional test
diff --git a/tests/func/vlan/eth2p-dot1ad-l2xcbase-vlantrans22-func.robot b/tests/vpp/func/l2xc/eth2p-dot1ad-l2xcbase-vlantrans22-func.robot
index c646cbcd03..14406da97f 100644
--- a/tests/func/vlan/eth2p-dot1ad-l2xcbase-vlantrans22-func.robot
+++ b/tests/vpp/func/l2xc/eth2p-dot1ad-l2xcbase-vlantrans22-func.robot
@@ -12,10 +12,10 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/tagging.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/l2/tagging.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH
| Test Setup | Set up functional test
diff --git a/tests/func/vlan/eth2p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot b/tests/vpp/func/l2xc/eth2p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot
index bd1cebfd1e..6952d368b8 100644
--- a/tests/func/vlan/eth2p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot
+++ b/tests/vpp/func/l2xc/eth2p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot
@@ -12,10 +12,10 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/tagging.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/l2/tagging.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH
| Test Setup | Set up functional test
diff --git a/tests/func/vlan/eth2p-dot1q-l2xcbase-vlantrans11-func.robot b/tests/vpp/func/l2xc/eth2p-dot1q-l2xcbase-vlantrans11-func.robot
index bb91940a32..49039e9db9 100644
--- a/tests/func/vlan/eth2p-dot1q-l2xcbase-vlantrans11-func.robot
+++ b/tests/vpp/func/l2xc/eth2p-dot1q-l2xcbase-vlantrans11-func.robot
@@ -12,10 +12,10 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/tagging.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/l2/tagging.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH
| Test Setup | Set up functional test
diff --git a/tests/func/l2xc/eth2p-eth-l2xcbase-func.robot b/tests/vpp/func/l2xc/eth2p-eth-l2xcbase-func.robot
index a1b9fc24ad..37ccfc47cf 100644
--- a/tests/func/l2xc/eth2p-eth-l2xcbase-func.robot
+++ b/tests/vpp/func/l2xc/eth2p-eth-l2xcbase-func.robot
@@ -12,13 +12,13 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/l2_xconnect.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/qemu.robot
+| 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
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
| Library | resources.libraries.python.Trace
| Library | resources.libraries.python.NodePath
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH
diff --git a/tests/func/iacl/eth2p-eth-l2xcbase-iaclbase-func.robot b/tests/vpp/func/l2xc/eth2p-eth-l2xcbase-iaclbase-func.robot
index 06b6633d97..b62f0f8731 100644
--- a/tests/func/iacl/eth2p-eth-l2xcbase-iaclbase-func.robot
+++ b/tests/vpp/func/l2xc/eth2p-eth-l2xcbase-iaclbase-func.robot
@@ -12,12 +12,12 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/counters.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/l2_xconnect.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/counters.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/l2/l2_xconnect.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
| Library | resources.libraries.python.Classify.Classify
| Library | resources.libraries.python.Trace
| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO | SKIP_VPP_PATCH
diff --git a/tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixbase-func.robot b/tests/vpp/func/telemetry/eth2p-ethip4-ip4base-ip4ipfixbase-func.robot
index e5ec8dce9a..d2c979a3a4 100644
--- a/tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixbase-func.robot
+++ b/tests/vpp/func/telemetry/eth2p-ethip4-ip4base-ip4ipfixbase-func.robot
@@ -12,10 +12,10 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
| Resource | resources/libraries/robot/telemetry/ipfix.robot
| Library | resources.libraries.python.Classify.Classify
| Library | resources.libraries.python.telemetry.IPFIXSetup
diff --git a/tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixscale-func.robot b/tests/vpp/func/telemetry/eth2p-ethip4-ip4base-ip4ipfixscale-func.robot
index cfa67ee53e..553996fcc2 100644
--- a/tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixscale-func.robot
+++ b/tests/vpp/func/telemetry/eth2p-ethip4-ip4base-ip4ipfixscale-func.robot
@@ -12,10 +12,10 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
| Resource | resources/libraries/robot/telemetry/ipfix.robot
| Library | resources.libraries.python.Classify.Classify
| Library | resources.libraries.python.telemetry.IPFIXSetup
diff --git a/tests/func/telemetry/span/eth2p-ethip4-ip4base-spanrx-func.robot b/tests/vpp/func/telemetry/eth2p-ethip4-ip4base-spanrx-func.robot
index b7929493a5..37e5b04662 100644
--- a/tests/func/telemetry/span/eth2p-ethip4-ip4base-spanrx-func.robot
+++ b/tests/vpp/func/telemetry/eth2p-ethip4-ip4base-spanrx-func.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
| Resource | resources/libraries/robot/telemetry/span.robot
| Library | resources.libraries.python.Trace
| Library | resources.libraries.python.IPv4Util
diff --git a/tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixbase-func.robot b/tests/vpp/func/telemetry/eth2p-ethip6-ip6base-ip6ipfixbase-func.robot
index 8557c234d5..5248ff8ec0 100644
--- a/tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixbase-func.robot
+++ b/tests/vpp/func/telemetry/eth2p-ethip6-ip6base-ip6ipfixbase-func.robot
@@ -12,10 +12,10 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
| Resource | resources/libraries/robot/telemetry/ipfix.robot
| Library | resources.libraries.python.Classify.Classify
| Library | resources.libraries.python.telemetry.IPFIXSetup
diff --git a/tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixscale-func.robot b/tests/vpp/func/telemetry/eth2p-ethip6-ip6base-ip6ipfixscale-func.robot
index ee5caef306..4bc0f66504 100644
--- a/tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixscale-func.robot
+++ b/tests/vpp/func/telemetry/eth2p-ethip6-ip6base-ip6ipfixscale-func.robot
@@ -12,10 +12,10 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
| Resource | resources/libraries/robot/telemetry/ipfix.robot
| Library | resources.libraries.python.Classify.Classify
| Library | resources.libraries.python.telemetry.IPFIXSetup
diff --git a/tests/func/telemetry/span/eth2p-ethip6-ip6base-spanrx-func.robot b/tests/vpp/func/telemetry/eth2p-ethip6-ip6base-spanrx-func.robot
index 1d98bdf722..48bb7cf173 100644
--- a/tests/func/telemetry/span/eth2p-ethip6-ip6base-spanrx-func.robot
+++ b/tests/vpp/func/telemetry/eth2p-ethip6-ip6base-spanrx-func.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
| Resource | resources/libraries/robot/telemetry/span.robot
| Library | resources.libraries.python.Trace
| Library | resources.libraries.python.IPv6Util
diff --git a/tests/func/ipv4/eth2p-ethip4-ip4base-eth-2vhost-1vm.robot b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4-ip4base-eth-2vhost-1vm.robot
index d3bf4b517d..5886454b06 100644
--- a/tests/func/ipv4/eth2p-ethip4-ip4base-eth-2vhost-1vm.robot
+++ b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4-ip4base-eth-2vhost-1vm.robot
@@ -19,14 +19,14 @@
| Library | resources.libraries.python.VPPUtil
| Library | resources.libraries.python.InterfaceUtil
| Library | resources.libraries.python.VhostUser
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
| Resource | resources/libraries/robot/vrf.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
| Force Tags | VM_ENV | HW_ENV | 3_NODE_DOUBLE_LINK_TOPO
| Test Setup | Set up functional test
| Test Teardown | Tear down functional test
diff --git a/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot
index 235e581f02..d23c7427fd 100644
--- a/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot
+++ b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot
@@ -20,16 +20,16 @@
| Library | resources.libraries.python.QemuUtils
| Library | resources.libraries.python.VPPUtil
| Library | resources.libraries.python.IPsecUtil
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
| Resource | resources/libraries/robot/vrf.robot
-| Resource | resources/libraries/robot/ipsec.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/lisp/l2lisp.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/overlay/l2lisp.robot
# Import configuration and test data:
| Variables | resources/test_data/lisp/ipv4_ipsec_lispgpe_ipv4/ipv4_ipsec_lispgpe_ipv4.py
| ...
diff --git a/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot
index f09fa31793..144ac0ac59 100644
--- a/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot
+++ b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot
@@ -25,15 +25,15 @@
| Library | resources.libraries.python.QemuUtils
| Library | resources.libraries.python.VPPUtil
| Library | String
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/ipsec.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip6.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
# Import configuration and test data:
| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv4/ipv6_lispgpe_ipsec_ipv4.py
| ...
diff --git a/tests/func/lisp/eth2p-ethip4lispgpe-ip4base-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip4base-eth-2vhost-1vm-func.robot
index 4b1f281fb8..c99ba40491 100644
--- a/tests/func/lisp/eth2p-ethip4lispgpe-ip4base-eth-2vhost-1vm-func.robot
+++ b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip4base-eth-2vhost-1vm-func.robot
@@ -19,15 +19,15 @@
| Library | resources.libraries.python.VPPUtil
| Library | resources.libraries.python.InterfaceUtil
| Library | resources.libraries.python.VhostUser
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
| Resource | resources/libraries/robot/vrf.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
# Import configuration and test data:
| Variables | resources/test_data/lisp/ipv4_lispgpe_ipv4/ipv4_lispgpe_ipv4.py
| ...
diff --git a/tests/func/lisp/eth2p-ethip4lispgpe-ip4basevrf-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip4basevrf-eth-2vhost-1vm-func.robot
index d547624225..0539bfad1c 100644
--- a/tests/func/lisp/eth2p-ethip4lispgpe-ip4basevrf-eth-2vhost-1vm-func.robot
+++ b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip4basevrf-eth-2vhost-1vm-func.robot
@@ -19,15 +19,15 @@
| Library | resources.libraries.python.VPPUtil
| Library | resources.libraries.python.InterfaceUtil
| Library | resources.libraries.python.VhostUser
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
| Resource | resources/libraries/robot/vrf.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
# Import configuration and test data:
| Variables | resources/test_data/lisp/ipv4_lispgpe_ipv4/ipv4_lispgpe_ipv4.py
| ...
diff --git a/tests/func/lisp/eth2p-ethip4lispgpe-ip6base-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip6base-eth-2vhost-1vm-func.robot
index ee4e408de7..811dce4b27 100644
--- a/tests/func/lisp/eth2p-ethip4lispgpe-ip6base-eth-2vhost-1vm-func.robot
+++ b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip6base-eth-2vhost-1vm-func.robot
@@ -12,15 +12,15 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/qemu.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
| Library | resources.libraries.python.IPUtil
| Library | resources.libraries.python.VhostUser
| Library | resources.libraries.python.Trace
diff --git a/tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/ip6/eth2p-ethip6ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot
index 3db32da344..6b5639537e 100644
--- a/tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot
+++ b/tests/vpp/func/vm_vhost/ip6/eth2p-ethip6ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot
@@ -25,15 +25,15 @@
| Library | resources.libraries.python.QemuUtils
| Library | resources.libraries.python.VPPUtil
| Library | String
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/ipsec.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip6.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
# Import configuration and test data:
| Variables | resources/test_data/lisp/ipv4_lispgpe_ipv6/ipv4_lispgpe_ipsec_ipv6.py
| ...
diff --git a/tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/ip6/eth2p-ethip6ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot
index e03d8fff38..d5186ddbfd 100644
--- a/tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot
+++ b/tests/vpp/func/vm_vhost/ip6/eth2p-ethip6ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot
@@ -25,15 +25,15 @@
| Library | resources.libraries.python.VhostUser
| Library | resources.libraries.python.QemuUtils
| Library | String
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/ipv6.robot
-| Resource | resources/libraries/robot/ipsec.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/ip/ip6.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
# Import configuration and test data:
| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv6/ipv6_lispgpe_ipsec_ipv6.py
| ...
diff --git a/tests/func/lisp/eth2p-ethip6lispgpe-ip6base-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/ip6/eth2p-ethip6lispgpe-ip6base-eth-2vhost-1vm-func.robot
index afcbab6918..073792618d 100644
--- a/tests/func/lisp/eth2p-ethip6lispgpe-ip6base-eth-2vhost-1vm-func.robot
+++ b/tests/vpp/func/vm_vhost/ip6/eth2p-ethip6lispgpe-ip6base-eth-2vhost-1vm-func.robot
@@ -18,14 +18,14 @@
| Library | resources.libraries.python.IPUtil
| Library | resources.libraries.python.IPv6Setup
| Library | resources.libraries.python.VPPUtil
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
| Resource | resources/libraries/robot/vrf.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
# Import configuration and test data:
| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv6/ipv6_lispgpe_ipv6.py
| ...
diff --git a/tests/func/lisp/eth2p-ethip6lispgpe-ip6basevrf-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/ip6/eth2p-ethip6lispgpe-ip6basevrf-eth-2vhost-1vm-func.robot
index b41cb37d94..e0a6cd425d 100644
--- a/tests/func/lisp/eth2p-ethip6lispgpe-ip6basevrf-eth-2vhost-1vm-func.robot
+++ b/tests/vpp/func/vm_vhost/ip6/eth2p-ethip6lispgpe-ip6basevrf-eth-2vhost-1vm-func.robot
@@ -18,14 +18,14 @@
| Library | resources.libraries.python.IPUtil
| Library | resources.libraries.python.IPv6Setup
| Library | resources.libraries.python.VPPUtil
-| Resource | resources/libraries/robot/traffic.robot
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
| Resource | resources/libraries/robot/vrf.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
# Import configuration and test data:
| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv6/ipv6_lispgpe_ipv6.py
| ...
diff --git a/tests/func/vlan/eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/l2bd/eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
index 28ab67b266..7eb7d3e857 100644
--- a/tests/func/vlan/eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
+++ b/tests/vpp/func/vm_vhost/l2bd/eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
@@ -12,13 +12,13 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/tagging.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/double_qemu_setup.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/l2/tagging.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/vm/double_qemu_setup.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | HW_ENV | VM_ENV | VPP_VM_ENV
| Test Setup | Set up functional test
diff --git a/tests/func/fds/eth2p-dot1q-l2bdbasemaclrn-eth-4vhost-2vm-fds-provider-nets-func.robot b/tests/vpp/func/vm_vhost/l2bd/eth2p-dot1q-l2bdbasemaclrn-eth-4vhost-2vm-fds-provider-nets-func.robot
index dc1ab41018..6bf594c0df 100644
--- a/tests/func/fds/eth2p-dot1q-l2bdbasemaclrn-eth-4vhost-2vm-fds-provider-nets-func.robot
+++ b/tests/vpp/func/vm_vhost/l2bd/eth2p-dot1q-l2bdbasemaclrn-eth-4vhost-2vm-fds-provider-nets-func.robot
@@ -12,12 +12,12 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/double_qemu_setup.robot
-| Resource | resources/libraries/robot/qemu.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/vm/double_qemu_setup.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
| Resource | resources/libraries/robot/fds/default.robot
| Library | resources.libraries.python.Trace
| ...
diff --git a/tests/func/l2bd/eth2p-eth-l2bdbasemaclrn-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/l2bd/eth2p-eth-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
index b6a945865f..678e268235 100644
--- a/tests/func/l2bd/eth2p-eth-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
+++ b/tests/vpp/func/vm_vhost/l2bd/eth2p-eth-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
@@ -12,10 +12,10 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/qemu.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | HW_ENV | VM_ENV | VPP_VM_ENV
| Test Setup | Set up functional test
diff --git a/tests/func/l2bd/eth2p-eth-l2bdbasemacstc-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/l2bd/eth2p-eth-l2bdbasemacstc-eth-2vhost-1vm-func.robot
index 951d522baa..22ec61d395 100644
--- a/tests/func/l2bd/eth2p-eth-l2bdbasemacstc-eth-2vhost-1vm-func.robot
+++ b/tests/vpp/func/vm_vhost/l2bd/eth2p-eth-l2bdbasemacstc-eth-2vhost-1vm-func.robot
@@ -12,10 +12,10 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/qemu.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | HW_ENV | VM_ENV | VPP_VM_ENV
| Test Setup | Set up functional test
diff --git a/tests/func/vhost/eth2p-ethip4-l2bdbase-vhost-client-reconnect-2vm-func.robot b/tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4-l2bdbase-vhost-client-reconnect-2vm-func.robot
index 958acc2c5d..4609aa10d2 100644
--- a/tests/func/vhost/eth2p-ethip4-l2bdbase-vhost-client-reconnect-2vm-func.robot
+++ b/tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4-l2bdbase-vhost-client-reconnect-2vm-func.robot
@@ -12,11 +12,11 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/vxlan.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/overlay/vxlan.robot
| Library | resources.libraries.python.Trace
| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO | VPP_VM_ENV
| Test Setup | Set up functional test
diff --git a/tests/func/fds/eth2p-ethip4vxlan-l2bdbasemaclrn--eth-4vhost-2vm-fds-tenant-nets-func.robot b/tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4vxlan-l2bdbasemaclrn--eth-4vhost-2vm-fds-tenant-nets-func.robot
index 0a2cd0b515..e58e6ed7c2 100644
--- a/tests/func/fds/eth2p-ethip4vxlan-l2bdbasemaclrn--eth-4vhost-2vm-fds-tenant-nets-func.robot
+++ b/tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4vxlan-l2bdbasemaclrn--eth-4vhost-2vm-fds-tenant-nets-func.robot
@@ -12,12 +12,12 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/ipv4.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/double_qemu_setup.robot
-| Resource | resources/libraries/robot/qemu.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/vm/double_qemu_setup.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
| Resource | resources/libraries/robot/fds/default.robot
| Library | resources.libraries.python.Trace
| ...
diff --git a/tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
index b69abb09d5..d6f4e57143 100644
--- a/tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
+++ b/tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
@@ -12,12 +12,12 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/vxlan.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/double_qemu_setup.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/overlay/vxlan.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/vm/double_qemu_setup.robot
| Library | resources.libraries.python.Trace
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV | VPP_VM_ENV
| Test Setup | Set up functional test
diff --git a/tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/l2bd/eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
index 429d9a3353..cde7bd8aff 100644
--- a/tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
+++ b/tests/vpp/func/vm_vhost/l2bd/eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
@@ -12,12 +12,12 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/vxlan.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/double_qemu_setup.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/testing_path.robot
+| Resource | resources/libraries/robot/overlay/vxlan.robot
+| Resource | resources/libraries/robot/l2/l2_traffic.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
+| Resource | resources/libraries/robot/vm/double_qemu_setup.robot
| Library | resources.libraries.python.Trace
| Library | resources.libraries.python.IPv6Setup
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV
diff --git a/tests/func/l2xc/eth2p-eth-l2xcbase-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/l2xc/eth2p-eth-l2xcbase-eth-2vhost-1vm-func.robot
index d593fdf4d0..759d7cba23 100644
--- a/tests/func/l2xc/eth2p-eth-l2xcbase-eth-2vhost-1vm-func.robot
+++ b/tests/vpp/func/vm_vhost/l2xc/eth2p-eth-l2xcbase-eth-2vhost-1vm-func.robot
@@ -12,13 +12,13 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/l2_xconnect.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/interfaces.robot
-| Resource | resources/libraries/robot/bridge_domain.robot
-| Resource | resources/libraries/robot/qemu.robot
+| 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
+| Resource | resources/libraries/robot/shared/interfaces.robot
+| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
+| Resource | resources/libraries/robot/vm/qemu.robot
| Library | resources.libraries.python.Trace
| Library | resources.libraries.python.NodePath
| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | HW_ENV | VM_ENV | VPP_VM_ENV
diff --git a/tests/perf/__init__.robot b/tests/vpp/perf/__init__.robot
index 922ad29a33..0dfc31f07e 100644
--- a/tests/perf/__init__.robot
+++ b/tests/vpp/perf/__init__.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/default.robot
-| Resource | resources/libraries/robot/interfaces.robot
+| Resource | resources/libraries/robot/shared/default.robot
+| Resource | resources/libraries/robot/shared/interfaces.robot
| Library | resources.libraries.python.SetupFramework
| Library | resources.libraries.python.CpuUtils
| Suite Setup | Run Keywords | Setup performance global Variables
diff --git a/tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdrdisc.robot b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdrdisc.robot
index d7ad9b1ab4..86670fecc6 100644
--- a/tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdrdisc.robot
+++ b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdrdisc.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/ipsec.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE
diff --git a/tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot
index fb7fe7b15e..c78d3ca67d 100644
--- a/tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot
+++ b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/ipsec.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE
diff --git a/tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot
index 6bb53fc994..85ddc9f663 100644
--- a/tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot
+++ b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/ipsec.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE
diff --git a/tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot
index c36c18828b..1002f53e5d 100644
--- a/tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot
+++ b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/ipsec.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE
diff --git a/tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdrdisc.robot b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdrdisc.robot
index 350a47cdbf..ac8f8603b9 100644
--- a/tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdrdisc.robot
+++ b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdrdisc.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/ipsec.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | SCALE | NDRPDRDISC
| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
diff --git a/tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot
index b9ae2f4ba3..c46da5a82d 100644
--- a/tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot
+++ b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/ipsec.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | SCALE | NDRPDRDISC
| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
diff --git a/tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot
index 122076c694..6e5a7dfbd9 100644
--- a/tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot
+++ b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/ipsec.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | SCALE | NDRPDRDISC
| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
diff --git a/tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot
index 588a715b68..cceaaf846a 100644
--- a/tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot
+++ b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/ipsec.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | SCALE | NDRPDRDISC
| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
diff --git a/tests/perf/40ge2p1xl710-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrpdrdisc.robot b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrpdrdisc.robot
index 03aa4f9a66..141d3f7ce1 100644
--- a/tests/perf/40ge2p1xl710-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrpdrdisc.robot
+++ b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrpdrdisc.robot
@@ -12,9 +12,9 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/ipsec.robot
-| Resource | resources/libraries/robot/lisp/lispgpe.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/crypto/ipsec.robot
+| Resource | resources/libraries/robot/overlay/lispgpe.robot
| ...
| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC | IP4FWD
diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrchk.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrchk.robot
index f7952bde84..5dc941725f 100644
--- a/tests/perf/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrchk.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.Cop
| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']}
| ... | WITH NAME | dut1_v4
diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrpdrdisc.robot
index 85633d9a87..2afbb093c8 100644
--- a/tests/perf/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.Cop
| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']}
| ... | WITH NAME | dut1_v4
diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrchk.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrchk.robot
index f7bb1985cc..3a070f8eaf 100644
--- a/tests/perf/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrchk.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.Classify.Classify
| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']}
| ... | WITH NAME | dut1_v4
diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrpdrdisc.robot
index 3f2a066fe1..5d63633383 100644
--- a/tests/perf/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.Classify.Classify
| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']}
| ... | WITH NAME | dut1_v4
diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrchk.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrchk.robot
index 0ab575137f..69c0f60cfc 100644
--- a/tests/perf/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrchk.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.Policer
| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']}
| ... | WITH NAME | dut1_v4
diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrpdrdisc.robot
index b8a5b87e20..2400a58d12 100644
--- a/tests/perf/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.Policer
| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']}
| ... | WITH NAME | dut1_v4
diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-ndrchk.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ndrchk.robot
index 0c482863e0..01dcedb4b8 100644
--- a/tests/perf/10ge2p1x520-ethip4-ip4base-ndrchk.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ndrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.topology.Topology
| Library | resources.libraries.python.NodePath
| Library | resources.libraries.python.InterfaceUtil
diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ndrpdrdisc.robot
index ab038fdb23..edf5ca0691 100644
--- a/tests/perf/10ge2p1x520-ethip4-ip4base-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.topology.Topology
| Library | resources.libraries.python.NodePath
| Library | resources.libraries.python.InterfaceUtil
diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-pdrchk.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-pdrchk.robot
index d58d0849a0..3c49d6ba72 100644
--- a/tests/perf/10ge2p1x520-ethip4-ip4base-pdrchk.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-pdrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.topology.Topology
| Library | resources.libraries.python.NodePath
| Library | resources.libraries.python.InterfaceUtil
diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-snat-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-snat-ndrpdrdisc.robot
index f8cf8c1dcb..89aa2788ef 100644
--- a/tests/perf/10ge2p1x520-ethip4-ip4base-snat-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-snat-ndrpdrdisc.robot
@@ -12,9 +12,9 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/snat.robot
-| Resource | resources/libraries/robot/traffic.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/ip/snat.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | BASE
diff --git a/tests/perf/10ge2p1x520-ethip4-ip4scale200k-ndrchk.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale200k-ndrchk.robot
index 69d60d0fa4..abb34c2794 100644
--- a/tests/perf/10ge2p1x520-ethip4-ip4scale200k-ndrchk.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale200k-ndrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK
| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_200K
diff --git a/tests/perf/10ge2p1x520-ethip4-ip4scale200k-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale200k-ndrpdrdisc.robot
index 9d97f62db0..6d0034338f 100644
--- a/tests/perf/10ge2p1x520-ethip4-ip4scale200k-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale200k-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_200K
diff --git a/tests/perf/10ge2p1x520-ethip4-ip4scale20k-ndrchk.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale20k-ndrchk.robot
index f9fc2f1738..8303a4e139 100644
--- a/tests/perf/10ge2p1x520-ethip4-ip4scale20k-ndrchk.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale20k-ndrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK
| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_20K
diff --git a/tests/perf/10ge2p1x520-ethip4-ip4scale20k-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale20k-ndrpdrdisc.robot
index 0117fb4e5c..a4c5b31bd7 100644
--- a/tests/perf/10ge2p1x520-ethip4-ip4scale20k-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale20k-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_20K
diff --git a/tests/perf/10ge2p1x520-ethip4-ip4scale2m-ndrchk.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-ndrchk.robot
index b1ea5ed8d4..84fc806d23 100644
--- a/tests/perf/10ge2p1x520-ethip4-ip4scale2m-ndrchk.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-ndrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK
| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_2M
diff --git a/tests/perf/10ge2p1x520-ethip4-ip4scale2m-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-ndrpdrdisc.robot
index c397d82c87..920bb8f42d 100644
--- a/tests/perf/10ge2p1x520-ethip4-ip4scale2m-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_2M
diff --git a/tests/perf/10ge2p1x520-ethip4-ip4scale2m-pdrchk.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-pdrchk.robot
index c983066b5b..0a5133aff1 100644
--- a/tests/perf/10ge2p1x520-ethip4-ip4scale2m-pdrchk.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-pdrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK
| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_2M
diff --git a/tests/perf/10ge2p1x520-ethip4udp-ip4base-udpsrcscale15-snat-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4base-udpsrcscale15-snat-ndrpdrdisc.robot
index a4533d6c02..4eb3862e0f 100644
--- a/tests/perf/10ge2p1x520-ethip4udp-ip4base-udpsrcscale15-snat-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4base-udpsrcscale15-snat-ndrpdrdisc.robot
@@ -12,9 +12,9 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/snat.robot
-| Resource | resources/libraries/robot/traffic.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/ip/snat.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | BASE
diff --git a/tests/perf/10ge2p1x520-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrpdrdisc.robot
index 6a6157c323..28b44ebfc6 100644
--- a/tests/perf/10ge2p1x520-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrpdrdisc.robot
@@ -12,9 +12,9 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/snat.robot
-| Resource | resources/libraries/robot/traffic.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/ip/snat.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | SRC_USER_10
diff --git a/tests/perf/10ge2p1x520-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrpdrdisc.robot
index b01168fde0..9f683679e2 100644
--- a/tests/perf/10ge2p1x520-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrpdrdisc.robot
@@ -12,9 +12,9 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/snat.robot
-| Resource | resources/libraries/robot/traffic.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/ip/snat.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | SRC_USER_100
diff --git a/tests/perf/10ge2p1x520-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrpdrdisc.robot
index fda5a15801..73ede552b2 100644
--- a/tests/perf/10ge2p1x520-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrpdrdisc.robot
@@ -12,9 +12,9 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/snat.robot
-| Resource | resources/libraries/robot/traffic.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/ip/snat.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | SRC_USER_1000
diff --git a/tests/perf/10ge2p1x520-ethip4udp-ip4scale2000-udpsrcscale15-snat-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale2000-udpsrcscale15-snat-ndrpdrdisc.robot
index 3e26427522..bce900f0ec 100644
--- a/tests/perf/10ge2p1x520-ethip4udp-ip4scale2000-udpsrcscale15-snat-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale2000-udpsrcscale15-snat-ndrpdrdisc.robot
@@ -12,9 +12,9 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/snat.robot
-| Resource | resources/libraries/robot/traffic.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/ip/snat.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | SRC_USER_2000
diff --git a/tests/perf/10ge2p1x520-ethip4udp-ip4scale4000-udpsrcscale15-snat-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale4000-udpsrcscale15-snat-ndrpdrdisc.robot
index 3debd2aa1f..2b91618470 100644
--- a/tests/perf/10ge2p1x520-ethip4udp-ip4scale4000-udpsrcscale15-snat-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale4000-udpsrcscale15-snat-ndrpdrdisc.robot
@@ -12,9 +12,9 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/snat.robot
-| Resource | resources/libraries/robot/traffic.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/ip/snat.robot
+| Resource | resources/libraries/robot/shared/traffic.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | SRC_USER_4000
diff --git a/tests/perf/40ge2p1xl710-ethip4-ip4base-ndrpdrdisc.robot b/tests/vpp/perf/ip4/40ge2p1xl710-ethip4-ip4base-ndrpdrdisc.robot
index 926f2547df..1dbda15832 100644
--- a/tests/perf/40ge2p1xl710-ethip4-ip4base-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip4/40ge2p1xl710-ethip4-ip4base-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.topology.Topology
| Library | resources.libraries.python.NodePath
| Library | resources.libraries.python.InterfaceUtil
diff --git a/tests/perf/10ge2p1x520-ethip4lispip4-ip4base-ndrchk.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-ndrchk.robot
index 82002a052d..79f0bbc772 100644
--- a/tests/perf/10ge2p1x520-ethip4lispip4-ip4base-ndrchk.robot
+++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-ndrchk.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot
| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK
diff --git a/tests/perf/10ge2p1x520-ethip4lispip4-ip4base-ndrpdrdisc.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-ndrpdrdisc.robot
index 715ed21faf..2dc5be4981 100644
--- a/tests/perf/10ge2p1x520-ethip4lispip4-ip4base-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-ndrpdrdisc.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot
| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
diff --git a/tests/perf/10ge2p1x520-ethip4lispip4-ip4base-pdrchk.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-pdrchk.robot
index 643274f049..bebbfbc938 100644
--- a/tests/perf/10ge2p1x520-ethip4lispip4-ip4base-pdrchk.robot
+++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-pdrchk.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot
| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK
diff --git a/tests/perf/10ge2p1x520-ethip4lispip6-ip4base-ndrchk.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-ndrchk.robot
index aee159f98c..cdcc200b55 100644
--- a/tests/perf/10ge2p1x520-ethip4lispip6-ip4base-ndrchk.robot
+++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-ndrchk.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot
| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK
diff --git a/tests/perf/10ge2p1x520-ethip4lispip6-ip4base-ndrpdrdisc.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-ndrpdrdisc.robot
index 356750ae8f..a7f730ac40 100644
--- a/tests/perf/10ge2p1x520-ethip4lispip6-ip4base-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-ndrpdrdisc.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot
| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
diff --git a/tests/perf/10ge2p1x520-ethip4lispip6-ip4base-pdrchk.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-pdrchk.robot
index 59fa02eb54..f8190674a7 100644
--- a/tests/perf/10ge2p1x520-ethip4lispip6-ip4base-pdrchk.robot
+++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-pdrchk.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot
| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK
diff --git a/tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-ndrpdrdisc.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-ndrpdrdisc.robot
index 06d8ef9b12..f41f619375 100644
--- a/tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY
diff --git a/tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-pdrchk.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-pdrchk.robot
index cd9aa6b107..dee56213c7 100644
--- a/tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-pdrchk.robot
+++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-pdrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK
| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY
diff --git a/tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-ndrchk.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-ndrchk.robot
index 999231d96a..1a07df20a3 100644
--- a/tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-ndrchk.robot
+++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-ndrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK
| ... | NIC_Intel-X520-DA2 | L2XCFWD | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY
diff --git a/tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-ndrpdrdisc.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-ndrpdrdisc.robot
index db9d1a68c9..8a4d7422b6 100644
--- a/tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X520-DA2 | L2XCFWD | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY
diff --git a/tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-pdrchk.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-pdrchk.robot
index 0c7cd0d2a7..cfd119b300 100644
--- a/tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-pdrchk.robot
+++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-pdrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK
| ... | NIC_Intel-X520-DA2 | L2XCFWD | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY
diff --git a/tests/perf/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrchk.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrchk.robot
index 0dcb36f761..c619b6530b 100644
--- a/tests/perf/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrchk.robot
+++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.Cop
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK
diff --git a/tests/perf/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrpdrdisc.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrpdrdisc.robot
index fa5879507a..6808603262 100644
--- a/tests/perf/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.Cop
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
diff --git a/tests/perf/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrchk.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrchk.robot
index 49d3d3bc8f..b82a356f1b 100644
--- a/tests/perf/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrchk.robot
+++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.Classify.Classify
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK
diff --git a/tests/perf/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrpdrdisc.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrpdrdisc.robot
index 1af04c2b21..6ee98fbcc4 100644
--- a/tests/perf/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.Classify.Classify
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
diff --git a/tests/perf/10ge2p1x520-ethip6-ip6base-ndrchk.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-ndrchk.robot
index 67a1b21e6b..8011baf632 100644
--- a/tests/perf/10ge2p1x520-ethip6-ip6base-ndrchk.robot
+++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-ndrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK
| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | BASE | IP6BASE
diff --git a/tests/perf/10ge2p1x520-ethip6-ip6base-ndrpdrdisc.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-ndrpdrdisc.robot
index 99d699c795..3999677ffb 100644
--- a/tests/perf/10ge2p1x520-ethip6-ip6base-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | BASE | IP6BASE
diff --git a/tests/perf/10ge2p1x520-ethip6-ip6base-pdrchk.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-pdrchk.robot
index cbaad60529..5ca64f5790 100644
--- a/tests/perf/10ge2p1x520-ethip6-ip6base-pdrchk.robot
+++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-pdrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK
| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | BASE | IP6BASE
diff --git a/tests/perf/10ge2p1x520-ethip6-ip6scale200k-ndrchk.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale200k-ndrchk.robot
index d844bb058d..a6f8c980e1 100644
--- a/tests/perf/10ge2p1x520-ethip6-ip6scale200k-ndrchk.robot
+++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale200k-ndrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK
| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_200K
diff --git a/tests/perf/10ge2p1x520-ethip6-ip6scale200k-ndrpdrdisc.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale200k-ndrpdrdisc.robot
index 6b2235ce7a..f64102384d 100644
--- a/tests/perf/10ge2p1x520-ethip6-ip6scale200k-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale200k-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_200K
diff --git a/tests/perf/10ge2p1x520-ethip6-ip6scale20k-ndrchk.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale20k-ndrchk.robot
index 2d8ee7cb3e..ebf642f9b5 100644
--- a/tests/perf/10ge2p1x520-ethip6-ip6scale20k-ndrchk.robot
+++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale20k-ndrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK
| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_20K
diff --git a/tests/perf/10ge2p1x520-ethip6-ip6scale20k-ndrpdrdisc.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale20k-ndrpdrdisc.robot
index b685e8adf0..4337c0d6a3 100644
--- a/tests/perf/10ge2p1x520-ethip6-ip6scale20k-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale20k-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_20K
diff --git a/tests/perf/10ge2p1x520-ethip6-ip6scale2m-ndrchk.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-ndrchk.robot
index 4aa9caa7bb..c3411cebd8 100644
--- a/tests/perf/10ge2p1x520-ethip6-ip6scale2m-ndrchk.robot
+++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-ndrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK
| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_2M
diff --git a/tests/perf/10ge2p1x520-ethip6-ip6scale2m-ndrpdrdisc.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-ndrpdrdisc.robot
index 9a7b8dc480..1259fd9130 100644
--- a/tests/perf/10ge2p1x520-ethip6-ip6scale2m-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_2M
diff --git a/tests/perf/10ge2p1x520-ethip6-ip6scale2m-pdrchk.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-pdrchk.robot
index 58aae85019..977e73ff2a 100644
--- a/tests/perf/10ge2p1x520-ethip6-ip6scale2m-pdrchk.robot
+++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-pdrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK
| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_2M
diff --git a/tests/perf/40ge2p1xl710-ethip6-ip6base-ndrpdrdisc.robot b/tests/vpp/perf/ip6/40ge2p1xl710-ethip6-ip6base-ndrpdrdisc.robot
index 016b4d963b..4c45fdd266 100644
--- a/tests/perf/40ge2p1xl710-ethip6-ip6base-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip6/40ge2p1xl710-ethip6-ip6base-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-XL710 | ETH | IP6FWD | BASE
diff --git a/tests/perf/10ge2p1x520-ethip6lispip4-ip6base-ndrchk.robot b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-ndrchk.robot
index aaccec61d4..6448d4390f 100644
--- a/tests/perf/10ge2p1x520-ethip6lispip4-ip6base-ndrchk.robot
+++ b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-ndrchk.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot
| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK
diff --git a/tests/perf/10ge2p1x520-ethip6lispip4-ip6base-ndrpdrdisc.robot b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-ndrpdrdisc.robot
index 06c38dfd62..bcf0711c94 100644
--- a/tests/perf/10ge2p1x520-ethip6lispip4-ip6base-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-ndrpdrdisc.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot
| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
diff --git a/tests/perf/10ge2p1x520-ethip6lispip4-ip6base-pdrchk.robot b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-pdrchk.robot
index ecc41b6b74..55c5a19e70 100644
--- a/tests/perf/10ge2p1x520-ethip6lispip4-ip6base-pdrchk.robot
+++ b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-pdrchk.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot
| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK
diff --git a/tests/perf/10ge2p1x520-ethip6lispip6-ip6base-ndrchk.robot b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-ndrchk.robot
index 2afb2804c4..2e44791318 100644
--- a/tests/perf/10ge2p1x520-ethip6lispip6-ip6base-ndrchk.robot
+++ b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-ndrchk.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot
| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK
diff --git a/tests/perf/10ge2p1x520-ethip6lispip6-ip6base-ndrpdrdisc.robot b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-ndrpdrdisc.robot
index 015e4d59f6..f29f4e4626 100644
--- a/tests/perf/10ge2p1x520-ethip6lispip6-ip6base-ndrpdrdisc.robot
+++ b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-ndrpdrdisc.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot
| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
diff --git a/tests/perf/10ge2p1x520-ethip6lispip6-ip6base-pdrchk.robot b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-pdrchk.robot
index 7898a08aa5..717efedf45 100644
--- a/tests/perf/10ge2p1x520-ethip6lispip6-ip6base-pdrchk.robot
+++ b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-pdrchk.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot
| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK
diff --git a/tests/perf/10ge2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot b/tests/vpp/perf/l2/10ge2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot
index 7f025baa92..51eb235f24 100644
--- a/tests/perf/10ge2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot
+++ b/tests/vpp/perf/l2/10ge2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Cisco-VIC-1227 | ETH | L2BDMACLRN | BASE
diff --git a/tests/perf/10ge2p1x520-dot1ad-l2xcbase-ndrchk.robot b/tests/vpp/perf/l2/10ge2p1x520-dot1ad-l2xcbase-ndrchk.robot
index 9f378fab48..4b4162581a 100644
--- a/tests/perf/10ge2p1x520-dot1ad-l2xcbase-ndrchk.robot
+++ b/tests/vpp/perf/l2/10ge2p1x520-dot1ad-l2xcbase-ndrchk.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/tagging.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/l2/tagging.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK
| ... | NIC_Intel-X520-DA2 | L2XCFWD | BASE | DOT1AD
diff --git a/tests/perf/10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot b/tests/vpp/perf/l2/10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot
index 6122de9850..17b907c91b 100644
--- a/tests/perf/10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot
+++ b/tests/vpp/perf/l2/10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/tagging.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/l2/tagging.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X520-DA2 | L2XCFWD | BASE | DOT1AD
diff --git a/tests/perf/10ge2p1x520-dot1q-l2xcbase-ndrchk.robot b/tests/vpp/perf/l2/10ge2p1x520-dot1q-l2xcbase-ndrchk.robot
index a38bff667e..d3a67f3777 100644
--- a/tests/perf/10ge2p1x520-dot1q-l2xcbase-ndrchk.robot
+++ b/tests/vpp/perf/l2/10ge2p1x520-dot1q-l2xcbase-ndrchk.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/tagging.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/l2/tagging.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK
| ... | NIC_Intel-X520-DA2 | L2XCFWD | BASE | DOT1Q
diff --git a/tests/perf/10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot b/tests/vpp/perf/l2/10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot
index d99d772c8f..a5a8580f29 100644
--- a/tests/perf/10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot
+++ b/tests/vpp/perf/l2/10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot
@@ -12,8 +12,8 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
-| Resource | resources/libraries/robot/tagging.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| Resource | resources/libraries/robot/l2/tagging.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X520-DA2 | L2XCFWD | BASE | DOT1Q
diff --git a/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-ndrchk.robot b/tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-ndrchk.robot
index 7cd0fc6c43..598d45f6b6 100644
--- a/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-ndrchk.robot
+++ b/tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-ndrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.NodePath
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK
diff --git a/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot b/tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot
index c8410b1451..5234981c14 100644
--- a/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot
+++ b/tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X520-DA2 | ETH | L2BDMACLRN | BASE | L2BDBASE
diff --git a/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-pdrchk.robot b/tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-pdrchk.robot
index 5f87d6527a..58512392f7 100644
--- a/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-pdrchk.robot
+++ b/tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-pdrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.NodePath
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK
diff --git a/tests/perf/10ge2p1x520-eth-l2xcbase-ndrchk.robot b/tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-ndrchk.robot
index 451a319422..13a2b7577f 100644
--- a/tests/perf/10ge2p1x520-eth-l2xcbase-ndrchk.robot
+++ b/tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-ndrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.InterfaceUtil
| Library | resources.libraries.python.NodePath
| ...
diff --git a/tests/perf/10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot b/tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot
index 13f7b12111..4c0e0a18b2 100644
--- a/tests/perf/10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot
+++ b/tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.InterfaceUtil
| Library | resources.libraries.python.NodePath
| ...
diff --git a/tests/perf/10ge2p1x520-eth-l2xcbase-pdrchk.robot b/tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-pdrchk.robot
index c3dc22d078..72589f6ca1 100644
--- a/tests/perf/10ge2p1x520-eth-l2xcbase-pdrchk.robot
+++ b/tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-pdrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.InterfaceUtil
| Library | resources.libraries.python.NodePath
| ...
diff --git a/tests/perf/10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot b/tests/vpp/perf/l2/10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot
index 033414fa06..166e1c7a4f 100644
--- a/tests/perf/10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot
+++ b/tests/vpp/perf/l2/10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE
diff --git a/tests/perf/40ge2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot b/tests/vpp/perf/l2/40ge2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot
index 3cc908ad3d..6d39fc169a 100644
--- a/tests/perf/40ge2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot
+++ b/tests/vpp/perf/l2/40ge2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.NodePath
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
diff --git a/tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot b/tests/vpp/perf/l2/40ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot
index 96be5d2940..595bc029ce 100644
--- a/tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot
+++ b/tests/vpp/perf/l2/40ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.NodePath
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
diff --git a/tests/perf/40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot b/tests/vpp/perf/l2/40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot
index 67eb34732f..4c6f279e8d 100644
--- a/tests/perf/40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot
+++ b/tests/vpp/perf/l2/40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.InterfaceUtil
| Library | resources.libraries.python.NodePath
| ...
diff --git a/tests/perf/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
index 084be2df71..9b88f7f2d1 100644
--- a/tests/perf/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
+++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.QemuUtils
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
diff --git a/tests/perf/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk.robot
index adb8243da4..bab866795a 100644
--- a/tests/perf/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk.robot
+++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.QemuUtils
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK
diff --git a/tests/perf/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot
index 1ff0708fff..258ebbbe57 100644
--- a/tests/perf/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot
+++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.NodePath
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
diff --git a/tests/perf/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk.robot
index 58a648a485..68b11c8348 100644
--- a/tests/perf/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk.robot
+++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.QemuUtils
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK
diff --git a/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
index 494bebf5cd..6bb145325a 100644
--- a/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
+++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.QemuUtils
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
diff --git a/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot
index de06640856..ade616825a 100644
--- a/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot
+++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.QemuUtils
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
| ... | NIC_Intel-X520-DA2 | ETH | L2BDMACLRN | BASE | VHOST | VM
diff --git a/tests/perf/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot
index 91d8f4a2ab..d231afffb7 100644
--- a/tests/perf/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot
+++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.NodePath
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
diff --git a/tests/perf/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-pdrchk.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-pdrchk.robot
index a244017023..4fb03188bb 100644
--- a/tests/perf/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-pdrchk.robot
+++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-pdrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.QemuUtils
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK
diff --git a/tests/perf/10ge2p1x520-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot
index 2aa6372dd4..ed2635ae02 100644
--- a/tests/perf/10ge2p1x520-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot
+++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.NodePath
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-ndrpdrdisc.robot
index 1fe7806106..0b19414fb5 100644
--- a/tests/perf/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-ndrpdrdisc.robot
+++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.QemuUtils
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-pdrchk.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-pdrchk.robot
index c7cccda093..46a44cb58b 100644
--- a/tests/perf/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-pdrchk.robot
+++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-pdrchk.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.QemuUtils
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK
diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot
index d2604cf00b..5e1c9afca7 100644
--- a/tests/perf/10ge2p1x520-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot
+++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.QemuUtils
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
diff --git a/tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
index 49db34e2b4..b24e0ca3c6 100644
--- a/tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
+++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.QemuUtils
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
diff --git a/tests/perf/10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
index 6618a11186..734b624666 100644
--- a/tests/perf/10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
+++ b/tests/vpp/perf/vm_vhost/10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.QemuUtils
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
diff --git a/tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
index 51b4492980..b16a699e6a 100644
--- a/tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
+++ b/tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.QemuUtils
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
diff --git a/tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot
index 1b701dcee4..c9fc7292b5 100644
--- a/tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot
+++ b/tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.QemuUtils
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
diff --git a/tests/perf/40ge2p1xl710-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot
index decc922af6..7d79bc2e78 100644
--- a/tests/perf/40ge2p1xl710-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot
+++ b/tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.QemuUtils
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC
diff --git a/tests/perf/40ge2p1xl710-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/40ge2p1xl710-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot
index cdfd2b8933..30e68e1f15 100644
--- a/tests/perf/40ge2p1xl710-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot
+++ b/tests/vpp/perf/vm_vhost/40ge2p1xl710-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot
@@ -12,7 +12,7 @@
# limitations under the License.
*** Settings ***
-| Resource | resources/libraries/robot/performance_setup.robot
+| Resource | resources/libraries/robot/performance/performance_setup.robot
| Library | resources.libraries.python.QemuUtils
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC