aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries
diff options
context:
space:
mode:
authorPeter Mikus <pmikus@cisco.com>2020-02-21 22:09:02 +0000
committerPeter Mikus <pmikus@cisco.com>2020-04-06 08:27:39 +0000
commit14a71b74b414df7616ccb5ada3d50ecb90d96bae (patch)
treebfee617c9a4b20ce4c6467ffbbe6c0a15199ba52 /resources/libraries
parent8e601d0f37f715ca4ce55dded8bc27cadfe175c2 (diff)
Improve pf layer
+ Merge single/double link + Introduce _pf{n}[0] variables so we can access physical function same way as virtual function + Cleanup code by moving complex logic to python + Prepare code for multiple vf functions Signed-off-by: Peter Mikus <pmikus@cisco.com> Change-Id: Ic2e74a38bfa146441357de8f0916aeb638941c49
Diffstat (limited to 'resources/libraries')
-rw-r--r--resources/libraries/python/Constants.py11
-rw-r--r--resources/libraries/python/NodePath.py83
-rw-r--r--resources/libraries/python/autogen/Regenerator.py12
-rw-r--r--resources/libraries/robot/crypto/ipsec.robot66
-rw-r--r--resources/libraries/robot/dpdk/default.robot13
-rw-r--r--resources/libraries/robot/features/acl.robot27
-rw-r--r--resources/libraries/robot/features/gbp.robot11
-rw-r--r--resources/libraries/robot/features/policer.robot16
-rw-r--r--resources/libraries/robot/ip/ip4.robot171
-rw-r--r--resources/libraries/robot/ip/ip6.robot113
-rw-r--r--resources/libraries/robot/ip/nat.robot32
-rw-r--r--resources/libraries/robot/l2/l2_bridge_domain.robot340
-rw-r--r--resources/libraries/robot/l2/l2_patch.robot6
-rw-r--r--resources/libraries/robot/l2/l2_xconnect.robot200
-rw-r--r--resources/libraries/robot/lb/load_balancer.robot109
-rw-r--r--resources/libraries/robot/overlay/lisp.robot257
-rw-r--r--resources/libraries/robot/overlay/srv6.robot61
-rw-r--r--resources/libraries/robot/performance/performance_configuration.robot215
-rw-r--r--resources/libraries/robot/shared/container.robot52
-rw-r--r--resources/libraries/robot/shared/default.robot100
-rw-r--r--resources/libraries/robot/shared/interfaces.robot666
-rw-r--r--resources/libraries/robot/shared/suite_setup.robot261
-rw-r--r--resources/libraries/robot/shared/suite_teardown.robot2
-rw-r--r--resources/libraries/robot/shared/test_setup.robot1
-rw-r--r--resources/libraries/robot/shared/testing_path.robot380
-rw-r--r--resources/libraries/robot/shared/vm.robot6
-rw-r--r--resources/libraries/robot/wrk/wrk_utils.robot6
27 files changed, 1446 insertions, 1771 deletions
diff --git a/resources/libraries/python/Constants.py b/resources/libraries/python/Constants.py
index 46993b27ac..0203dc0244 100644
--- a/resources/libraries/python/Constants.py
+++ b/resources/libraries/python/Constants.py
@@ -330,12 +330,11 @@ class Constants:
prefix for prefix in NIC_DRIVER_TO_SUITE_PREFIX.values() if prefix
]
- # Additional step for perf needs to know driver type.
- # Contains part of suite setup line, matching both single and double link.
- NIC_DRIVER_TO_SETUP_ARG = {
- u"vfio-pci": u"le link | performance",
- u"avf": u"le link | performance_avf",
- u"rdma-core": u"le link | performance_rdma",
+ # Number of virtual functions of physical nic.
+ NIC_DRIVER_TO_VFS = {
+ u"vfio-pci": u"nic_vfs}= | 0",
+ u"avf": u"nic_vfs}= | 1",
+ u"rdma-core": u"nic_vfs}= | 0",
}
# TODO CSIT-1481: Crypto HW should be read from topology file instead.
diff --git a/resources/libraries/python/NodePath.py b/resources/libraries/python/NodePath.py
index 6f08be491b..04e8e5ef3c 100644
--- a/resources/libraries/python/NodePath.py
+++ b/resources/libraries/python/NodePath.py
@@ -13,7 +13,7 @@
"""Path utilities library for nodes in the topology."""
-from resources.libraries.python.topology import Topology
+from resources.libraries.python.topology import Topology, NodeType
class NodePath:
@@ -71,16 +71,18 @@ class NodePath:
self._nodes_filter.append(filter_list)
self._nodes.append(node)
- def append_nodes(self, *nodes):
+ def append_nodes(self, *nodes, filter_list=None):
"""Append nodes to the path.
:param nodes: Nodes to append to the path.
+ :param filter_list: Filter criteria list.
:type nodes: dict
+ :type filter_list: list of strings
.. note:: Node order does matter.
"""
for node in nodes:
- self.append_node(node)
+ self.append_node(node, filter_list=filter_list)
def clear_path(self):
"""Clear path."""
@@ -204,3 +206,78 @@ class NodePath:
if not self._path:
raise RuntimeError(u"No path for topology")
return self._path[-2]
+
+ def compute_circular_topology(self, nodes, filter_list=None, nic_pfs=1):
+ """Return computed circular path.
+
+ :param nodes: Nodes to append to the path.
+ :param filter_list: Filter criteria list.
+ :param nic_pfs: Number of PF of NIC.
+ :type nodes: dict
+ :type filter_list: list of strings
+ :type path_count: int
+ :returns: Topology information dictionary.
+ :rtype: dict
+ """
+ t_dict = dict()
+ duts = [key for key in nodes if u"DUT" in key]
+ t_dict[u"duts"] = duts
+ t_dict[u"duts_count"] = len(duts)
+ t_dict[u"int"] = u"pf"
+
+ for idx in range(0, nic_pfs // 2):
+ self.append_node(nodes[u"TG"])
+ for dut in duts:
+ self.append_node(nodes[dut], filter_list=filter_list)
+ self.append_node(nodes[u"TG"])
+ self.compute_path(always_same_link=False)
+
+ n_idx = 0
+ t_idx = 1
+ d_idx = 0
+ while True:
+ interface, node = self.next_interface()
+ if not interface:
+ break
+ if node[u"type"] == u"TG":
+ n_pfx = f"TG"
+ p_pfx = f"pf{t_idx}"
+ i_pfx = f"if{t_idx}"
+ n_idx = 0
+ t_idx = t_idx + 1
+ else:
+ n_pfx = f"DUT{n_idx // 2 + 1}"
+ p_pfx = f"pf{d_idx % 2 + t_idx - 1}"
+ i_pfx = f"if{d_idx % 2 + t_idx - 1}"
+ n_idx = n_idx + 1
+ d_idx = d_idx + 1
+
+ t_dict[f"{n_pfx}"] = node
+ t_dict[f"{n_pfx}_{p_pfx}"] = [interface]
+ t_dict[f"{n_pfx}_{p_pfx}_mac"] = \
+ [Topology.get_interface_mac(node, interface)]
+ t_dict[f"{n_pfx}_{p_pfx}_vlan"] = \
+ [Topology.get_interface_vlan(node, interface)]
+ t_dict[f"{n_pfx}_{p_pfx}_pci"] = \
+ [Topology.get_interface_pci_addr(node, interface)]
+ t_dict[f"{n_pfx}_{p_pfx}_ip4_addr"] = \
+ [Topology.get_interface_ip4(node, interface)]
+ t_dict[f"{n_pfx}_{p_pfx}_ip4_prefix"] = \
+ [Topology.get_interface_ip4_prefix_length(node, interface)]
+ if f"{n_pfx}_pf_pci" not in t_dict:
+ t_dict[f"{n_pfx}_pf_pci"] = []
+ t_dict[f"{n_pfx}_pf_pci"].append(
+ Topology.get_interface_pci_addr(node, interface))
+ # Backward compatibility below
+ t_dict[f"{n_pfx.lower()}_{i_pfx}"] = interface
+ t_dict[f"{n_pfx.lower()}_{i_pfx}_mac"] = \
+ Topology.get_interface_mac(node, interface)
+ t_dict[f"{n_pfx.lower()}_{i_pfx}_pci"] = \
+ Topology.get_interface_pci_addr(node, interface)
+ t_dict[f"{n_pfx.lower()}_{i_pfx}_ip4_addr"] = \
+ Topology.get_interface_ip4(node, interface)
+ t_dict[f"{n_pfx.lower()}_{i_pfx}_ip4_prefix"] = \
+ Topology.get_interface_ip4_prefix_length(node, interface)
+
+ self.clear_path()
+ return t_dict
diff --git a/resources/libraries/python/autogen/Regenerator.py b/resources/libraries/python/autogen/Regenerator.py
index 6d6f3f157f..c6038588e6 100644
--- a/resources/libraries/python/autogen/Regenerator.py
+++ b/resources/libraries/python/autogen/Regenerator.py
@@ -273,9 +273,9 @@ def write_default_files(in_filename, in_prolog, kwargs_list):
u"Driver plugin should appear once.", in_filename
)
out_prolog = replace_defensively(
- out_prolog, Constants.NIC_DRIVER_TO_SETUP_ARG[u"vfio-pci"],
- Constants.NIC_DRIVER_TO_SETUP_ARG[driver], 1,
- u"Perf setup argument should appear once.", in_filename
+ out_prolog, Constants.NIC_DRIVER_TO_VFS[u"vfio-pci"],
+ Constants.NIC_DRIVER_TO_VFS[driver], 1,
+ u"NIC VFs argument should appear once.", in_filename
)
iface, suite_id, suite_tag = get_iface_and_suite_ids(
out_filename
@@ -357,9 +357,9 @@ def write_reconf_files(in_filename, in_prolog, kwargs_list):
u"Driver plugin should appear once.", in_filename
)
out_prolog = replace_defensively(
- out_prolog, Constants.NIC_DRIVER_TO_SETUP_ARG[u"vfio-pci"],
- Constants.NIC_DRIVER_TO_SETUP_ARG[driver], 1,
- u"Perf setup argument should appear once.", in_filename
+ out_prolog, Constants.NIC_DRIVER_TO_VFS[u"vfio-pci"],
+ Constants.NIC_DRIVER_TO_VFS[driver], 1,
+ u"NIC VFs argument should appear once.", in_filename
)
iface, suite_id, suite_tag = get_iface_and_suite_ids(out_filename)
out_prolog = replace_defensively(
diff --git a/resources/libraries/robot/crypto/ipsec.robot b/resources/libraries/robot/crypto/ipsec.robot
index 20529dc2e2..f48e4c4573 100644
--- a/resources/libraries/robot/crypto/ipsec.robot
+++ b/resources/libraries/robot/crypto/ipsec.robot
@@ -1,4 +1,4 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2020 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:
@@ -46,16 +46,6 @@
| | Set Test Variable | ${encr_key}
| | Set Test Variable | ${auth_key}
-| Configure path for IPSec test
-| | [Documentation] | Setup path for IPsec testing TG<-->DUT1.
-| |
-| | ... | *Example:*
-| | ... | \| Configure path for IPSec test \|
-| |
-| | Set Interface State | ${dut1} | ${dut1_if1} | up
-| | Set Interface State | ${dut1} | ${dut1_if2} | up
-| | Vpp Node Interfaces Ready Wait | ${dut1}
-
| Configure topology for IPv4 IPsec testing
| | [Documentation] | Setup topology for IPv4 IPsec testing.
| |
@@ -68,18 +58,18 @@
| | ... | *Example:*
| | ... | \| Configure topology for IPv4 IPsec testing \|
| |
-| | Configure path for IPSec test
+| | Set interfaces in path up
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if1} | ${dut_if1_ip4} | ${ip4_plen}
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${dut_if1_ip4} | ${ip4_plen}
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if2} | ${dut_if2_ip4} | ${ip4_plen}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut_if2_ip4} | ${ip4_plen}
| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if1} | ${tg_if1_ip4} | ${tg_if1_mac}
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${tg_if1_ip4} | ${TG_pf1_mac}[0]
| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | ${tg_if2_ip4} | ${tg_if2_mac}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${tg_if2_ip4} | ${TG_pf2_mac}[0]
| | Vpp Route Add
| | ... | ${dut1} | ${tg_host_ip4} | ${ip4_plen} | gateway=${tg_if1_ip4}
-| | ... | interface=${dut1_if1}
+| | ... | interface=${DUT1_${int}1}[0]
| | Set Test Variable | ${dut_tun_ip} | ${dut_if1_ip4}
| | Set Test Variable | ${tg_tun_ip} | ${tg_if1_ip4}
| | Set Test Variable | ${tg_src_ip} | ${tg_host_ip4}
@@ -97,19 +87,19 @@
| | ... | *Example:*
| | ... | \| Configure topology for IPv6 IPsec testing \|
| |
-| | Configure path for IPSec test
+| | Set interfaces in path up
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if1} | ${dut_if1_ip6} | ${ip6_plen}
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${dut_if1_ip6} | ${ip6_plen}
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if2} | ${dut_if2_ip6} | ${ip6_plen}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut_if2_ip6} | ${ip6_plen}
| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if1} | ${tg_if1_ip6} | ${tg_if1_mac}
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${tg_if1_ip6} | ${TG_pf1_mac}[0]
| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | ${tg_if2_ip6} | ${tg_if2_mac}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${tg_if2_ip6} | ${TG_pf2_mac}[0]
| | Vpp All RA Suppress Link Layer | ${nodes}
| | Vpp Route Add
| | ... | ${dut1} | ${tg_host_ip6} | ${ip6_plen_rt} | gateway=${tg_if1_ip6}
-| | ... | interface=${dut1_if1}
+| | ... | interface=${DUT1_${int}1}[0]
| | Set Test Variable | ${dut_tun_ip} | ${dut_if1_ip6}
| | Set Test Variable | ${tg_tun_ip} | ${tg_if1_ip6}
| | Set Test Variable | ${tg_src_ip} | ${tg_host_ip6}
@@ -187,16 +177,18 @@
| | ... | address.
| |
| | Set interfaces in path up
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1}
-| | ... | ${dut1_if1_ip4} | 24
-| | VPP Interface Set IP Address | ${dut2} | ${dut2_if2}
-| | ... | ${dut2_if2_ip4} | 24
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | ${tg_if1_ip4} | ${tg_if1_mac}
-| | VPP Add IP Neighbor | ${dut2} | ${dut2_if2} | ${tg_if2_ip4} | ${tg_if2_mac}
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${dut1_if1_ip4} | 24
+| | VPP Interface Set IP Address
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | ${dut2_if2_ip4} | 24
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${tg_if1_ip4} | ${TG_pf1_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | ${tg_if2_ip4} | ${TG_pf2_mac}[0]
| | Vpp Route Add | ${dut1} | ${laddr_ip4} | 8 | gateway=${tg_if1_ip4}
-| | ... | interface=${dut1_if1}
+| | ... | interface=${DUT1_${int}1}[0]
| | Vpp Route Add | ${dut2} | ${raddr_ip4} | 8 | gateway=${tg_if2_ip4}
-| | ... | interface=${dut2_if2}
+| | ... | interface=${DUT2_${int}2}[0]
| Initialize IPSec in 3-node circular container topology
| | [Documentation]
@@ -208,8 +200,10 @@
| | ... | address.
| |
| | Set interfaces in path up on DUT | DUT1
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1}
-| | ... | ${dut1_if1_ip4} | 24
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | ${tg_if1_ip4} | ${tg_if1_mac}
-| | Vpp Route Add | ${dut1} | ${laddr_ip4} | 8 | gateway=${tg_if1_ip4}
-| | ... | interface=${dut1_if1}
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${dut1_if1_ip4} | 24
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${tg_if1_ip4} | ${TG_pf1}[0]
+| | Vpp Route Add
+| | ... | ${dut1} | ${laddr_ip4} | 8 | gateway=${tg_if1_ip4}
+| | ... | interface=${DUT1_${int}1}[0]
diff --git a/resources/libraries/robot/dpdk/default.robot b/resources/libraries/robot/dpdk/default.robot
index cd5318c77a..021f73d8c3 100644
--- a/resources/libraries/robot/dpdk/default.robot
+++ b/resources/libraries/robot/dpdk/default.robot
@@ -37,10 +37,9 @@
| | ${cpu_count_int} | Convert to Integer | ${phy_cores}
| | ${thr_count_int} | Convert to Integer | ${phy_cores}
| | ${dp_cores}= | Evaluate | ${cpu_count_int}+1
-| | ${duts}= | Get Matches | ${nodes} | DUT*
| | FOR | ${dut} | IN | @{duts}
| | | ${numa}= | Get interfaces numa node | ${nodes['${dut}']}
-| | | ... | ${${dut}_if1} | ${${dut}_if2}
+| | | ... | ${${dut}_pf1}[0] | ${${dut}_pf2}[0]
| | | ${smt_used}= | Is SMT enabled | ${nodes['${dut}']['cpuinfo']}
| | | ${cpus}= | Cpu Range Per Node Str | ${nodes['${dut}']} | ${numa}
| | | ... | skip_cnt=${1} | cpu_cnt=${dp_cores} | smt_used=${smt_used}
@@ -79,10 +78,9 @@
| | ${cpu_count_int} | Convert to Integer | ${phy_cores}
| | ${thr_count_int} | Convert to Integer | ${phy_cores}
| | ${dp_cores}= | Evaluate | ${cpu_count_int}+1
-| | ${duts}= | Get Matches | ${nodes} | DUT*
| | FOR | ${dut} | IN | @{duts}
| | | ${numa}= | Get interfaces numa node | ${nodes['${dut}']}
-| | | ... | ${${dut}_if1} | ${${dut}_if2}
+| | | ... | ${${dut}_pf1}[0] | ${${dut}_pf2}[0]
| | | ${smt_used}= | Is SMT enabled | ${nodes['${dut}']['cpuinfo']}
| | | ${cpus}= | Cpu List Per Node Str | ${nodes['${dut}']} | ${numa}
| | | ... | skip_cnt=${1} | cpu_cnt=${cpu_count_int} | smt_used=${smt_used}
@@ -95,9 +93,10 @@
| | | ${rxq_count_int}= | Run keyword if | ${rxq_count_int} == 0
| | | ... | Set variable | ${1}
| | | ... | ELSE | Set variable | ${rxq_count_int}
-| | | Start the l3fwd test | ${nodes} | ${nodes['${dut}']} | ${${dut}_if1}
-| | | ... | ${${dut}_if2} | ${thr_count_int} | ${cpus} | ${rxq_count_int}
-| | | ... | ${jumbo_frames}
+| | | Start the l3fwd test
+| | | ... | ${nodes} | ${nodes['${dut}']}
+| | | ... | ${${dut}_pf1}[0] | ${${dut}_pf2}[0]
+| | | ... | ${thr_count_int} | ${cpus} | ${rxq_count_int} | ${jumbo_frames}
| | | Run keyword if | ${thr_count_int} > 1
| | | ... | Set Tags | MTHREAD | ELSE | Set Tags | STHREAD
| | | Set Tags | ${thr_count_int}T${cpu_count_int}C
diff --git a/resources/libraries/robot/features/acl.robot b/resources/libraries/robot/features/acl.robot
index ae613e1812..8621562b22 100644
--- a/resources/libraries/robot/features/acl.robot
+++ b/resources/libraries/robot/features/acl.robot
@@ -1,4 +1,4 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2020 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:
@@ -259,40 +259,41 @@
| | ... | Set Variable | ${dut2}
| | ... | ELSE | Set Variable | ${dut1}
| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Set Variable | ${dut2_if2}
-| | ... | ELSE | Set Variable | ${dut1_if2}
+| | ... | Set Variable | ${DUT2_${int}2}[0]
+| | ... | ELSE | Set Variable | ${DUT1_${int}2}[0]
| |
| | Set interfaces in path up
| |
| | FOR | ${number} | IN RANGE | 2 | ${ip_nr}+2
| | | VPP Add IP Neighbor
-| | | ... | ${dut1} | ${dut1_if1} | 10.10.10.${number} | ${tg_if1_mac}
+| | | ... | ${dut1} | ${DUT1_${int}1}[0] | 10.10.10.${number} | ${TG_pf1_mac}[0]
| | | VPP Add IP Neighbor
-| | | ... | ${dut} | ${dut_if2} | 20.20.20.${number} | ${tg_if2_mac}
+| | | ... | ${dut} | ${dut_if2} | 20.20.20.${number} | ${TG_pf2_mac}[0]
| | END
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | 1.1.1.2 | ${dut2_if1_mac}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 1.1.1.2 | ${DUT2_${int}1_mac}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Add IP Neighbor
-| | ... | ${dut2} | ${dut2_if1} | 1.1.1.1 | ${dut1_if2_mac}
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | 1.1.1.1 | ${DUT1_${int}2_mac}[0]
| |
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if1} | 10.10.10.1 | 24
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 10.10.10.1 | 24
| | VPP Interface Set IP Address
| | ... | ${dut} | ${dut_if2} | 20.20.20.1 | 24
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if2} | 1.1.1.1 | 30
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 1.1.1.1 | 30
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Interface Set IP Address
-| | ... | ${dut2} | ${dut2_if1} | 1.1.1.2 | 30
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | 1.1.1.2 | 30
| |
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | gateway=1.1.1.2
-| | ... | interface=${dut1_if2}
+| | ... | interface=${DUT1_${int}2}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | gateway=1.1.1.1
-| | ... | interface=${dut2_if1}
+| | ... | interface=${DUT2_${int}1}[0]
| |
-| | Configure IPv4 ACLs | ${dut1} | ${dut1_if1} | ${dut1_if2}
+| | Configure IPv4 ACLs
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${DUT1_${int}2}[0]
diff --git a/resources/libraries/robot/features/gbp.robot b/resources/libraries/robot/features/gbp.robot
index 57ddf6dd1a..fc1c9faba4 100644
--- a/resources/libraries/robot/features/gbp.robot
+++ b/resources/libraries/robot/features/gbp.robot
@@ -1,4 +1,4 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2020 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:
@@ -31,7 +31,6 @@
| |
| | [Arguments] | ${dut} | ${count}=${1}
| |
-| | ${dut_str}= | Convert To Lowercase | ${dut}
| | FOR | ${id} | IN RANGE | 1 | ${count} + 1
| | | ${hexa_id}= | Convert To Hex | ${id} | length=2 | lowercase=yes
| | | ${dut_lo}= | VPP Create Loopback | ${nodes['${dut}']}
@@ -57,11 +56,11 @@
| | | GBP Ext Itf Add Del
| | | ... | ${nodes['${dut}']} | ${dut_lo} | bd_id=${id} | rd_id=${id}
| | | GBP Endpoint Add
-| | | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_${id}_1} | 1.1.1.100
-| | | ... | ${tg_if1_mac} | ${100}
+| | | ... | ${nodes['${dut}']} | ${${dut}_${int}1_${id}}[0]
+| | | ... | 1.1.1.100 | ${TG_pf1_mac}[0] | ${100}
| | | GBP Endpoint Add
-| | | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_${id}_2} | 1.1.1.200
-| | | ... | ${tg_if2_mac} | ${100}
+| | | ... | ${nodes['${dut}']} | ${${dut}_${int}2_${id}}[0]
+| | | ... | 1.1.1.200 | ${TG_pf2_mac}[0] | ${100}
| | | VPP Route Add
| | | ... | ${nodes['${dut}']} | 10.10.10.0 | 24 | gateway=1.1.1.100
| | | ... | interface=${dut_lo} | vrf=${1}
diff --git a/resources/libraries/robot/features/policer.robot b/resources/libraries/robot/features/policer.robot
index bbabdd7632..a9394d6c9f 100644
--- a/resources/libraries/robot/features/policer.robot
+++ b/resources/libraries/robot/features/policer.robot
@@ -1,4 +1,4 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2020 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:
@@ -33,7 +33,8 @@
| | Vpp Configures Classify Session L3 | ${dut1} | permit | ${table_idx}
| | ... | ${skip_n} | ${match_n} | ip4 | dst | 20.20.20.2
| | ... | hit_next_index=${policer_index} | opaque_index=${pre_color}
-| | Policer Classify Set Interface | ${dut1} | ${dut1_if1}
+| | Policer Classify Set Interface
+| | ... | ${dut1} | ${DUT1_${int}1}[0]
| | ... | ip4_table_index=${table_idx}
| |
| | ${dut2_status} | ${value}= | Run Keyword And Ignore Error
@@ -42,8 +43,8 @@
| | ... | Set Variable | ${dut2}
| | ... | ELSE | Set Variable | ${dut1}
| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Set Variable | ${dut2_if2}
-| | ... | ELSE | Set Variable | ${dut1_if2}
+| | ... | Set Variable | ${DUT2_${int}2}[0]
+| | ... | ELSE | Set Variable | ${DUT1_${int}2}[0]
| |
| | ${policer_index}= | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Policer Set Configuration | ${dut} | policer2 | ${cir}
@@ -75,7 +76,7 @@
| | Vpp Configures Classify Session L3 | ${dut1} | permit | ${table_idx}
| | ... | ${skip_n} | ${match_n} | ip6 | dst | 2001:2::2
| | ... | hit_next_index=${policer_index} | opaque_index=${pre_color}
-| | Policer Classify Set Interface | ${dut1} | ${dut1_if1}
+| | Policer Classify Set Interface | ${dut1} | ${DUT1_${int}1}[0]
| | ... | ip6_table_index=${table_idx}
| |
| | ${dut2_status} | ${value}= | Run Keyword And Ignore Error
@@ -84,8 +85,8 @@
| | ... | Set Variable | ${dut2}
| | ... | ELSE | Set Variable | ${dut1}
| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Set Variable | ${dut2_if2}
-| | ... | ELSE | Set Variable | ${dut1_if2}
+| | ... | Set Variable | ${DUT2_${int}2}[0]
+| | ... | ELSE | Set Variable | ${DUT1_${int}2}[0]
| |
| | ${policer_index}= | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Policer Set Configuration | ${dut} | policer2 | ${cir}
@@ -115,7 +116,6 @@
| |
| | [Arguments] | ${nodes}
| |
-| | ${duts}= | Get Matches | ${nodes} | DUT*
| | FOR | ${dut} | IN | @{duts}
| | | Show Classify Tables Verbose | ${nodes['${dut}']}
| | END
diff --git a/resources/libraries/robot/ip/ip4.robot b/resources/libraries/robot/ip/ip4.robot
index 961c0b3c43..192a136b79 100644
--- a/resources/libraries/robot/ip/ip4.robot
+++ b/resources/libraries/robot/ip/ip4.robot
@@ -1,4 +1,4 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2020 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:
@@ -45,53 +45,55 @@
| |
| | Set interfaces in path up
| |
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 10.10.10.2 | ${tg_if1_mac}
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 10.10.10.2 | ${TG_pf1_mac}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | 1.1.1.2 | ${dut2_if1_mac}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 1.1.1.2 | ${DUT2_${int}1_mac}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Add IP Neighbor
-| | ... | ${dut2} | ${dut2_if1} | 1.1.1.1 | ${dut1_if2_mac}
+| | ... | ${dut2} | ${DUT2_${int}1_mac}[0] | 1.1.1.1 | ${DUT1_${int}2_mac}[0]
| | ${dut}= | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Set Variable | ${dut2}
| | ... | ELSE | Set Variable | ${dut1}
| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Set Variable | ${dut2_if2}
-| | ... | ELSE | Set Variable | ${dut1_if2}
-| | VPP Add IP Neighbor | ${dut} | ${dut_if2} | 20.20.20.2 | ${tg_if2_mac}
+| | ... | Set Variable | ${DUT2_${int}2}[0]
+| | ... | ELSE | Set Variable | ${DUT1_${int}2}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut} | ${dut_if2} | 20.20.20.2 | ${TG_pf2_mac}[0]
| |
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1}
+| | VPP Interface Set IP Address | ${dut1} | ${DUT1_${int}1}[0]
| | ... | 10.10.10.1 | 24
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | VPP Interface Set IP Address | ${dut1} | ${dut1_if2}
+| | ... | VPP Interface Set IP Address | ${dut1} | ${DUT1_${int}2}[0]
| | ... | 1.1.1.1 | 30
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | VPP Interface Set IP Address | ${dut2} | ${dut2_if1}
+| | ... | VPP Interface Set IP Address | ${dut2} | ${DUT2_${int}1}[0]
| | ... | 1.1.1.2 | 30
| | VPP Interface Set IP Address | ${dut} | ${dut_if2}
| | ... | 20.20.20.1 | 24
| |
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | gateway=1.1.1.2
-| | ... | interface=${dut1_if2}
+| | ... | interface=${DUT1_${int}2}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | gateway=1.1.1.1
-| | ... | interface=${dut2_if1}
+| | ... | interface=${DUT2_${int}1}[0]
| |
| | Run Keyword Unless | '${remote_host1_ip}' == '${NONE}'
| | ... | Vpp Route Add | ${dut1} | ${remote_host1_ip} | 32
-| | ... | gateway=10.10.10.2 | interface=${dut1_if1}
+| | ... | gateway=10.10.10.2 | interface=${DUT1_${int}1}[0]
| | Run Keyword Unless | '${remote_host2_ip}' == '${NONE}'
| | ... | Vpp Route Add | ${dut} | ${remote_host2_ip} | 32
| | ... | gateway=20.20.20.2 | interface=${dut_if2}
| | Run Keyword Unless | '${remote_host1_ip}' == '${NONE}'
| | ... | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Vpp Route Add | ${dut1} | ${remote_host1_ip} | 32
-| | ... | gateway=1.1.1.2 | interface=${dut1_if2}
+| | ... | gateway=1.1.1.2 | interface=${DUT1_${int}2}[0]
| | Run Keyword Unless | '${remote_host2_ip}' == '${NONE}'
| | ... | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Vpp Route Add | ${dut2} | ${remote_host2_ip} | 32
-| | ... | gateway=1.1.1.1 | interface=${dut2_if1}
+| | ... | gateway=1.1.1.1 | interface=${DUT2_${int}1}[0]
| Initialize IPv4 forwarding with scaling in circular topology
| | [Documentation]
@@ -116,36 +118,39 @@
| |
| | Set interfaces in path up
| |
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 1.1.1.1 | ${tg_if1_mac}
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 1.1.1.1 | ${TG_pf1_mac}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | 2.2.2.2 | ${dut2_if1_mac}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 2.2.2.2 | ${DUT2_${int}1}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Add IP Neighbor
-| | ... | ${dut2} | ${dut2_if1} | 2.2.2.1 | ${dut1_if2_mac}
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | 2.2.2.1 | ${DUT1_${int}2_mac}[0]
| | ${dut}= | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Set Variable | ${dut2}
| | ... | ELSE | Set Variable | ${dut1}
| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Set Variable | ${dut2_if2}
-| | ... | ELSE | Set Variable | ${dut1_if2}
-| | VPP Add IP Neighbor | ${dut} | ${dut_if2} | 3.3.3.1 | ${tg_if2_mac}
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1} | 1.1.1.2 | 30
+| | ... | Set Variable | ${DUT2_${int}2}[0]
+| | ... | ELSE | Set Variable | ${DUT1_${int}2}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut} | ${dut_if2} | 3.3.3.1 | ${TG_pf2_mac}[0]
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 1.1.1.2 | 30
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | VPP Interface Set IP Address | ${dut1} | ${dut1_if2} | 2.2.2.1
+| | ... | VPP Interface Set IP Address | ${dut1} | ${DUT1_${int}2}[0] | 2.2.2.1
| | ... | 30
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | VPP Interface Set IP Address | ${dut2} | ${dut2_if1} | 2.2.2.2
+| | ... | VPP Interface Set IP Address | ${dut2} | ${DUT2_${int}1}[0] | 2.2.2.2
| | ... | 30
| | VPP Interface Set IP Address | ${dut} | ${dut_if2} | 3.3.3.2 | 30
| | Vpp Route Add | ${dut1} | 10.0.0.0 | 32 | gateway=1.1.1.1
-| | ... | interface=${dut1_if1} | count=${count}
+| | ... | interface=${DUT1_${int}1}[0] | count=${count}
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Vpp Route Add | ${dut1} | 20.0.0.0 | 32 | gateway=2.2.2.2
-| | ... | interface=${dut1_if2} | count=${count}
+| | ... | interface=${DUT1_${int}2}[0] | count=${count}
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Vpp Route Add | ${dut2} | 10.0.0.0 | 32 | gateway=2.2.2.1
-| | ... | interface=${dut2_if1} | count=${count}
+| | ... | interface=${DUT2_${int}1}[0] | count=${count}
| | Vpp Route Add | ${dut} | 20.0.0.0 | 32 | gateway=3.3.3.1
| | ... | interface=${dut_if2} | count=${count}
@@ -206,21 +211,22 @@
| | ... | ${ip_base_if1}.${ip_base_if1}.${ip_base_if1}
| | Vpp Route Add | ${nodes['${dut}']} | ${tg_if1_net} | 24
| | ... | vrf=${fib_table_1} | gateway=${ip_net_if1}.1
-| | ... | interface=${${dut}_if1} | multipath=${TRUE}
-| | Assign Interface To Fib Table | ${nodes['${dut}']} | ${${dut}_if1}
+| | ... | interface=${${dut}_${int}1}[0] | multipath=${TRUE}
+| | Assign Interface To Fib Table | ${nodes['${dut}']} | ${${dut}_${int}1}[0]
| | ... | ${fib_table_1}
-| | VPP Interface Set IP Address | ${nodes['${dut}']} | ${${dut}_if1}
+| | VPP Interface Set IP Address | ${nodes['${dut}']} | ${${dut}_${int}1}[0]
| | ... | ${ip_net_if1}.2 | 30
| | ${prev_node}= | Run Keyword If | ${dut_index} == ${0}
| | ... | Set Variable | TG
| | ... | ELSE | Get From List | ${duts} | ${dut_index-${1}}
| | ${prev_if}= | Run Keyword If | ${dut_index} == ${0}
-| | ... | Set Variable | if1
-| | ... | ELSE | Set Variable | if2
+| | ... | Set Variable | pf1
+| | ... | ELSE | Set Variable | ${int}2
| | ${prev_if_mac}= | Get Interface MAC | ${nodes['${prev_node}']}
-| | ... | ${${prev_node}_${prev_if}}
+| | ... | ${${prev_node}_${prev_if}}[0]
| | VPP Add IP Neighbor
-| | ... | ${nodes['${dut}']} | ${${dut}_if1} | ${ip_net_if1}.1 | ${prev_if_mac}
+| | ... | ${nodes['${dut}']} | ${${dut}_${int}1}[0] | ${ip_net_if1}.1
+| | ... | ${prev_if_mac}
| |
| | ${fib_table_2}= | Evaluate | ${fib_table_1} + ${count}
| | Add Fib Table | ${nodes['${dut}']} | ${fib_table_2}
@@ -229,21 +235,22 @@
| | ... | ${ip_base_if2}.${ip_base_if2}.${ip_base_if2}
| | Vpp Route Add | ${nodes['${dut}']} | ${tg_if2_net} | 24
| | ... | vrf=${fib_table_2} | gateway=${ip_net_if2}.2
-| | ... | interface=${${dut}_if2} | multipath=${TRUE}
-| | Assign Interface To Fib Table | ${nodes['${dut}']} | ${${dut}_if2}
+| | ... | interface=${${dut}_${int}2}[0] | multipath=${TRUE}
+| | Assign Interface To Fib Table | ${nodes['${dut}']} | ${${dut}_${int}2}[0]
| | ... | ${fib_table_2}
-| | VPP Interface Set IP Address | ${nodes['${dut}']} | ${${dut}_if2}
+| | VPP Interface Set IP Address | ${nodes['${dut}']} | ${${dut}_${int}2}[0]
| | ... | ${ip_net_if2}.1 | 30
| | ${next_node}= | Run Keyword If | ${dut_index} == ${last_dut_index}
| | ... | Set Variable | TG
| | ... | ELSE | Get From List | ${duts} | ${dut_index+${1}}
| | ${next_if}= | Run Keyword If | ${dut_index} == ${last_dut_index}
-| | ... | Set Variable | if2
-| | ... | ELSE | Set Variable | if1
+| | ... | Set Variable | pf2
+| | ... | ELSE | Set Variable | ${int}1
| | ${next_if_mac}= | Get Interface MAC | ${nodes['${next_node}']}
-| | ... | ${${next_node}_${next_if}}
+| | ... | ${${next_node}_${next_if}}[0]
| | VPP Add IP Neighbor
-| | ... | ${nodes['${dut}']} | ${${dut}_if2} | ${ip_net_if2}.2 | ${next_if_mac}
+| | ... | ${nodes['${dut}']} | ${${dut}_${int}2}[0] | ${ip_net_if2}.2
+| | ... | ${next_if_mac}
| |
| | ${fib_table_1}= | Evaluate | ${fib_table_1} - ${1}
| | ${ip_base_start}= | Set Variable | ${31}
@@ -327,18 +334,22 @@
| | ${fib_table_2}= | Evaluate | ${fib_table_1}+${nf_nodes}
| | Add Fib Table | ${dut1} | ${fib_table_1}
| | Add Fib Table | ${dut1} | ${fib_table_2}
-| | Assign Interface To Fib Table | ${dut1} | ${dut1_if1} | ${fib_table_1}
-| | Assign Interface To Fib Table | ${dut1} | ${dut1_if2} | ${fib_table_2}
+| | Assign Interface To Fib Table
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${fib_table_1}
+| | Assign Interface To Fib Table
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${fib_table_2}
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if1} | 100.0.0.1 | 30
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 100.0.0.1 | 30
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if2} | 200.0.0.1 | 30
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 100.0.0.2 | ${tg_if1_mac}
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if2} | 200.0.0.2 | ${tg_if2_mac}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 200.0.0.1 | 30
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 100.0.0.2 | ${TG_pf1_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 200.0.0.2 | ${TG_pf2_mac}[0]
| | Vpp Route Add | ${dut1} | 10.0.0.0 | 8 | gateway=100.0.0.2
-| | ... | interface=${dut1_if1} | vrf=${fib_table_1}
+| | ... | interface=${DUT1_${int}1}[0] | vrf=${fib_table_1}
| | Vpp Route Add | ${dut1} | 20.0.0.0 | 8 | gateway=200.0.0.2
-| | ... | interface=${dut1_if2} | vrf=${fib_table_2}
+| | ... | interface=${DUT1_${int}2}[0] | vrf=${fib_table_2}
| | FOR | ${number} | IN RANGE | 1 | ${nf_nodes}+1
| | | ${fib_table_1}= | Evaluate | ${100}+${number}
| | | ${fib_table_2}= | Evaluate | ${fib_table_1}+${1}
@@ -410,28 +421,34 @@
| | Add Fib Table | ${dut1} | ${fib_table_2}
| | Add Fib Table | ${dut2} | ${fib_table_1}
| | Add Fib Table | ${dut2} | ${fib_table_2}
-| | Assign Interface To Fib Table | ${dut1} | ${dut1_if1} | ${fib_table_1}
-| | Assign Interface To Fib Table | ${dut1} | ${dut1_if2} | ${fib_table_2}
-| | Assign Interface To Fib Table | ${dut2} | ${dut2_if1} | ${fib_table_1}
-| | Assign Interface To Fib Table | ${dut2} | ${dut2_if2} | ${fib_table_2}
+| | Assign Interface To Fib Table
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${fib_table_1}
+| | Assign Interface To Fib Table
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${fib_table_2}
+| | Assign Interface To Fib Table
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | ${fib_table_1}
+| | Assign Interface To Fib Table
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | ${fib_table_2}
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if1} | 100.0.0.1 | 30
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 100.0.0.1 | 30
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if2} | 150.0.0.1 | 30
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 150.0.0.1 | 30
| | VPP Interface Set IP Address
-| | ... | ${dut2} | ${dut2_if1} | 150.0.0.2 | 30
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | 150.0.0.2 | 30
| | VPP Interface Set IP Address
-| | ... | ${dut2} | ${dut2_if2} | 200.0.0.1 | 30
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 100.0.0.2 | ${tg_if1_mac}
-| | VPP Add IP Neighbor | ${dut2} | ${dut2_if2} | 200.0.0.2 | ${tg_if2_mac}
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | 200.0.0.1 | 30
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 100.0.0.2 | ${TG_pf1_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | 200.0.0.2 | ${TG_pf2_mac}[0]
| | Vpp Route Add | ${dut1} | 10.0.0.0 | 8 | gateway=100.0.0.2
-| | ... | interface=${dut1_if1} | vrf=${fib_table_1}
+| | ... | interface=${DUT1_${int}1}[0] | vrf=${fib_table_1}
| | Vpp Route Add | ${dut1} | 20.0.0.0 | 8 | gateway=150.0.0.2
-| | ... | interface=${dut1_if2} | vrf=${fib_table_2}
+| | ... | interface=${DUT1_${int}2}[0] | vrf=${fib_table_2}
| | Vpp Route Add | ${dut2} | 10.0.0.0 | 8 | gateway=150.0.0.1
-| | ... | interface=${dut2_if1} | vrf=${fib_table_1}
+| | ... | interface=${DUT2_${int}1}[0] | vrf=${fib_table_1}
| | Vpp Route Add | ${dut2} | 20.0.0.0 | 8 | gateway=200.0.0.2
-| | ... | interface=${dut2_if2} | vrf=${fib_table_2}
+| | ... | interface=${DUT2_${int}2}[0] | vrf=${fib_table_2}
| | FOR | ${number} | IN RANGE | 1 | ${nf_nodes}+1
| | | ${fib_table_1}= | Evaluate | ${100}+${number}
| | | ${fib_table_2}= | Evaluate | ${fib_table_1}+${1}
@@ -543,39 +560,45 @@
| |
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Initialize VLAN dot1q sub-interfaces in circular topology
-| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid}
+| | ... | ${dut1} | ${DUT1_${int}2}[0]
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | SUB_ID=${subid}
| | ... | ELSE | Initialize VLAN dot1q sub-interfaces in circular topology
-| | ... | ${dut1} | ${dut1_if2} | SUB_ID=${subid}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | SUB_ID=${subid}
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Configure L2 tag rewrite method on interfaces | ${dut1}
-| | ... | ${subif_index_1} | ${dut2} | ${subif_index_2} | ${tag_rewrite}
+| | ... | Configure L2 tag rewrite method on interfaces
+| | ... | ${dut1} | ${subif_index_1}
+| | ... | ${dut2} | ${subif_index_2} | TAG_REWRITE_METHOD=${tag_rewrite}
| | ... | ELSE | Configure L2 tag rewrite method on interfaces
| | ... | ${dut1} | ${subif_index_1} | TAG_REWRITE_METHOD=${tag_rewrite}
| |
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 1.1.1.1 | ${tg_if1_mac}
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 1.1.1.1 | ${TG_pf1_mac}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Add IP Neighbor
-| | ... | ${dut1} | ${subif_index_1} | 2.2.2.2 | ${dut2_if1_mac}
+| | ... | ${dut1} | ${subif_index_1} | 2.2.2.2 | ${DUT2_${int}1_mac}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Add IP Neighbor
-| | ... | ${dut2} | ${subif_index_2} | 2.2.2.1 | ${dut1_if2_mac}
+| | ... | ${dut2} | ${subif_index_2} | 2.2.2.1 | ${DUT1_${int}2_mac}[0]
| | ${dut}= | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Set Variable | ${dut2}
| | ... | ELSE | Set Variable | ${dut1}
| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Set Variable | ${dut2_if2}
| | ... | ELSE | Set Variable | ${subif_index_1}
-| | VPP Add IP Neighbor | ${dut} | ${dut_if2} | 3.3.3.1 | ${tg_if2_mac}
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1} | 1.1.1.2 | 30
+| | VPP Add IP Neighbor
+| | ... | ${dut} | ${dut_if2} | 3.3.3.1 | ${TG_pf2_mac}[0]
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 1.1.1.2 | 30
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Interface Set IP Address | ${dut1} | ${subif_index_1}
| | ... | 2.2.2.1 | 30
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Interface Set IP Address | ${dut2} | ${subif_index_2}
| | ... | 2.2.2.2 | 30
-| | VPP Interface Set IP Address | ${dut} | ${dut_if2} | 3.3.3.2 | 30
+| | VPP Interface Set IP Address
+| | ... | ${dut} | ${dut_if2} | 3.3.3.2 | 30
| | Vpp Route Add | ${dut1} | ${tg_if1_net} | 30 | gateway=1.1.1.1
-| | ... | interface=${dut1_if1}
+| | ... | interface=${DUT1_${int}1}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Vpp Route Add | ${dut1} | ${tg_if2_net} | 30 | gateway=2.2.2.2
| | ... | interface=${subif_index_1}
diff --git a/resources/libraries/robot/ip/ip6.robot b/resources/libraries/robot/ip/ip6.robot
index 715a5dd353..848e08d038 100644
--- a/resources/libraries/robot/ip/ip6.robot
+++ b/resources/libraries/robot/ip/ip6.robot
@@ -1,4 +1,4 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2020 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:
@@ -47,51 +47,57 @@
| |
| | Set interfaces in path up
| |
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 2001:1::2 | ${tg_if1_mac}
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 2001:1::2 | ${TG_pf1_mac}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | 2001:3::1 | ${dut2_if1_mac}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 2001:3::1 | ${DUT2_${int}1_mac}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Add IP Neighbor
-| | ... | ${dut2} | ${dut2_if1} | 2001:3::2 | ${dut1_if2_mac}
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | 2001:3::2 | ${DUT1_${int}2_mac}[0]
| | ${dut}= | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Set Variable | ${dut2}
| | ... | ELSE | Set Variable | ${dut1}
| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Set Variable | ${dut2_if2}
-| | ... | ELSE | Set Variable | ${dut1_if2}
-| | VPP Add IP Neighbor | ${dut} | ${dut_if2} | 2001:2::2 | ${tg_if2_mac}
+| | ... | Set Variable | ${DUT2_${int}2}[0]
+| | ... | ELSE | Set Variable | ${DUT1_${int}2}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut} | ${dut_if2} | 2001:2::2 | ${TG_pf2_mac}[0]
| |
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1} | 2001:1::1 | 64
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 2001:1::1 | 64
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | VPP Interface Set IP Address | ${dut1} | ${dut1_if2} | 2001:3::1 | 64
+| | ... | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 2001:3::1 | 64
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | VPP Interface Set IP Address | ${dut2} | ${dut2_if1} | 2001:3::2 | 64
-| | VPP Interface Set IP Address | ${dut} | ${dut_if2} | 2001:2::1 | 64
+| | ... | VPP Interface Set IP Address
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | 2001:3::2 | 64
+| | VPP Interface Set IP Address
+| | ... | ${dut} | ${dut_if2} | 2001:2::1 | 64
| |
| | Vpp All Ra Suppress Link Layer | ${nodes}
| |
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Vpp Route Add | ${dut1} | 2001:2::0 | 64 | gateway=2001:3::2
-| | ... | interface=${dut1_if2}
+| | ... | interface=${DUT1_${int}2}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Vpp Route Add | ${dut2} | 2001:1::0 | 64 | gateway=2001:3::1
-| | ... | interface=${dut2_if1}
+| | ... | interface=${DUT2_${int}1}[0]
| |
| | Run Keyword Unless | '${remote_host1_ip}' == '${NONE}'
| | ... | Vpp Route Add | ${dut1} | ${remote_host1_ip} | 128
-| | ... | gateway=2001:1::2 | interface=${dut1_if1}
+| | ... | gateway=2001:1::2 | interface=${DUT1_${int}1}[0]
| | Run Keyword Unless | '${remote_host2_ip}' == '${NONE}'
| | ... | Vpp Route Add | ${dut} | ${remote_host2_ip} | 128
| | ... | gateway=2001:2::2 | interface=${dut_if2}
| | Run Keyword Unless | '${remote_host1_ip}' == '${NONE}'
| | ... | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Vpp Route Add | ${dut1} | ${remote_host1_ip} | 128
-| | ... | gateway=2001:3::2 | interface=${dut1_if2}
+| | ... | gateway=2001:3::2 | interface=${DUT1_${int}2}[0]
| | Run Keyword Unless | '${remote_host2_ip}' == '${NONE}'
| | ... | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Vpp Route Add | ${dut2} | ${remote_host2_ip} | 128
-| | ... | gateway=2001:3::1 | interface=${dut2_if1}
+| | ... | gateway=2001:3::1 | interface=${DUT2_${int}1}[0]
| Initialize IPv6 forwarding with scaling in circular topology
| | [Documentation]
@@ -118,37 +124,41 @@
| |
| | ${prefix}= | Set Variable | 64
| | ${host_prefix}= | Set Variable | 128
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1} | 2001:3::1 | ${prefix}
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 2001:3::1 | ${prefix}
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if2} | 2001:4::1 | ${prefix}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 2001:4::1 | ${prefix}
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Interface Set IP Address
-| | ... | ${dut2} | ${dut2_if1} | 2001:4::2 | ${prefix}
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | 2001:4::2 | ${prefix}
| | ${dut}= | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Set Variable | ${dut2}
| | ... | ELSE | Set Variable | ${dut1}
| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Set Variable | ${dut2_if2}
-| | ... | ELSE | Set Variable | ${dut1_if2}
-| | VPP Interface Set IP Address | ${dut} | ${dut_if2} | 2001:5::1 | ${prefix}
+| | ... | Set Variable | ${DUT2_${int}2}[0]
+| | ... | ELSE | Set Variable | ${DUT1_${int}2}[0]
+| | VPP Interface Set IP Address
+| | ... | ${dut} | ${dut_if2} | 2001:5::1 | ${prefix}
| | Vpp All Ra Suppress Link Layer | ${nodes}
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 2001:3::2 | ${tg_if1_mac}
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 2001:3::2 | ${TG_pf1_mac}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Add Ip Neighbor
-| | ... | ${dut1} | ${dut1_if2} | 2001:4::2 | ${dut2_if1_mac}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 2001:4::2 | ${DUT2_${int}1_mac}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Add Ip Neighbor
-| | ... | ${dut2} | ${dut2_if1} | 2001:4::1 | ${dut1_if2_mac}
-| | VPP Add IP Neighbor | ${dut} | ${dut_if2} | 2001:5::2 | ${tg_if2_mac}
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | 2001:4::1 | ${DUT1_${int}2_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut} | ${dut_if2} | 2001:5::2 | ${TG_pf2_mac}[0]
| | Vpp Route Add | ${dut1} | 2001:1::0 | ${host_prefix} | gateway=2001:3::2
-| | ... | interface=${dut1_if1} | count=${count}
+| | ... | interface=${DUT1_${int}1}[0] | count=${count}
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Vpp Route Add | ${dut1} | 2001:2::0 | ${host_prefix}
-| | ... | gateway=2001:4::2 | interface=${dut1_if2} | count=${count}
+| | ... | gateway=2001:4::2 | interface=${DUT1_${int}2}[0] | count=${count}
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Vpp Route Add | ${dut2} | 2001:1::0 | ${host_prefix}
-| | ... | gateway=2001:4::1 | interface=${dut2_if1} | count=${count}
+| | ... | gateway=2001:4::1 | interface=${DUT2_${int}1}[0] | count=${count}
| | Vpp Route Add | ${dut} | 2001:2::0 | ${host_prefix} | gateway=2001:5::2
| | ... | interface=${dut_if2} | count=${count}
@@ -185,16 +195,22 @@
| | ${fib_table_2}= | Evaluate | ${fib_table_1}+${nf_nodes}
| | Add Fib Table | ${dut1} | ${fib_table_1} | ipv6=${True}
| | Add Fib Table | ${dut1} | ${fib_table_2} | ipv6=${True}
-| | Assign Interface To Fib Table | ${dut1} | ${dut1_if1} | ${fib_table_1}
+| | Assign Interface To Fib Table
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${fib_table_1}
| | ... | ipv6=${True}
-| | Assign Interface To Fib Table | ${dut1} | ${dut1_if2} | ${fib_table_2}
+| | Assign Interface To Fib Table
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${fib_table_2}
| | ... | ipv6=${True}
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1} | 2001:100::1
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 2001:100::1
| | ... | ${prefix}
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if2} | 2001:200::1
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 2001:200::1
| | ... | ${prefix}
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 2001:100::2 | ${tg_if1_mac}
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if2} | 2001:200::2 | ${tg_if2_mac}
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 2001:100::2 | ${TG_pf1_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 2001:200::2 | ${TG_pf2_mac}[0]
| | Vpp Route Add | ${dut1} | 2001:1::0 | 64 | gateway=2001:100::2
| | ... | interface=${dut1_if1} | vrf=${fib_table_1}
| | Vpp Route Add | ${dut1} | 2001:2::0 | 64 | gateway=2001:200::2
@@ -263,32 +279,37 @@
| |
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Initialize VLAN dot1q sub-interfaces in circular topology
-| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid}
+| | ... | ${dut1} | ${DUT1_${int}2}[0]
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | SUB_ID=${subid}
| | ... | ELSE | Initialize VLAN dot1q sub-interfaces in circular topology
-| | ... | ${dut1} | ${dut1_if2} | SUB_ID=${subid}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | SUB_ID=${subid}
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Configure L2 tag rewrite method on interfaces | ${dut1}
-| | ... | ${subif_index_1} | ${dut2} | ${subif_index_2} | ${tag_rewrite}
+| | ... | Configure L2 tag rewrite method on interfaces
+| | ... | ${dut1} | ${subif_index_1}
+| | ... | ${dut2} | ${subif_index_2} | TAG_REWRITE_METHOD=${tag_rewrite}
| | ... | ELSE | Configure L2 tag rewrite method on interfaces
| | ... | ${dut1} | ${subif_index_1} | TAG_REWRITE_METHOD=${tag_rewrite}
| |
| | ${prefix}= | Set Variable | 64
| | ${host_prefix}= | Set Variable | 64
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 2002:1::1 | ${tg_if1_mac}
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 2002:1::1 | ${TG_pf1_mac}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Add Ip Neighbor
-| | ... | ${dut1} | ${subif_index_1} | 2002:2::2 | ${dut2_if1_mac}
+| | ... | ${dut1} | ${subif_index_1} | 2002:2::2 | ${DUT2_${int}1_mac}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Add Ip Neighbor
-| | ... | ${dut2} | ${subif_index_2} | 2002:2::1 | ${dut1_if2_mac}
+| | ... | ${dut2} | ${subif_index_2} | 2002:2::1 | ${DUT1_${int}2_mac}[0]
| | ${dut}= | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Set Variable | ${dut2}
| | ... | ELSE | Set Variable | ${dut1}
| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Set Variable | ${dut2_if2}
+| | ... | Set Variable | ${DUT2_${int}2}[0]
| | ... | ELSE | Set Variable | ${subif_index_1}
-| | VPP Add IP Neighbor | ${dut} | ${dut_if2} | 2002:3::1 | ${tg_if2_mac}
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1} | 2002:1::2 | ${prefix}
+| | VPP Add IP Neighbor
+| | ... | ${dut} | ${dut_if2} | 2002:3::1 | ${TG_pf2_mac}[0]
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 2002:1::2 | ${prefix}
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Interface Set IP Address | ${dut1} | ${subif_index_1} | 2002:2::1
| | ... | ${prefix}
@@ -298,7 +319,7 @@
| | VPP Interface Set IP Address | ${dut} | ${dut_if2} | 2002:3::2 | ${prefix}
| | Vpp All Ra Suppress Link Layer | ${nodes}
| | Vpp Route Add | ${dut1} | ${tg_if1_net} | ${host_prefix}
-| | ... | gateway=2002:1::1 | interface=${dut1_if1}
+| | ... | gateway=2002:1::1 | interface=${DUT1_${int}1}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Vpp Route Add | ${dut1} | ${tg_if2_net} | ${host_prefix}
| | ... | gateway=2002:2::2 | interface=${subif_index_1}
diff --git a/resources/libraries/robot/ip/nat.robot b/resources/libraries/robot/ip/nat.robot
index bb44fa1a18..076a0a20b8 100644
--- a/resources/libraries/robot/ip/nat.robot
+++ b/resources/libraries/robot/ip/nat.robot
@@ -1,4 +1,4 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2020 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:
@@ -85,43 +85,45 @@
| |
| | Set interfaces in path up
| |
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1} | 10.0.0.1 | 20
+| | VPP Interface Set IP Address | ${dut1} | ${DUT1_${int}1}[0] | 10.0.0.1 | 20
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | VPP Interface Set IP Address | ${dut1} | ${dut1_if2}
+| | ... | VPP Interface Set IP Address | ${dut1} | ${DUT1_${int}2}[0]
| | ... | 11.0.0.1 | 20
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | VPP Interface Set IP Address | ${dut2} | ${dut2_if1}
+| | ... | VPP Interface Set IP Address | ${dut2} | ${DUT2_${int}1}[0]
| | ... | 11.0.0.2 | 20
| | ${dut}= | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Set Variable | ${dut2}
| | ... | ELSE | Set Variable | ${dut1}
| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Set Variable | ${dut2_if2}
-| | ... | ELSE | Set Variable | ${dut1_if2}
+| | ... | Set Variable | ${DUT2_${int}1}[0]
+| | ... | ELSE | Set Variable | ${DUT1_${int}2}[0]
| | VPP Interface Set IP Address | ${dut} | ${dut_if2} | 12.0.0.1 | 20
| |
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 10.0.0.2 | ${tg_if1_mac}
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 10.0.0.2 | ${TG_pf1_mac}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | 11.0.0.2 | ${dut2_if1_mac}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 11.0.0.2 | ${DUT2_${int}1_mac}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | VPP Add IP Neighbor
-| | ... | ${dut2} | ${dut2_if1} | 11.0.0.1 | ${dut1_if2_mac}
-| | VPP Add IP Neighbor | ${dut} | ${dut_if2} | 12.0.0.2 | ${tg_if2_mac}
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | 11.0.0.1 | ${DUT1_${int}2_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut} | ${dut_if2} | 12.0.0.2 | ${TG_pf2_mac}[0]
| |
| | Vpp Route Add | ${dut1} | 20.0.0.0 | 18 | gateway=10.0.0.2
-| | ... | interface=${dut1_if1}
+| | ... | interface=${DUT1_${int}1}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Vpp Route Add | ${dut1} | 12.0.0.2 | 32 | gateway=11.0.0.2
-| | ... | interface=${dut1_if2}
+| | ... | interface=${DUT1_${int}2}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Vpp Route Add | ${dut2} | 12.0.0.0 | 24 | gateway=12.0.0.2
-| | ... | interface=${dut2_if2}
+| | ... | interface=${DUT2_${int}2}[0]
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Vpp Route Add | ${dut2} | 200.0.0.0 | 30 | gateway=11.0.0.1
-| | ... | interface=${dut2_if1}
+| | ... | interface=${DUT2_${int}1}[0]
| |
| | Configure inside and outside interfaces
-| | ... | ${dut1} | ${dut1_if1} | ${dut1_if2}
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${DUT1_${int}2}[0]
| | Configure deterministic mode for NAT44
| | ... | ${dut1} | 20.0.0.0 | 18 | 200.0.0.0 | 30
diff --git a/resources/libraries/robot/l2/l2_bridge_domain.robot b/resources/libraries/robot/l2/l2_bridge_domain.robot
index 7ca190e5d0..bb533e3e05 100644
--- a/resources/libraries/robot/l2/l2_bridge_domain.robot
+++ b/resources/libraries/robot/l2/l2_bridge_domain.robot
@@ -26,33 +26,13 @@
| | | VPP Get Bridge Domain Data | ${nodes['${dut}']}
| | END
-| Create bridge domain
-| | [Documentation]
-| | ... | Create bridge domain on given VPP node with defined learning status.
-| |
-| | ... | *Arguments:*
-| | ... | - ${dut_node} - DUT node. Type: dictionary
-| | ... | - ${bd_id} - Bridge domain ID. Type: integer
-| | ... | - ${learn} - Enable/disable MAC learn. Type: boolean, \
-| | ... | default value: ${TRUE}
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Create bridge domain \| ${nodes['DUT1']} \| 2 \|
-| | ... | \| Create bridge domain \| ${nodes['DUT1']} \| 5 \
-| | ... | \| learn=${FALSE} \|
-| |
-| | [Arguments] | ${dut_node} | ${bd_id} | ${learn}=${TRUE}
-| |
-| | Create L2 BD | ${dut_node} | ${bd_id} | learn=${learn}
-
| Add interface to bridge domain
| | [Documentation]
| | ... | Set given interface admin state to up and add this
| | ... | interface to required L2 bridge domain on defined VPP node.
| |
| | ... | *Arguments:*
-| | ... | - ${dut_node} - DUT node. Type: dictionary
+| | ... | - ${dut} - DUT node. Type: dictionary
| | ... | - ${dut_if} - DUT node interface name. Type: string
| | ... | - ${bd_id} - Bridge domain ID. Type: integer
| | ... | - ${shg} - Split-horizon group ID. Type: integer, default value: 0
@@ -62,10 +42,10 @@
| | ... | \| Add interface to bridge domain \| ${nodes['DUT2']} \
| | ... | \| GigabitEthernet0/8/0 \| 3 \|
| |
-| | [Arguments] | ${dut_node} | ${dut_if} | ${bd_id} | ${shg}=0
+| | [Arguments] | ${dut} | ${dut_if} | ${bd_id} | ${shg}=0
| |
-| | Set Interface State | ${dut_node} | ${dut_if} | up
-| | Add Interface To L2 BD | ${dut_node} | ${dut_if} | ${bd_id} | ${shg}
+| | Set Interface State | ${dut} | ${dut_if} | up
+| | Add Interface To L2 BD | ${dut} | ${dut_if} | ${bd_id} | ${shg}
| Initialize L2 bridge domain on node
| | [Documentation]
@@ -84,11 +64,10 @@
| | [Arguments] | ${dut} | ${count}=${1}
| |
| | FOR | ${id} | IN RANGE | 1 | ${count} + 1
-| | | ${dut_str}= | Convert To Lowercase | ${dut}
| | | Add Interface To L2 BD
-| | | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_${id}_1} | ${id}
+| | | ... | ${nodes['${dut}']} | ${${dut}_${int}1_${id}}[0] | ${id}
| | | Add Interface To L2 BD
-| | | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_${id}_2} | ${id}
+| | | ... | ${nodes['${dut}']} | ${${dut}_${int}2_${id}}[0] | ${id}
| | END
| Initialize L2 bridge domain
@@ -136,12 +115,11 @@
| |
| | ${bd_id1}= | Evaluate | ${nf_nodes} * (${nf_chain} - 1) + ${nf_chain}
| | ${bd_id2}= | Evaluate | ${nf_nodes} * ${nf_chain} + ${nf_chain}
-| | ${dut_str}= | Convert To Lowercase | ${dut}
| | Add interface to bridge domain
-| | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_${nf_chain}_1}
+| | ... | ${nodes['${dut}']} | ${${dut}_${int}1_${nf_chain}}[0]
| | ... | ${bd_id1}
| | Add interface to bridge domain
-| | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_${nf_chain}_2}
+| | ... | ${nodes['${dut}']} | ${${dut}_${int}2_${nf_chain}}[0]
| | ... | ${bd_id2}
| | FOR | ${nf_node} | IN RANGE | 1 | ${nf_nodes} + 1
| | | ${qemu_id}= | Evaluate | (${nf_chain} - ${1}) * ${nf_nodes} + ${nf_node}
@@ -215,20 +193,28 @@
| | ... | interfaces.
| |
| | Set interfaces in path up
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if2} | 172.16.0.1
-| | ... | 24
-| | VPP Interface Set IP Address | ${dut2} | ${dut2_if1} | 172.16.0.2
-| | ... | 24
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if2} | 172.16.0.2 | ${dut2_if1_mac}
-| | VPP Add IP Neighbor | ${dut2} | ${dut2_if1} | 172.16.0.1 | ${dut1_if2_mac}
-| | ${dut1s_vxlan}= | Create VXLAN interface | ${dut1} | 24
-| | ... | 172.16.0.1 | 172.16.0.2
-| | ${dut2s_vxlan}= | Create VXLAN interface | ${dut2} | 24
-| | ... | 172.16.0.2 | 172.16.0.1
-| | VPP Add L2 Bridge Domain | ${dut1} | ${1} | ${dut1_if1} | ${dut1s_vxlan}
-| | Set Interface State | ${dut1} | ${dut1s_vxlan} | up
-| | VPP Add L2 Bridge Domain | ${dut2} | ${1} | ${dut2_if2} | ${dut2s_vxlan}
-| | Set Interface State | ${dut2} | ${dut2s_vxlan} | up
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 172.16.0.1 | 24
+| | VPP Interface Set IP Address
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | 172.16.0.2 | 24
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 172.16.0.2
+| | ... | ${DUT2_${int}1_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | 172.16.0.1
+| | ... | ${DUT1_${int}2_mac}[0]
+| | ${dut1s_vxlan}= | Create VXLAN interface
+| | ... | ${dut1} | 24 | 172.16.0.1 | 172.16.0.2
+| | ${dut2s_vxlan}= | Create VXLAN interface
+| | ... | ${dut2} | 24 | 172.16.0.2 | 172.16.0.1
+| | VPP Add L2 Bridge Domain
+| | ... | ${dut1} | ${1} | ${DUT1_${int}1}[0] | ${dut1s_vxlan}
+| | Set Interface State
+| | ... | ${dut1} | ${dut1s_vxlan} | up
+| | VPP Add L2 Bridge Domain
+| | ... | ${dut2} | ${1} | ${DUT2_${int}2}[0] | ${dut2s_vxlan}
+| | Set Interface State
+| | ... | ${dut2} | ${dut2s_vxlan} | up
| Initialize L2 bridge domain with VLAN and VXLANoIPv4 in 3-node circular topology
| | [Documentation]
@@ -257,17 +243,29 @@
| | ${dut1_ip_start}= | Set Variable | 172.16.0.1
| | ${dut2_ip_start}= | Set Variable | 172.16.0.2
| |
-| | Vpp create multiple VXLAN IPv4 tunnels | node=${dut1}
-| | ... | node_vxlan_if=${dut1_if2} | node_vlan_if=${dut1_if1}
-| | ... | op_node=${dut2} | op_node_if=${dut2_if1} | n_tunnels=${vxlan_count}
-| | ... | vni_start=${vni_start} | src_ip_start=${dut1_ip_start}
-| | ... | dst_ip_start=${dut2_ip_start} | ip_step=${ip_step}
+| | Vpp create multiple VXLAN IPv4 tunnels
+| | ... | node=${dut1}
+| | ... | node_vxlan_if=${DUT1_${int}2}[0]
+| | ... | node_vlan_if=${DUT1_${int}1}[0]
+| | ... | op_node=${dut2}
+| | ... | op_node_if=${DUT2_${int}1}[0]
+| | ... | n_tunnels=${vxlan_count}
+| | ... | vni_start=${vni_start}
+| | ... | src_ip_start=${dut1_ip_start}
+| | ... | dst_ip_start=${dut2_ip_start}
+| | ... | ip_step=${ip_step}
| | ... | bd_id_start=${bd_id_start}
-| | Vpp create multiple VXLAN IPv4 tunnels | node=${dut2}
-| | ... | node_vxlan_if=${dut2_if1} | node_vlan_if=${dut2_if2}
-| | ... | op_node=${dut1} | op_node_if=${dut1_if2} | n_tunnels=${vxlan_count}
-| | ... | vni_start=${vni_start} | src_ip_start=${dut2_ip_start}
-| | ... | dst_ip_start=${dut1_ip_start} | ip_step=${ip_step}
+| | Vpp create multiple VXLAN IPv4 tunnels
+| | ... | node=${dut2}
+| | ... | node_vxlan_if=${DUT2_${int}1}[0]
+| | ... | node_vlan_if=${DUT2_${int}2}[0]
+| | ... | op_node=${dut1}
+| | ... | op_node_if=${DUT1_${int}2}[0]
+| | ... | n_tunnels=${vxlan_count}
+| | ... | vni_start=${vni_start}
+| | ... | src_ip_start=${dut2_ip_start}
+| | ... | dst_ip_start=${dut1_ip_start}
+| | ... | ip_step=${ip_step}
| | ... | bd_id_start=${bd_id_start}
| Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology
@@ -291,27 +289,35 @@
| |
| | [Arguments] | ${bd_id1} | ${bd_id2}
| |
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if2} | 172.16.0.1
-| | ... | 24
-| | VPP Interface Set IP Address | ${dut2} | ${dut2_if1} | 172.16.0.2
-| | ... | 24
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 172.16.0.1 | 24
+| | VPP Interface Set IP Address
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | 172.16.0.2 | 24
| | Set interfaces in path up
-| | ${dut1s_vxlan}= | Create VXLAN interface | ${dut1} | 24
-| | ... | 172.16.0.1 | 172.16.0.2
-| | ${dut2s_vxlan}= | Create VXLAN interface | ${dut2} | 24
-| | ... | 172.16.0.2 | 172.16.0.1
+| | ${dut1s_vxlan}= | Create VXLAN interface
+| | ... | ${dut1} | 24 | 172.16.0.1 | 172.16.0.2
+| | ${dut2s_vxlan}= | Create VXLAN interface
+| | ... | ${dut2} | 24 | 172.16.0.2 | 172.16.0.1
| | Configure vhost interfaces | ${dut1}
| | ... | /var/run/vpp/sock-1-${bd_id1} | /var/run/vpp/sock-1-${bd_id2}
-| | Add interface to bridge domain | ${dut1} | ${dut1_if1} | ${bd_id1}
-| | Add interface to bridge domain | ${dut1} | ${vhost_if1} | ${bd_id1}
-| | Add interface to bridge domain | ${dut1} | ${vhost_if2} | ${bd_id2}
-| | Add interface to bridge domain | ${dut1} | ${dut1s_vxlan} | ${bd_id2}
+| | Add interface to bridge domain
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${bd_id1}
+| | Add interface to bridge domain
+| | ... | ${dut1} | ${vhost_if1} | ${bd_id1}
+| | Add interface to bridge domain
+| | ... | ${dut1} | ${vhost_if2} | ${bd_id2}
+| | Add interface to bridge domain
+| | ... | ${dut1} | ${dut1s_vxlan} | ${bd_id2}
| | Configure vhost interfaces | ${dut2}
| | ... | /var/run/vpp/sock-1-${bd_id1} | /var/run/vpp/sock-1-${bd_id2}
-| | Add interface to bridge domain | ${dut2} | ${dut2s_vxlan} | ${bd_id1}
-| | Add interface to bridge domain | ${dut2} | ${vhost_if1} | ${bd_id1}
-| | Add interface to bridge domain | ${dut2} | ${vhost_if2} | ${bd_id2}
-| | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id2}
+| | Add interface to bridge domain
+| | ... | ${dut2} | ${dut2s_vxlan} | ${bd_id1}
+| | Add interface to bridge domain
+| | ... | ${dut2} | ${vhost_if1} | ${bd_id1}
+| | Add interface to bridge domain
+| | ... | ${dut2} | ${vhost_if2} | ${bd_id2}
+| | Add interface to bridge domain
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | ${bd_id2}
| Initialize L2 bridge domains with VLAN dot1q sub-interfaces in circular topology
| | [Documentation]
@@ -347,23 +353,26 @@
| |
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Initialize VLAN dot1q sub-interfaces in circular topology
-| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid}
+| | ... | ${dut1} | ${DUT1_${int}2}[0]
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | SUB_ID=${subid}
| | ... | ELSE | Initialize VLAN dot1q sub-interfaces in circular topology
-| | ... | ${dut1} | ${dut1_if2} | SUB_ID=${subid}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | SUB_ID=${subid}
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Configure L2 tag rewrite method on interfaces | ${dut1}
-| | ... | ${subif_index_1} | ${dut2} | ${subif_index_2} | ${tag_rewrite}
+| | ... | Configure L2 tag rewrite method on interfaces
+| | ... | ${dut1} | ${subif_index_1}
+| | ... | ${dut2} | ${subif_index_2} | TAG_REWRITE_METHOD=${tag_rewrite}
| | ... | ELSE | Configure L2 tag rewrite method on interfaces
| | ... | ${dut1} | ${subif_index_1} | TAG_REWRITE_METHOD=${tag_rewrite}
-| |
-| | Add interface to bridge domain | ${dut1} | ${dut1_if1} | ${bd_id1}
-| | Add interface to bridge domain | ${dut1} | ${subif_index_1} | ${bd_id1}
+| | Add interface to bridge domain
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${bd_id1}
+| | Add interface to bridge domain
+| | ... | ${dut1} | ${subif_index_1} | ${bd_id1}
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Add interface to bridge domain | ${dut2} | ${subif_index_2}
-| | ... | ${bd_id2}
+| | ... | Add interface to bridge domain
+| | ... | ${dut2} | ${subif_index_2} | ${bd_id2}
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Add interface to bridge domain | ${dut2} | ${dut2_if2}
-| | ... | ${bd_id2}
+| | ... | Add interface to bridge domain
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | ${bd_id2}
| Initialize L2 bridge domains with Vhost-User and VLAN in circular topology
| | [Documentation]
@@ -393,21 +402,26 @@
| |
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Initialize VLAN dot1q sub-interfaces in circular topology
-| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid}
+| | ... | ${dut1} | ${DUT1_${int}2}[0]
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | SUB_ID=${subid}
| | ... | ELSE | Initialize VLAN dot1q sub-interfaces in circular topology
-| | ... | ${dut1} | ${dut1_if2} | SUB_ID=${subid}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | SUB_ID=${subid}
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Configure L2 tag rewrite method on interfaces | ${dut1}
-| | ... | ${subif_index_1} | ${dut2} | ${subif_index_2} | ${tag_rewrite}
+| | ... | Configure L2 tag rewrite method on interfaces
+| | ... | ${dut1} | ${subif_index_1}
+| | ... | ${dut2} | ${subif_index_2} | TAG_REWRITE_METHOD=${tag_rewrite}
| | ... | ELSE | Configure L2 tag rewrite method on interfaces
| | ... | ${dut1} | ${subif_index_1} | TAG_REWRITE_METHOD=${tag_rewrite}
-| |
| | Configure vhost interfaces | ${dut1}
| | ... | /var/run/vpp/sock-1-${bd_id1} | /var/run/vpp/sock-1-${bd_id2}
-| | Add interface to bridge domain | ${dut1} | ${dut1_if1} | ${bd_id1}
-| | Add interface to bridge domain | ${dut1} | ${vhost_if1} | ${bd_id1}
-| | Add interface to bridge domain | ${dut1} | ${vhost_if2} | ${bd_id2}
-| | Add interface to bridge domain | ${dut1} | ${subif_index_1} | ${bd_id2}
+| | Add interface to bridge domain
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${bd_id1}
+| | Add interface to bridge domain
+| | ... | ${dut1} | ${vhost_if1} | ${bd_id1}
+| | Add interface to bridge domain
+| | ... | ${dut1} | ${vhost_if2} | ${bd_id2}
+| | Add interface to bridge domain
+| | ... | ${dut1} | ${subif_index_1} | ${bd_id2}
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Configure vhost interfaces | ${dut2}
| | ... | /var/run/vpp/sock-1-${bd_id1} | /var/run/vpp/sock-1-${bd_id2}
@@ -419,7 +433,8 @@
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Add interface to bridge domain | ${dut2} | ${vhost_if2} | ${bd_id2}
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id2}
+| | ... | Add interface to bridge domain | ${dut2} | ${DUT2_${int}2}[0]
+| | ... | ${bd_id2}
| Initialize L2 bridge domains with Vhost-User and VLAN with VPP link bonding in a 3-node circular topology
| | [Documentation]
@@ -450,55 +465,53 @@
| | ... | ${bond_mode} | ${lb_mode}
| |
| | Set interfaces in path up
-| | ${dut1_eth_bond_if1}= | VPP Create Bond Interface | ${dut1} | ${bond_mode}
-| | ... | ${lb_mode}
+| | ${dut1_eth_bond_if1}= | VPP Create Bond Interface
+| | ... | ${dut1} | ${bond_mode} | ${lb_mode}
| | Set Interface State | ${dut1} | ${dut1_eth_bond_if1} | up
| | VPP Set interface MTU | ${dut1} | ${dut1_eth_bond_if1}
-| | ${if2_status} | ${value}= | Run Keyword And Ignore Error
-| | ... | Variable Should Exist | ${dut1_if2}
-| | Run Keyword If | '${if2_status}' == 'PASS'
-| | ... | VPP Enslave Physical Interface | ${dut1} | ${dut1_if2}
-| | ... | ${dut1_eth_bond_if1}
-| | ... | ELSE
-| | ... | VPP Enslave Physical Interface | ${dut1} | ${dut1_if2_1}
-| | ... | ${dut1_eth_bond_if1}
-| | Run Keyword Unless | '${if2_status}' == 'PASS'
-| | ... | VPP Enslave Physical Interface | ${dut1} | ${dut1_if2_2}
-| | ... | ${dut1_eth_bond_if1}
-| | ${dut2_eth_bond_if1}= | VPP Create Bond Interface | ${dut2} | ${bond_mode}
-| | ... | ${lb_mode}
+| | FOR | ${pf} | IN RANGE | 1 | ${nic_pfs} + 1
+| | | ${_even}= | Evaluate | ${pf} % 2
+| | | Run Keyword Unless | ${even}
+| | | ... | VPP Enslave Physical Interface
+| | | ... | ${dut1} | ${DUT1_${int}${pf}}[0] | ${dut1_eth_bond_if1}
+| | END
+| | ${dut2_eth_bond_if1}= | VPP Create Bond Interface
+| | ... | ${dut2} | ${bond_mode} | ${lb_mode}
| | Set Interface State | ${dut2} | ${dut2_eth_bond_if1} | up
| | VPP Set interface MTU | ${dut2} | ${dut2_eth_bond_if1}
-| | ${if1_status} | ${value}= | Run Keyword And Ignore Error
-| | ... | Variable Should Exist | ${dut2_if1}
-| | Run Keyword If | '${if1_status}' == 'PASS'
-| | ... | VPP Enslave Physical Interface | ${dut2} | ${dut2_if1}
-| | ... | ${dut2_eth_bond_if1}
-| | ... | ELSE
-| | ... | VPP Enslave Physical Interface | ${dut2} | ${dut2_if1_1}
-| | ... | ${dut2_eth_bond_if1}
-| | Run Keyword Unless | '${if2_status}' == 'PASS'
-| | ... | VPP Enslave Physical Interface | ${dut2} | ${dut2_if1_2}
-| | ... | ${dut2_eth_bond_if1}
+| | FOR | ${pf} | IN RANGE | 1 | ${nic_pfs} + 1
+| | | ${_even}= | Evaluate | ${pf} % 2
+| | | Run Keyword If | ${even}
+| | | ... | VPP Enslave Physical Interface
+| | | ... | ${dut2} | ${DUT2_${int}${pf}}[0] | ${dut2_eth_bond_if1}
+| | END
| | VPP Show Bond Data On All Nodes | ${nodes} | verbose=${TRUE}
| | Initialize VLAN dot1q sub-interfaces in circular topology
-| | ... | ${dut1} | ${dut1_eth_bond_if1} | ${dut2} | ${dut2_eth_bond_if1}
-| | ... | ${subid}
+| | ... | ${dut1} | ${dut1_eth_bond_if1}
+| | ... | ${dut2} | ${dut2_eth_bond_if1} | ${subid}
| | Configure L2 tag rewrite method on interfaces
-| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2}
-| | ... | ${tag_rewrite}
+| | ... | ${dut1} | ${subif_index_1}
+| | ... | ${dut2} | ${subif_index_2} | ${tag_rewrite}
| | Configure vhost interfaces | ${dut1}
| | ... | /var/run/vpp/sock-1-${bd_id1} | /var/run/vpp/sock-1-${bd_id2}
-| | Add interface to bridge domain | ${dut1} | ${dut1_if1} | ${bd_id1}
-| | Add interface to bridge domain | ${dut1} | ${vhost_if1} | ${bd_id1}
-| | Add interface to bridge domain | ${dut1} | ${vhost_if2} | ${bd_id2}
-| | Add interface to bridge domain | ${dut1} | ${subif_index_1} | ${bd_id2}
+| | Add interface to bridge domain
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${bd_id1}
+| | Add interface to bridge domain
+| | ... | ${dut1} | ${vhost_if1} | ${bd_id1}
+| | Add interface to bridge domain
+| | ... | ${dut1} | ${vhost_if2} | ${bd_id2}
+| | Add interface to bridge domain
+| | ... | ${dut1} | ${subif_index_1} | ${bd_id2}
| | Configure vhost interfaces | ${dut2}
| | ... | /var/run/vpp/sock-1-${bd_id1} | /var/run/vpp/sock-1-${bd_id2}
-| | Add interface to bridge domain | ${dut2} | ${subif_index_2} | ${bd_id1}
-| | Add interface to bridge domain | ${dut2} | ${vhost_if1} | ${bd_id1}
-| | Add interface to bridge domain | ${dut2} | ${vhost_if2} | ${bd_id2}
-| | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id2}
+| | Add interface to bridge domain
+| | ... | ${dut2} | ${subif_index_2} | ${bd_id1}
+| | Add interface to bridge domain
+| | ... | ${dut2} | ${vhost_if1} | ${bd_id1}
+| | Add interface to bridge domain
+| | ... | ${dut2} | ${vhost_if2} | ${bd_id2}
+| | Add interface to bridge domain
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | ${bd_id2}
| Initialize L2 Bridge Domain with memif pairs on DUT node
| | [Documentation]
@@ -530,12 +543,11 @@
| | ... | ELSE | Set Variable | ${1}
| | ${bd_id1}= | Evaluate | ${nf_nodes} * (${nf_chain} - 1) + ${nf_chain}
| | ${bd_id2}= | Evaluate | ${nf_nodes} * ${nf_chain} + ${nf_chain}
-| | ${dut_str}= | Convert To Lowercase | ${dut}
| | Add interface to bridge domain
-| | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_${nf_chain}_1}
+| | ... | ${nodes['${dut}']} | ${${dut}_${int}1_${nf_chain}}[0]
| | ... | ${bd_id1}
| | Add interface to bridge domain
-| | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_${nf_chain}_2}
+| | ... | ${nodes['${dut}']} | ${${dut}_${int}2_${nf_chain}}[0]
| | ... | ${bd_id2}
| | FOR | ${nf_node} | IN RANGE | 1 | ${nf_nodes}+1
| | | ${nf_id}= | Evaluate | (${nf_chain} - ${1}) * ${nf_nodes} + ${nf_node}
@@ -629,12 +641,11 @@
| | ${bd_id1}= | Evaluate | ${nf_nodes} * (${nf_chain} - 1) + ${nf_chain}
| | ${bd_id2}= | Evaluate | ${nf_nodes} * ${nf_chain} + ${nf_chain}
| | FOR | ${dut} | IN | @{duts}
-| | | ${dut_str}= | Convert To Lowercase | ${dut}
| | | Add interface to bridge domain
-| | | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_${nf_chain}_1}
+| | | ... | ${nodes['${dut}']} | ${${dut}_${int}1_${nf_chain}}[0]
| | | ... | ${bd_id1}
| | | Add interface to bridge domain
-| | | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_${nf_chain}_2}
+| | | ... | ${nodes['${dut}']} | ${${dut}_${int}2_${nf_chain}}[0]
| | | ... | ${bd_id2}
| | | ${nf_id_frst}= | Evaluate | (${nf_chain}-${1}) * ${nf_nodes} + ${1}
| | | ${nf_id_last}= | Evaluate | (${nf_chain}-${1}) * ${nf_nodes} + ${nf_nodes}
@@ -712,12 +723,14 @@
| |
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Initialize VLAN dot1q sub-interfaces in circular topology
-| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid}
+| | ... | ${dut1} | ${DUT1_${int}2}[0]
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | SUB_ID=${subid}
| | ... | ELSE | Initialize VLAN dot1q sub-interfaces in circular topology
-| | ... | ${dut1} | ${dut1_if2} | SUB_ID=${subid}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | SUB_ID=${subid}
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Configure L2 tag rewrite method on interfaces | ${dut1}
-| | ... | ${subif_index_1} | ${dut2} | ${subif_index_2} | ${tag_rewrite}
+| | ... | Configure L2 tag rewrite method on interfaces
+| | ... | ${dut1} | ${subif_index_1}
+| | ... | ${dut2} | ${subif_index_2} | TAG_REWRITE_METHOD=${tag_rewrite}
| | ... | ELSE | Configure L2 tag rewrite method on interfaces
| | ... | ${dut1} | ${subif_index_1} | TAG_REWRITE_METHOD=${tag_rewrite}
| |
@@ -729,10 +742,14 @@
| | Set up memif interfaces on DUT node | ${dut1} | ${sock1} | ${sock2}
| | ... | ${number} | ${memif_if1_name} | ${memif_if2_name} | ${rxq_count_int}
| | ... | ${rxq_count_int}
-| | Add interface to bridge domain | ${dut1} | ${dut1_if1} | ${bd_id1}
-| | Add interface to bridge domain | ${dut1} | ${${memif_if1_name}} | ${bd_id1}
-| | Add interface to bridge domain | ${dut1} | ${${memif_if2_name}} | ${bd_id2}
-| | Add interface to bridge domain | ${dut1} | ${subif_index_1} | ${bd_id2}
+| | Add interface to bridge domain
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${bd_id1}
+| | Add interface to bridge domain
+| | ... | ${dut1} | ${${memif_if1_name}} | ${bd_id1}
+| | Add interface to bridge domain
+| | ... | ${dut1} | ${${memif_if2_name}} | ${bd_id2}
+| | Add interface to bridge domain
+| | ... | ${dut1} | ${subif_index_1} | ${bd_id2}
| | ${sock1}= | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Set Variable | memif-DUT2_CNF
| | ${sock2}= | Run Keyword If | '${dut2_status}' == 'PASS'
@@ -746,16 +763,17 @@
| | ... | ${number} | ${memif_if1_name} | ${memif_if2_name} | ${rxq_count_int}
| | ... | ${rxq_count_int}
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Add interface to bridge domain | ${dut2} | ${subif_index_2}
-| | ... | ${bd_id1}
+| | ... | Add interface to bridge domain
+| | ... | ${dut2} | ${subif_index_2} | ${bd_id1}
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Add interface to bridge domain | ${dut2} | ${${memif_if1_name}}
-| | ... | ${bd_id1}
+| | ... | Add interface to bridge domain
+| | ... | ${dut2} | ${${memif_if1_name}} | ${bd_id1}
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Add interface to bridge domain | ${dut2} | ${${memif_if2_name}}
-| | ... | ${bd_id2}
+| | ... | Add interface to bridge domain
+| | ... | ${dut2} | ${${memif_if2_name}} | ${bd_id2}
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id2}
+| | ... | Add interface to bridge domain
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | ${bd_id2}
| |
| | Show Memif on all DUTs | ${nodes}
| | VPP round robin RX placement on all DUTs | ${nodes} | prefix=memif
@@ -787,8 +805,8 @@
| | | Set up single memif interface on DUT node | ${nodes['${dut}']} | ${sock}
| | | ... | mid=${number} | sid=${sid} | memif_if=${dut}-memif-${number}-if1
| | | ... | rxq=${rxq_count_int} | txq=${rxq_count_int}
-| | | Add interface to bridge domain | ${nodes['${dut}']} | ${${dut}_if1}
-| | | ... | ${number}
+| | | Add interface to bridge domain
+| | | ... | ${nodes['${dut}']} | ${${dut}_${int}1}[]0 | ${number}
| | | Add interface to bridge domain | ${nodes['${dut}']}
| | | ... | ${${dut}-memif-${number}-if1} | ${number}
| | END
@@ -803,9 +821,12 @@
| | ... | DUT1 interfaces.
| |
| | Set interfaces in path up
-| | VPP Add L2 Bridge Domain | ${dut1} | ${1} | ${dut1_if1} | ${dut1_if2}
-| | Configure L2XC | ${dut2} | ${dut2_if1} | ${dut2_if2}
-| | Configure MACIP ACLs | ${dut1} | ${dut1_if1} | ${dut1_if2}
+| | VPP Add L2 Bridge Domain
+| | ... | ${dut1} | ${1} | ${DUT1_${int}1}[0] | ${DUT1_${int}2}[0]
+| | Configure L2XC
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | ${DUT2_${int}2}[0]
+| | Configure MACIP ACLs
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${DUT1_${int}2}[0]
| Initialize L2 bridge domain with IPv4 ACLs on DUT1 in 3-node circular topology
| | [Documentation]
@@ -815,6 +836,9 @@
| | ... | interfaces.
| |
| | Set interfaces in path up
-| | VPP Add L2 Bridge Domain | ${dut1} | ${1} | ${dut1_if1} | ${dut1_if2}
-| | Configure L2XC | ${dut2} | ${dut2_if1} | ${dut2_if2}
-| | Configure IPv4 ACLs | ${dut1} | ${dut1_if1} | ${dut1_if2}
+| | VPP Add L2 Bridge Domain
+| | ... | ${dut1} | ${1} | ${DUT1_${int}1}[0] | ${DUT1_${int}2}[0]
+| | Configure L2XC
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | ${DUT2_${int}2}[0]
+| | Configure IPv4 ACLs
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${DUT1_${int}2}[0]
diff --git a/resources/libraries/robot/l2/l2_patch.robot b/resources/libraries/robot/l2/l2_patch.robot
index 7d4a527fe3..b1a53ef4e3 100644
--- a/resources/libraries/robot/l2/l2_patch.robot
+++ b/resources/libraries/robot/l2/l2_patch.robot
@@ -1,4 +1,4 @@
-# Copyright (c) 2018 Cisco and/or its affiliates.
+# Copyright (c) 2020 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:
@@ -21,8 +21,8 @@
| | ... | Setup L2 patch topology by cross connecting two interfaces on
| | ... | each DUT. Interfaces are brought up.
| |
-| | Set interfaces in path up
| | FOR | ${dut} | IN | @{duts}
| | | VPP Setup Bidirectional L2 patch
-| | | ... | ${nodes['${dut}']} | ${${dut}_if1} | ${${dut}_if2}
+| | | ... | ${nodes['${dut}']} | ${${dut}_${int}1}[0] | ${${dut}_${int}2}[0]
| | END
+| | Set interfaces in path up
diff --git a/resources/libraries/robot/l2/l2_xconnect.robot b/resources/libraries/robot/l2/l2_xconnect.robot
index efe148c400..ea4d6afcef 100644
--- a/resources/libraries/robot/l2/l2_xconnect.robot
+++ b/resources/libraries/robot/l2/l2_xconnect.robot
@@ -17,11 +17,23 @@
*** Keywords ***
| Configure L2XC
-| | [Documentation] | Setup Bidirectional Cross Connect on DUTs
-| | [Arguments] | ${node} | ${if1} | ${if2} |
-| | Set Interface State | ${node} | ${if1} | up
-| | Set Interface State | ${node} | ${if2} | up
-| | Vpp Setup Bidirectional Cross Connect | ${node} | ${if1} | ${if2}
+| | [Documentation]
+| | ... | Setup Bidirectional Cross Connect on DUTs
+| |
+| | ... | *Arguments:*
+| | ... | - dut - DUT node. Type: string
+| | ... | - if1 - First interface. Type: string
+| | ... | - if2 - Second interface. Type: string
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Initialize L2 cross connect on node \| DUT1 \| 1 \|
+| |
+| | [Arguments] | ${dut} | ${if1} | ${if2}
+| |
+| | Set Interface State | ${dut} | ${if1} | up
+| | Set Interface State | ${dut} | ${if2} | up
+| | Vpp Setup Bidirectional Cross Connect | ${dut} | ${if1} | ${if2}
| Initialize L2 cross connect on node
| | [Documentation]
@@ -39,10 +51,8 @@
| | [Arguments] | ${dut} | ${count}=${1}
| |
| | FOR | ${id} | IN RANGE | 1 | ${count} + 1
-| | | ${dut_str}= | Convert To Lowercase | ${dut}
| | | VPP Setup Bidirectional Cross Connect | ${nodes['${dut}']}
-| | | ... | ${${dut_str}_${prev_layer}_${id}_1}
-| | | ... | ${${dut_str}_${prev_layer}_${id}_2}
+| | | ... | ${${dut}_${int}1_${id}}[0] | ${${dut}_${int}2_${id}}[0]
| | END
| Initialize L2 cross connect
@@ -63,23 +73,6 @@
| | | Initialize L2 cross connect on node | ${dut} | count=${count}
| | END
-| Initialize L2 xconnect in 2-node circular topology
-| | [Documentation]
-| | ... | Setup L2 xconnect topology by cross connecting two interfaces on
-| | ... | each DUT. Interfaces are brought up.
-| |
-| | Set interfaces in path up
-| | VPP Setup Bidirectional Cross Connect | ${dut1} | ${dut1_if1} | ${dut1_if2}
-
-| Initialize L2 xconnect in 3-node circular topology
-| | [Documentation]
-| | ... | Setup L2 xconnect topology by cross connecting two interfaces on
-| | ... | each DUT. Interfaces are brought up.
-| | ... |
-| | Set interfaces in path up
-| | VPP Setup Bidirectional Cross Connect | ${dut1} | ${dut1_if1} | ${dut1_if2}
-| | VPP Setup Bidirectional Cross Connect | ${dut2} | ${dut2_if1} | ${dut2_if2}
-
| Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology
| | [Documentation]
| | ... | Setup L2 xconnect topology with VXLANoIPv4 by cross connecting
@@ -89,16 +82,22 @@
| | ... | interfaces.
| |
| | Set interfaces in path up
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if2} | 172.16.0.1 | 24
-| | VPP Interface Set IP Address | ${dut2} | ${dut2_if1} | 172.16.0.2 | 24
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if2} | 172.16.0.2 | ${dut2_if1_mac}
-| | VPP Add IP Neighbor | ${dut2} | ${dut2_if1} | 172.16.0.1 | ${dut1_if2_mac}
-| | ${dut1s_vxlan}= | Create VXLAN interface | ${dut1} | 24
-| | ... | 172.16.0.1 | 172.16.0.2
-| | Configure L2XC | ${dut1} | ${dut1_if1} | ${dut1s_vxlan}
-| | ${dut2s_vxlan}= | Create VXLAN interface | ${dut2} | 24
-| | ... | 172.16.0.2 | 172.16.0.1
-| | Configure L2XC | ${dut2} | ${dut2_if2} | ${dut2s_vxlan}
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 172.16.0.1 | 24
+| | VPP Interface Set IP Address
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | 172.16.0.2 | 24
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 172.16.0.2 | ${DUT2_${int}1_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | 172.16.0.1 | ${DUT1_${int}2_mac}[0]
+| | ${dut1s_vxlan}= | Create VXLAN interface
+| | ... | ${dut1} | 24 | 172.16.0.1 | 172.16.0.2
+| | Configure L2XC
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${dut1s_vxlan}
+| | ${dut2s_vxlan}= | Create VXLAN interface
+| | ... | ${dut2} | 24 | 172.16.0.2 | 172.16.0.1
+| | Configure L2XC
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | ${dut2s_vxlan}
| Initialize L2 xconnect with Vhost-User on node
| | [Documentation]
@@ -128,12 +127,14 @@
| | | Configure vhost interfaces | ${nodes['${dut}']}
| | | ... | ${sock1} | ${sock2} | ${dut}-vhost-${number}-if1
| | | ... | ${dut}-vhost-${number}-if2
-| | | ${dut_xconnect_if1}= | Set Variable If | ${number}==1 | ${${dut}_if1}
+| | | ${dut_xconnect_if1}= | Set Variable If | ${number}==1
+| | | ... | ${${dut}_${int}1}[0]
| | | ... | ${${dut}-vhost-${prev_index}-if2}
| | | Configure L2XC | ${nodes['${dut}']} | ${dut_xconnect_if1}
| | | ... | ${${dut}-vhost-${number}-if1}
| | | Run Keyword If | ${number}==${nf_nodes} | Configure L2XC
-| | | ... | ${nodes['${dut}']} | ${${dut}-vhost-${number}-if2} | ${${dut}_if2}
+| | | ... | ${nodes['${dut}']} | ${${dut}-vhost-${number}-if2}
+| | | ... | ${${dut}_${int}2}[0]
| | END
| Initialize L2 xconnect with Vhost-User
@@ -180,27 +181,29 @@
| |
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Initialize VLAN dot1q sub-interfaces in circular topology
-| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid}
+| | ... | ${dut1} | ${DUT1_${int}2}[0]
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | SUB_ID=${subid}
| | ... | ELSE | Initialize VLAN dot1q sub-interfaces in circular topology
-| | ... | ${dut1} | ${dut1_if2} | SUB_ID=${subid}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | SUB_ID=${subid}
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Configure L2 tag rewrite method on interfaces | ${dut1}
-| | ... | ${subif_index_1} | ${dut2} | ${subif_index_2} | ${tag_rewrite}
+| | ... | Configure L2 tag rewrite method on interfaces
+| | ... | ${dut1} | ${subif_index_1}
+| | ... | ${dut2} | ${subif_index_2} | TAG_REWRITE_METHOD=${tag_rewrite}
| | ... | ELSE | Configure L2 tag rewrite method on interfaces
| | ... | ${dut1} | ${subif_index_1} | TAG_REWRITE_METHOD=${tag_rewrite}
-| |
| | Configure vhost interfaces
| | ... | ${dut1} | /run/vpp/sock-1-1 | /run/vpp/sock-1-2
-| | Configure L2XC | ${dut1} | ${dut1_if1} | ${vhost_if1}
-| | Configure L2XC | ${dut1} | ${subif_index_1} | ${vhost_if2}
-| |
+| | Configure L2XC
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${vhost_if1}
+| | Configure L2XC
+| | ... | ${dut1} | ${subif_index_1} | ${vhost_if2}
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Configure vhost interfaces
| | ... | ${dut2} | /run/vpp/sock-1-1 | /run/vpp/sock-1-2
| | Run Keyword If | '${dut2_status}' == 'PASS'
| | ... | Configure L2XC | ${dut2} | ${subif_index_2} | ${vhost_if1}
| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Configure L2XC | ${dut2} | ${dut2_if2} | ${vhost_if2}
+| | ... | Configure L2XC | ${dut2} | ${DUT2_${int}2}[0] | ${vhost_if2}
| Initialize L2 xconnect with Vhost-User and VLAN with VPP link bonding in 3-node circular topology
| | [Documentation]
@@ -225,51 +228,45 @@
| | [Arguments] | ${subid} | ${tag_rewrite} | ${bond_mode} | ${lb_mode}
| |
| | Set interfaces in path up
-| | ${dut1_eth_bond_if1}= | VPP Create Bond Interface | ${dut1} | ${bond_mode}
-| | ... | ${lb_mode}
+| | ${dut1_eth_bond_if1}= | VPP Create Bond Interface
+| | ... | ${dut1} | ${bond_mode} | ${lb_mode}
| | Set Interface State | ${dut1} | ${dut1_eth_bond_if1} | up
| | VPP Set interface MTU | ${dut1} | ${dut1_eth_bond_if1}
-| | ${if2_status} | ${value}= | Run Keyword And Ignore Error
-| | ... | Variable Should Exist | ${dut1_if2}
-| | Run Keyword If | '${if2_status}' == 'PASS'
-| | ... | VPP Enslave Physical Interface | ${dut1} | ${dut1_if2}
-| | ... | ${dut1_eth_bond_if1}
-| | ... | ELSE
-| | ... | VPP Enslave Physical Interface | ${dut1} | ${dut1_if2_1}
-| | ... | ${dut1_eth_bond_if1}
-| | Run Keyword Unless | '${if2_status}' == 'PASS'
-| | ... | VPP Enslave Physical Interface | ${dut1} | ${dut1_if2_2}
-| | ... | ${dut1_eth_bond_if1}
-| | ${dut2_eth_bond_if1}= | VPP Create Bond Interface | ${dut2} | ${bond_mode}
-| | ... | ${lb_mode}
+| | FOR | ${pf} | IN RANGE | 1 | ${nic_pfs} + 1
+| | | ${_even}= | Evaluate | ${pf} % 2
+| | | Run Keyword Unless | ${even}
+| | | ... | VPP Enslave Physical Interface
+| | | ... | ${dut1} | ${DUT1_${int}${pf}}[0] | ${dut1_eth_bond_if1}
+| | END
+| | ${dut2_eth_bond_if1}= | VPP Create Bond Interface
+| | ... | ${dut2} | ${bond_mode} | ${lb_mode}
| | Set Interface State | ${dut2} | ${dut2_eth_bond_if1} | up
-| | VPP Set interface MTU | ${dut1} | ${dut1_eth_bond_if1}
-| | ${if1_status} | ${value}= | Run Keyword And Ignore Error
-| | ... | Variable Should Exist | ${dut2_if1}
-| | Run Keyword If | '${if1_status}' == 'PASS'
-| | ... | VPP Enslave Physical Interface | ${dut2} | ${dut2_if1}
-| | ... | ${dut2_eth_bond_if1}
-| | ... | ELSE
-| | ... | VPP Enslave Physical Interface | ${dut2} | ${dut2_if1_1}
-| | ... | ${dut2_eth_bond_if1}
-| | Run Keyword Unless | '${if2_status}' == 'PASS'
-| | ... | VPP Enslave Physical Interface | ${dut2} | ${dut2_if1_2}
-| | ... | ${dut2_eth_bond_if1}
+| | VPP Set interface MTU | ${dut2} | ${dut2_eth_bond_if1}
+| | FOR | ${pf} | IN RANGE | 1 | ${nic_pfs} + 1
+| | | ${_even}= | Evaluate | ${pf} % 2
+| | | Run Keyword If | ${even}
+| | | ... | VPP Enslave Physical Interface
+| | | ... | ${dut2} | ${DUT2_${int}${pf}}[0] | ${dut2_eth_bond_if1}
+| | END
| | VPP Show Bond Data On All Nodes | ${nodes} | verbose=${TRUE}
| | Initialize VLAN dot1q sub-interfaces in circular topology
-| | ... | ${dut1} | ${dut1_eth_bond_if1} | ${dut2} | ${dut2_eth_bond_if1}
-| | ... | ${subid}
+| | ... | ${dut1} | ${dut1_eth_bond_if1}
+| | ... | ${dut2} | ${dut2_eth_bond_if1} | ${subid}
| | Configure L2 tag rewrite method on interfaces
-| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2}
-| | ... | ${tag_rewrite}
+| | ... | ${dut1} | ${subif_index_1}
+| | ... | ${dut2} | ${subif_index_2} | ${tag_rewrite}
| | Configure vhost interfaces
| | ... | ${dut1} | /run/vpp/sock-1-1 | /run/vpp/sock-1-2
-| | Configure L2XC | ${dut1} | ${dut1_if1} | ${vhost_if1}
-| | Configure L2XC | ${dut1} | ${subif_index_1} | ${vhost_if2}
+| | Configure L2XC
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${vhost_if1}
+| | Configure L2XC
+| | ... | ${dut1} | ${subif_index_1} | ${vhost_if2}
| | Configure vhost interfaces
| | ... | ${dut2} | /run/vpp/sock-1-1 | /run/vpp/sock-1-2
-| | Configure L2XC | ${dut2} | ${subif_index_2} | ${vhost_if1}
-| | Configure L2XC | ${dut2} | ${dut2_if2} | ${vhost_if2}
+| | Configure L2XC
+| | ... | ${dut2} | ${subif_index_2} | ${vhost_if1}
+| | Configure L2XC
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | ${vhost_if2}
| Initialize L2 xconnect with memif pairs on DUT node
| | [Documentation]
@@ -302,12 +299,13 @@
| | | Set up memif interfaces on DUT node | ${nodes['${dut}']}
| | | ... | ${sock1} | ${sock2} | ${number} | ${dut}-memif-${number}-if1
| | | ... | ${dut}-memif-${number}-if2 | ${rxq_count_int} | ${rxq_count_int}
-| | | ${xconnect_if1}= | Set Variable If | ${number}==1 | ${${dut}_if1}
-| | | ... | ${${dut}-memif-${prev_index}-if2}
+| | | ${xconnect_if1}= | Set Variable If | ${number}==1
+| | | ... | ${${dut}_${int}1}[0] | ${${dut}-memif-${prev_index}-if2}
| | | Configure L2XC | ${nodes['${dut}']} | ${xconnect_if1}
| | | ... | ${${dut}-memif-${number}-if1}
| | | Run Keyword If | ${number}==${count} | Configure L2XC
-| | | ... | ${nodes['${dut}']} | ${${dut}-memif-${number}-if2} | ${${dut}_if2}
+| | | ... | ${nodes['${dut}']} | ${${dut}-memif-${number}-if2}
+| | | ... | ${${dut}_${int}2}[0]
| | END
| Initialize L2 xconnect with memif pairs
@@ -331,37 +329,3 @@
| | Set interfaces in path up
| | Show Memif on all DUTs | ${nodes}
| | VPP round robin RX placement on all DUTs | ${nodes} | prefix=memif
-
-| Initialize L2 xconnect for single memif
-| | [Documentation]
-| | ... | Create single Memif interface on all defined VPP nodes. Cross
-| | ... | connect Memif interface with one physical interface.
-| |
-| | ... | *Arguments:*
-| | ... | - number - Memif ID. Type: integer
-| |
-| | ... | *Note:*
-| | ... | Socket paths for Memif are defined in following format:
-| | ... | - /tmp/memif-DUT1_CNF\${number}-\${sid}
-| |
-| | ... | KW uses test variable ${rxq_count_int} set by KW Add worker threads
-| | ... | and rxqueues to all DUTs
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Initialize L2 xconnect for single memif \| 1 \|
-| |
-| | [Arguments] | ${number}=${1}
-| |
-| | FOR | ${dut} | IN | @{duts}
-| | | ${sock}= | Set Variable | memif-${dut}_CNF
-| | | ${sid}= | Evaluate | (${number} * ${2}) - ${1}
-| | | Set up single memif interface on DUT node | ${nodes['${dut}']} | ${sock}
-| | | ... | mid=${number} | sid=${sid} | memif_if=${dut}-memif-${number}-if1
-| | | ... | rxq=${rxq_count_int} | txq=${rxq_count_int}
-| | | Configure L2XC | ${nodes['${dut}']} | ${${dut}_if1}
-| | | ... | ${${dut}-memif-${number}-if1}
-| | END
-| | Set single interfaces in path up
-| | Show Memif on all DUTs | ${nodes}
-| | VPP round robin RX placement on all DUTs | ${nodes} | prefix=memif
diff --git a/resources/libraries/robot/lb/load_balancer.robot b/resources/libraries/robot/lb/load_balancer.robot
index a254acd0f8..4c358a47ba 100644
--- a/resources/libraries/robot/lb/load_balancer.robot
+++ b/resources/libraries/robot/lb/load_balancer.robot
@@ -1,4 +1,4 @@
-# Copyright (c) 2019 Intel and/or its affiliates.
+# Copyright (c) 2020 Intel 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:
@@ -37,22 +37,24 @@
| |
| | ${fib_table}= | Set Variable | ${0}
| | Add Fib Table | ${dut1} | ${fib_table}
-| | Assign Interface To Fib Table | ${dut1} | ${dut1_if1} | ${fib_table}
-| | Assign Interface To Fib Table | ${dut1} | ${dut1_if2} | ${fib_table}
-| |
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1}
-| | ... | 192.168.50.72 | 24
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if2}
-| | ... | 192.168.60.73 | 24
-| |
-| | Add Ip Neighbors | ${dut1} | ${dut1_if2} | 192.168.60 | ${tg_if2_mac}
-| |
-| | Vpp Route Add | ${dut1} | 192.168.60.0 | 24 | interface=${dut1_if2}
-| |
-| | Vpp Lb Conf | ${dut1} | ip4_src_addr=192.168.60.73 | buckets_per_core=${128}
-| | Vpp Lb Add Del Vip | ${dut1} | vip_addr=90.1.2.1 | encap=${0}
-| | ... | new_len=${1024}
-| | Add Lb As Addresses | ${dut1} | 90.1.2.1 | 192.168.60
+| | Assign Interface To Fib Table
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${fib_table}
+| | Assign Interface To Fib Table
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${fib_table}
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 192.168.50.72 | 24
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 192.168.60.73 | 24
+| | Add Ip Neighbors
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 192.168.60 | ${TG_pf2_mac}[0]
+| | Vpp Route Add
+| | ... | ${dut1} | 192.168.60.0 | 24 | interface=${DUT1_${int}2}[0]
+| | Vpp Lb Conf
+| | ... | ${dut1} | ip4_src_addr=192.168.60.73 | buckets_per_core=${128}
+| | Vpp Lb Add Del Vip
+| | ... | ${dut1} | vip_addr=90.1.2.1 | encap=${0} | new_len=${1024}
+| | Add Lb As Addresses
+| | ... | ${dut1} | 90.1.2.1 | 192.168.60
| Initialize loadbalancer l3dsr
| | [Documentation]
@@ -65,22 +67,24 @@
| |
| | ${fib_table}= | Set Variable | ${0}
| | Add Fib Table | ${dut1} | ${fib_table}
-| | Assign Interface To Fib Table | ${dut1} | ${dut1_if1} | ${fib_table}
-| | Assign Interface To Fib Table | ${dut1} | ${dut1_if2} | ${fib_table}
-| |
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1}
-| | ... | 192.168.50.72 | 24
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if2}
-| | ... | 192.168.60.73 | 24
-| |
-| | Add Ip Neighbors | ${dut1} | ${dut1_if2} | 192.168.60 | ${tg_if2_mac}
-| |
-| | Vpp Route Add | ${dut1} | 192.168.60.0 | 24 | interface=${dut1_if2}
-| |
-| | Vpp Lb Conf | ${dut1} | ip4_src_addr=192.168.60.73 | buckets_per_core=${128}
-| | Vpp Lb Add Del Vip | ${dut1} | vip_addr=90.1.2.1 | encap=${2} | dscp=${7}
-| | ... | new_len=${1024}
-| | Add Lb As Addresses | ${dut1} | 90.1.2.1 | 192.168.60
+| | Assign Interface To Fib Table
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${fib_table}
+| | Assign Interface To Fib Table
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${fib_table}
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 192.168.50.72 | 24
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 192.168.60.73 | 24
+| | Add Ip Neighbors
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 192.168.60 | ${TG_pf2_mac}[0]
+| | Vpp Route Add
+| | ... | ${dut1} | 192.168.60.0 | 24 | interface=${DUT1_${int}2}[0]
+| | Vpp Lb Conf
+| | ... | ${dut1} | ip4_src_addr=192.168.60.73 | buckets_per_core=${128}
+| | Vpp Lb Add Del Vip
+| | ... | ${dut1} | vip_addr=90.1.2.1 | encap=${2} | dscp=${7} | new_len=${1024}
+| | Add Lb As Addresses
+| | ... | ${dut1} | 90.1.2.1 | 192.168.60
| Initialize loadbalancer nat4
| | [Documentation]
@@ -93,26 +97,31 @@
| |
| | ${fib_table}= | Set Variable | ${0}
| | Add Fib Table | ${dut1} | ${fib_table}
-| | Assign Interface To Fib Table | ${dut1} | ${dut1_if1} | ${fib_table}
-| | Assign Interface To Fib Table | ${dut1} | ${dut1_if2} | ${fib_table}
-| |
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1}
-| | ... | 192.168.50.72 | 24
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if2}
-| | ... | 192.168.60.73 | 24
-| |
-| | Add Ip Neighbors | ${dut1} | ${dut1_if1} | 192.168.50 | ${tg_if1_mac}
-| | Add Ip Neighbors | ${dut1} | ${dut1_if2} | 192.168.60 | ${tg_if2_mac}
-| |
-| | Vpp Route Add | ${dut1} | 192.168.50.0 | 24 | interface=${dut1_if1}
-| | Vpp Route Add | ${dut1} | 192.168.60.0 | 24 | interface=${dut1_if2}
-| |
-| | Vpp Lb Conf | ${dut1} | ip4_src_addr=192.168.60.73 | buckets_per_core=${128}
-| | Vpp Lb Add Del Vip | ${dut1} | vip_addr=90.1.2.1 | encap=${3}
+| | Assign Interface To Fib Table
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${fib_table}
+| | Assign Interface To Fib Table
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${fib_table}
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 192.168.50.72 | 24
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 192.168.60.73 | 24
+| | Add Ip Neighbors
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 192.168.50 | ${TG_pf1_mac}[0]
+| | Add Ip Neighbors
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | 192.168.60 | ${TG_pf2_mac}[0]
+| | Vpp Route Add
+| | ... | ${dut1} | 192.168.50.0 | 24 | interface=${DUT1_${int}1}[0]
+| | Vpp Route Add
+| | ... | ${dut1} | 192.168.60.0 | 24 | interface=${DUT1_${int}2}[0]
+| | Vpp Lb Conf
+| | ... | ${dut1} | ip4_src_addr=192.168.60.73 | buckets_per_core=${128}
+| | Vpp Lb Add Del Vip
+| | ... | ${dut1} | vip_addr=90.1.2.1 | encap=${3}
| | ... | protocol=${17} | port=${20000} | target_port=${3307} | new_len=${1024}
| | Add Lb As Addresses
| | ... | ${dut1} | 90.1.2.1 | 192.168.60 | protocol=${17} | port=${20000}
-| | Vpp Lb Add Del Intf Nat4 | ${dut1} | interface=${dut1_if2}
+| | Vpp Lb Add Del Intf Nat4
+| | ... | ${dut1} | interface=${DUT1_${int}2}[0]
| Add Ip Neighbors
| | [Documentation] | Add IP neighbors to physical interface on DUT.
diff --git a/resources/libraries/robot/overlay/lisp.robot b/resources/libraries/robot/overlay/lisp.robot
index f9da0be399..16d04767e9 100644
--- a/resources/libraries/robot/overlay/lisp.robot
+++ b/resources/libraries/robot/overlay/lisp.robot
@@ -1,4 +1,4 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2020 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:
@@ -29,15 +29,15 @@
| |
| | Set interfaces in path up
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if1} | ${dut_if1_ip4} | ${ip4_plen}
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${dut_if1_ip4} | ${ip4_plen}
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if2} | ${dut_if2_ip4} | ${ip4_plen}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut_if2_ip4} | ${ip4_plen}
| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if1} | ${src_ip4} | ${tg_if1_mac}
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${src_ip4} | ${TG_pf1_mac}[0]
| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | ${dst_ip4} | ${tg_if2_mac}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dst_ip4} | ${TG_pf2_mac}[0]
| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | ${tg_if2_ip4} | ${tg_if2_mac}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${tg_if2_ip4} | ${TG_pf2_mac}[0]
| Configure topology for IPv6 LISP testing
| | [Documentation] | Setup topology fo IPv6 LISP testing.
@@ -47,15 +47,15 @@
| |
| | Set interfaces in path up
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if1} | ${dut_if1_ip6} | ${ip6_plen}
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${dut_if1_ip6} | ${ip6_plen}
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if2} | ${dut_if2_ip6} | ${ip6_plen}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut_if2_ip6} | ${ip6_plen}
| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if1} | ${src_ip6} | ${tg_if1_mac}
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${src_ip6} | ${TG_pf1_mac}[0]
| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | ${dst_ip6} | ${tg_if2_mac}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dst_ip6} | ${TG_pf2_mac}[0]
| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | ${tg_if2_ip6} | ${tg_if2_mac}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${tg_if2_ip6} | ${TG_pf2_mac}[0]
| Configure LISP in 2-node circular topology
| | [Documentation] | Configure LISP topology in 2-node circular topology.
@@ -124,15 +124,15 @@
| |
| | Set interfaces in path up
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if1} | ${dut_if1_ip6} | ${ip6_plen}
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${dut_if1_ip6} | ${ip6_plen}
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if2} | ${dut_if2_ip4} | ${ip4_plen}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut_if2_ip4} | ${ip4_plen}
| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if1} | ${src_ip6} | ${tg_if1_mac}
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${src_ip6} | ${TG_pf1_mac}[0]
| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | ${dst_ip6} | ${tg_if2_mac}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dst_ip6} | ${TG_pf2_mac}[0]
| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | ${tg_if2_ip4} | ${tg_if2_mac}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${tg_if2_ip4} | ${TG_pf2_mac}[0]
| Configure topology for IPv4 LISPoIP6 testing
| | [Documentation] | Setup topology fo IPv4 LISPoIPV6 testing.
@@ -142,12 +142,227 @@
| |
| | Set interfaces in path up
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if1} | ${dut_if1_ip4} | ${ip4_plen}
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${dut_if1_ip4} | ${ip4_plen}
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if2} | ${dut_if2_ip6} | ${ip6_plen}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut_if2_ip6} | ${ip6_plen}
| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if1} | ${src_ip4} | ${tg_if1_mac}
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${src_ip4} | ${TG_pf1_mac}[0]
| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | ${dst_ip4} | ${tg_if2_mac}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dst_ip4} | ${TG_pf2_mac}[0]
| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | ${tg_if2_ip6} | ${tg_if2_mac}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${tg_if2_ip6} | ${TG_pf2_mac}[0]
+
+| Initialize LISP IPv4 forwarding in 3-node circular topology
+| | [Documentation] | Custom setup of IPv4 addresses on all DUT nodes and TG \
+| | ... | Don`t set route.
+| |
+| | ... | *Arguments:*
+| | ... | - dut1_dut2_address - Ip address from DUT1 to DUT2. Type: string
+| | ... | - dut1_tg_address - Ip address from DUT1 to tg. Type: string
+| | ... | - dut2_dut1_address - Ip address from DUT2 to DUT1. Type: string
+| | ... | - dut1_tg_address - Ip address from DUT1 to tg. Type: string
+| | ... | - duts_prefix - ip prefix. Type: int
+| |
+| | ... | *Return:*
+| | ... | - No value returned
+| |
+| | ... | *Example:*
+| | ... | \| Initialize LISP IPv4 forwarding in 3-node circular topology \
+| | ... | \| ${dut1_dut2_address} \| ${dut1_tg_address} \
+| | ... | \| ${dut2_dut1_address} \| ${dut2_tg_address} \| ${duts_prefix} \|
+| |
+| | [Arguments] | ${dut1_dut2_address} | ${dut1_tg_address}
+| | ... | ${dut2_dut1_address} | ${dut2_tg_address} | ${duts_prefix}
+| |
+| | Set interfaces in path up
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 10.10.10.2 | ${TG_pf1_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut2_dut1_address}
+| | ... | ${DUT2_${int}1_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | ${dut1_dut2_address}
+| | ... | ${DUT1_${int}2_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | 20.20.20.2 | ${TG_pf2_mac}[0]
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${dut1_tg_address} | ${duts_prefix}
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut1_dut2_address} | ${duts_prefix}
+| | VPP Interface Set IP Address
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | ${dut2_dut1_address} | ${duts_prefix}
+| | VPP Interface Set IP Address
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | ${dut2_tg_address} | ${duts_prefix}
+
+| Initialize LISP GPE IPv4 over IPsec in 3-node circular topology
+| | [Documentation] | Setup Lisp GPE IPv4 forwarding over IPsec.
+| |
+| | ... | *Arguments:*
+| | ... | - encr_alg - Encryption algorithm. Type: string
+| | ... | - auth_alg - Authentication algorithm. Type: string
+| |
+| | ... | *Return:*
+| | ... | - No value returned
+| |
+| | ... | *Example:*
+| | ... | \| Initialize LISP GPE IPv4 over IPsec in 3-node circular topology\
+| | ... | \| ${encr_alg} \| ${auth_alg}
+| |
+| | [Arguments] | ${encr_alg} | ${auth_alg}
+| |
+| | Generate keys for IPSec | ${encr_alg} | ${auth_alg}
+| | Initialize LISP IPv4 forwarding in 3-node circular topology
+| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4}
+| | ... | ${dut2_to_tg_ip4} | ${prefix4}
+| | Configure LISP GPE topology in 3-node circular topology
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${NONE}
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | ${NONE}
+| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid}
+| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency}
+| | Configure manual keyed connection for IPSec
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${encr_alg} | ${encr_key}
+| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi}
+| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4}
+| | Configure manual keyed connection for IPSec
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | ${encr_alg} | ${encr_key}
+| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi}
+| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4}
+
+| Initialize LISP IPv6 forwarding in 3-node circular topology
+| | [Documentation] | Custom setup of IPv6 topology on all DUT nodes \
+| | ... | Don`t set route.
+| |
+| | ... | *Arguments:*
+| | ... | - dut1_dut2_address - Ip address from DUT1 to DUT2. Type: string
+| | ... | - dut1_tg_address - Ip address from DUT1 to tg. Type: string
+| | ... | - dut2_dut1_address - Ip address from DUT2 to DUT1. Type: string
+| | ... | - dut1_tg_address - Ip address from DUT1 to tg. Type: string
+| | ... | - duts_prefix - ip prefix. Type: int
+| |
+| | ... | *Return:*
+| | ... | - No value returned
+| |
+| | ... | *Example:*
+| | ... | \| Initialize LISP IPv6 forwarding in 3-node circular topology \
+| | ... | \| ${dut1_dut2_address} \| ${dut1_tg_address} \
+| | ... | \| ${dut2_dut1_address} \| ${dut2_tg_address} \| ${duts_prefix} \|
+| |
+| | [Arguments] | ${dut1_dut2_address} | ${dut1_tg_address}
+| | ... | ${dut2_dut1_address} | ${dut2_tg_address} | ${prefix}
+| |
+| | Set interfaces in path up
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${dut1_tg_address} | ${prefix}
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut1_dut2_address} | ${prefix}
+| | VPP Interface Set IP Address
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | ${dut2_dut1_address} | ${prefix}
+| | VPP Interface Set IP Address
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | ${dut2_tg_address} | ${prefix}
+| | Vpp All Ra Suppress Link Layer | ${nodes}
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 2001:1::2 | ${TG_pf1_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | 2001:2::2 | ${TG_pf2_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut2_dut1_address}
+| | ... | ${DUT2_${int}1_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | ${dut1_dut2_address}
+| | ... | ${DUT1_${int}2_mac}[0]
+
+| Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology
+| | [Documentation] | Custom setup of IPv4 over IPv6 topology on all DUT nodes \
+| | ... | Don`t set route.
+| |
+| | ... | *Arguments:*
+| | ... | - dut1_dut2_ip6_address - IPv6 address from DUT1 to DUT2.
+| | ... | Type: string
+| | ... | - dut1_tg_ip4_address - IPv4 address from DUT1 to tg. Type: string
+| | ... | - dut2_dut1_ip6_address - IPv6 address from DUT2 to DUT1.
+| | ... | Type: string
+| | ... | - dut1_tg_ip4_address - IPv4 address from DUT1 to tg. Type: string
+| | ... | - prefix4 - IPv4 prefix. Type: int
+| | ... | - prefix6 - IPv6 prefix. Type: int
+| |
+| | ... | *Return:*
+| | ... | - No value returned
+| |
+| | ... | *Example:*
+| | ... | \| Lisp IPv4 over IPv6 forwarding initialized in a 3-node circular \
+| | ... | topology \| ${dut1_dut2_ip6_address} \| ${dut1_tg_ip4_address} \
+| | ... | \| ${dut2_dut1_ip6_address} \| ${dut2_tg_ip4_address} \
+| | ... | \| ${prefix4} \| ${prefix6} \|
+| |
+| | [Arguments] | ${dut1_dut2_ip6_address} | ${dut1_tg_ip4_address}
+| | ... | ${dut2_dut1_ip6_address} | ${dut2_tg_ip4_address}
+| | ... | ${prefix4} | ${prefix6}
+| |
+| | Set interfaces in path up
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${dut1_tg_ip4_address} | ${prefix4}
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut1_dut2_ip6_address} | ${prefix6}
+| | VPP Interface Set IP Address
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | ${dut2_dut1_ip6_address} | ${prefix6}
+| | VPP Interface Set IP Address
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | ${dut2_tg_ip4_address} | ${prefix4}
+| | Vpp All Ra Suppress Link Layer | ${nodes}
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 10.10.10.2 | ${TG_pf1_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | 20.20.20.2 | ${TG_pf2_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut2_dut1_ip6_address}
+| | ... | ${DUT2_${int}1_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | ${dut1_dut2_ip6_address}
+| | ... | ${DUT1_${int}2_mac}[0]
+
+| Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology
+| | [Documentation] | Custom setup of IPv4 over IPv6 topology on all DUT nodes \
+| | ... | Don`t set route.
+| |
+| | ... | *Arguments:*
+| | ... | - dut1_dut2_ip4_address - IPv4 address from DUT1 to DUT2.
+| | ... | Type: string
+| | ... | - dut1_tg_ip6_address - IPv6 address from DUT1 to tg. Type: string
+| | ... | - dut2_dut1_ip4_address - IPv4 address from DUT2 to DUT1.
+| | ... | Type: string
+| | ... | - dut1_tg_ip6_address - IPv6 address from DUT1 to tg. Type: string
+| | ... | - prefix4 - IPv4 prefix. Type: int
+| | ... | - prefix6 - IPv6 prefix. Type: int
+| |
+| | ... | *Return:*
+| | ... | - No value returned
+| |
+| | ... | *Example:*
+| | ... | \| Lisp IPv6 over IPv4 forwarding initialized in a 3-node circular \
+| | ... | topology \| ${dut1_dut2_ip4_address} \| ${dut1_tg_ip6_address} \
+| | ... | \| ${dut2_dut1_ip4_address} \| ${dut2_tg_ip6_address} \
+| | ... | \| ${prefix6} \| ${prefix4} \|
+| |
+| | [Arguments] | ${dut1_dut2_ip4_address} | ${dut1_tg_ip6_address}
+| | ... | ${dut2_dut1_ip4_address} | ${dut2_tg_ip6_address}
+| | ... | ${prefix6} | ${prefix4}
+| |
+| | Set interfaces in path up
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${dut1_tg_ip6_address} | ${prefix6}
+| | VPP Interface Set IP Address
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut1_dut2_ip4_address} | ${prefix4}
+| | VPP Interface Set IP Address
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | ${dut2_dut1_ip4_address} | ${prefix4}
+| | VPP Interface Set IP Address
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | ${dut2_tg_ip6_address} | ${prefix6}
+| | Vpp All Ra Suppress Link Layer | ${nodes}
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | 2001:1::2 | ${TG_pf1_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | 2001:2::2 | ${TG_pf2_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut2_dut1_ip4_address}
+| | ... | ${DUT2_${int}1_mac}[0]
+| | VPP Add IP Neighbor
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | ${dut1_dut2_ip4_address}
+| | ... | ${DUT1_${int}2_mac}[0]
diff --git a/resources/libraries/robot/overlay/srv6.robot b/resources/libraries/robot/overlay/srv6.robot
index 8ac0343f9a..6c73ad4bdf 100644
--- a/resources/libraries/robot/overlay/srv6.robot
+++ b/resources/libraries/robot/overlay/srv6.robot
@@ -1,4 +1,4 @@
-# Copyright (c) 2018 Cisco and/or its affiliates.
+# Copyright (c) 2020 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:
@@ -189,7 +189,6 @@
| |
| | [Arguments] | ${nodes}
| |
-| | ${duts}= | Get Matches | ${nodes} | DUT*
| | FOR | ${dut} | IN | @{duts}
| | | Show SR Policies | ${nodes['${dut}']}
| | END
@@ -206,7 +205,6 @@
| |
| | [Arguments] | ${nodes}
| |
-| | ${duts}= | Get Matches | ${nodes} | DUT*
| | FOR | ${dut} | IN | @{duts}
| | | Show SR Steering Policies | ${nodes['${dut}']}
| | END
@@ -223,7 +221,6 @@
| |
| | [Arguments] | ${nodes}
| |
-| | ${duts}= | Get Matches | ${nodes} | DUT*
| | FOR | ${dut} | IN | @{duts}
| | | Show SR LocalSIDs | ${nodes['${dut}']}
| | END
@@ -237,25 +234,29 @@
| | ... | on both DUT nodes.
| |
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if1} | ${dut1_if1_ip6} | ${prefix}
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${dut1_if1_ip6} | ${prefix}
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if2} | ${dut1_if2_ip6} | ${prefix}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut1_if2_ip6} | ${prefix}
| | VPP Interface Set IP Address
-| | ... | ${dut2} | ${dut2_if1} | ${dut2_if1_ip6} | ${prefix}
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | ${dut2_if1_ip6} | ${prefix}
| | VPP Interface Set IP Address
-| | ... | ${dut2} | ${dut2_if2} | ${dut2_if2_ip6} | ${prefix}
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | ${dut2_if2_ip6} | ${prefix}
| | Vpp All Ra Suppress Link Layer | ${nodes}
| | FOR | ${number} | IN RANGE | 2 | ${dst_addr_nr}+2
| | | ${hexa_nr}= | Convert To Hex | ${number}
| | | VPP Add IP Neighbor | ${dut1}
-| | | ... | ${dut1_if1} | ${tg_if1_ip6_subnet}${hexa_nr} | ${tg_if1_mac}
+| | | ... | ${DUT1_${int}1}[0] | ${tg_if1_ip6_subnet}${hexa_nr}
+| | | ... | ${TG_pf1_mac}[0]
| | | VPP Add IP Neighbor | ${dut2}
-| | | ... | ${dut2_if2} | ${tg_if2_ip6_subnet}${hexa_nr} | ${tg_if2_mac}
+| | | ... | ${DUT2_${int}2}[0] | ${tg_if2_ip6_subnet}${hexa_nr}
+| | | ... | ${TG_pf2_mac}[0]
| | END
| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | ${dut2_if1_ip6} | ${dut2_if1_mac}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut2_if1_ip6}
+| | ... | ${DUT2_${int}1_mac}[0]
| | VPP Add IP Neighbor
-| | ... | ${dut2} | ${dut2_if1} | ${dut1_if2_ip6} | ${dut1_if2_mac}
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | ${dut1_if2_ip6}
+| | ... | ${DUT1_${int}2_mac}[0]
| | ${sid1}= | Set Variable If
| | ... | "${n}" == "1" | ${dut2_sid1}
| | ... | "${n}" == "2" | ${dut2_sid1_1}
@@ -263,9 +264,9 @@
| | ... | "${n}" == "1" | ${dut1_sid2}
| | ... | "${n}" == "2" | ${dut1_sid2_1}
| | Vpp Route Add | ${dut1} | ${sid1} | ${sid_prefix} | gateway=${dut2_if1_ip6}
-| | ... | interface=${dut1_if2}
+| | ... | interface=${DUT1_${int}2}[0]
| | Vpp Route Add | ${dut2} | ${sid2} | ${sid_prefix} | gateway=${dut1_if2_ip6}
-| | ... | interface=${dut2_if1}
+| | ... | interface=${DUT2_${int}1}[0]
# Configure SRv6 for direction0
| | Set SR Encaps Source Address on DUT | ${dut1} | ${dut1_sid1}
| | @{sid_list_dir0}= | Run Keyword If | "${n}" == "1"
@@ -278,15 +279,15 @@
| | ... | ip_addr=${tg_if2_ip6_subnet} | prefix=${sid_prefix}
| | Run Keyword If | "${n}" == "1"
| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1} | end.dx6
-| | ... | interface=${dut2_if2} | next_hop=${tg_if2_ip6_subnet}2
+| | ... | interface=${DUT2_${int}2}[0] | next_hop=${tg_if2_ip6_subnet}2
| | Run Keyword If | "${n}" == "2"
| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1_1} | end
| | Run Keyword If | "${n}" == "2" and "${prepos}" != "without"
| | ... | Configure SR LocalSID on DUT | ${dut2} | ${dut2_sid1_2} | end.dx6
-| | ... | interface=${dut2_if2} | next_hop=${tg_if2_ip6_subnet}2
+| | ... | interface=${DUT2_${int}2}[0] | next_hop=${tg_if2_ip6_subnet}2
| | Run Keyword If | "${n}" == "2" and "${prepos}" == "without"
| | ... | Vpp Route Add | ${dut2} | ${dut2_sid1_2} | ${sid_prefix}
-| | ... | gateway=${tg_if2_ip6_subnet}2 | interface=${dut2_if2}
+| | ... | gateway=${tg_if2_ip6_subnet}2 | interface=${DUT2_${int}2}[0]
# Configure SRv6 for direction1
| | Set SR Encaps Source Address on DUT | ${dut2} | ${dut2_sid2}
| | @{sid_list_dir1}= | Run Keyword If | "${n}" == "1"
@@ -299,15 +300,15 @@
| | ... | ip_addr=${tg_if1_ip6_subnet} | prefix=${sid_prefix}
| | Run Keyword If | "${n}" == "1"
| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2} | end.dx6
-| | ... | interface=${dut1_if1} | next_hop=${tg_if1_ip6_subnet}2
+| | ... | interface=${DUT1_${int}1}[0] | next_hop=${tg_if1_ip6_subnet}2
| | Run Keyword If | "${n}" == "2"
| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2_1} | end
| | Run Keyword If | "${n}" == "2" and "${prepos}" != "without"
| | ... | Configure SR LocalSID on DUT | ${dut1} | ${dut1_sid2_2} | end.dx6
-| | ... | interface=${dut1_if1} | next_hop=${tg_if1_ip6_subnet}2
+| | ... | interface=${DUT1_${int}1}[0] | next_hop=${tg_if1_ip6_subnet}2
| | Run Keyword If | "${n}" == "2" and "${prepos}" == "without"
| | ... | Vpp Route Add | ${dut1} | ${dut1_sid2_2} | ${sid_prefix}
-| | ... | gateway=${tg_if1_ip6_subnet}2 | interface=${dut1_if1}
+| | ... | gateway=${tg_if1_ip6_subnet}2 | interface=${DUT1_${int}1}[0]
| | Set interfaces in path up
| Initialize IPv6 forwarding over SRv6 with endpoint to SR-unaware Service Function via '${behavior}' behaviour in 3-node circular topology
@@ -339,30 +340,34 @@
| | | Show Memif | ${nodes['${dut}']}
| | END
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if1} | ${dut1_if1_ip6} | ${prefix}
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${dut1_if1_ip6} | ${prefix}
| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if2} | ${dut1_if2_ip6} | ${prefix}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut1_if2_ip6} | ${prefix}
| | VPP Interface Set IP Address | ${dut1} | ${dut1-memif-1-if1}
| | ... | ${dut1-memif-1-if1_ip6} | ${mem_prefix}
| | VPP Interface Set IP Address | ${dut1} | ${dut1-memif-1-if2}
| | ... | ${dut1-memif-1-if2_ip6} | ${mem_prefix}
| | VPP Interface Set IP Address
-| | ... | ${dut2} | ${dut2_if1} | ${dut2_if1_ip6} | ${prefix}
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | ${dut2_if1_ip6} | ${prefix}
| | VPP Interface Set IP Address
-| | ... | ${dut2} | ${dut2_if2} | ${dut2_if2_ip6} | ${prefix}
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | ${dut2_if2_ip6} | ${prefix}
| | VPP Interface Set IP Address | ${dut2} | ${dut2-memif-1-if1}
| | ... | ${dut2-memif-1-if1_ip6} | ${mem_prefix}
| | VPP Interface Set IP Address | ${dut2} | ${dut2-memif-1-if2}
| | ... | ${dut2-memif-1-if2_ip6} | ${mem_prefix}
| | Vpp All Ra Suppress Link Layer | ${nodes}
| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | ${dut2_if1_ip6} | ${dut2_if1_mac}
+| | ... | ${dut1} | ${DUT1_${int}2}[0] | ${dut2_if1_ip6}
+| | ... | ${DUT2_${int}1_mac}[0]
| | VPP Add IP Neighbor
-| | ... | ${dut2} | ${dut2_if1} | ${dut1_if2_ip6} | ${dut1_if2_mac}
+| | ... | ${dut2} | ${DUT2_${int}1}[0] | ${dut1_if2_ip6}
+| | ... | ${DUT1_${int}2_mac}[0]
| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if1} | ${tg_if1_ip6_subnet}2 | ${tg_if1_mac}
+| | ... | ${dut1} | ${DUT1_${int}1}[0] | ${tg_if1_ip6_subnet}2
+| | ... | ${TG_pf1_mac}[0]
| | VPP Add IP Neighbor
-| | ... | ${dut2} | ${dut2_if2} | ${tg_if2_ip6_subnet}2 | ${tg_if2_mac}
+| | ... | ${dut2} | ${DUT2_${int}2}[0] | ${tg_if2_ip6_subnet}2
+| | ... | ${TG_pf2_mac}[0]
| | ${dut1-memif-1-if2_mac}= | Get Interface MAC | ${dut1} | memif2
| | ${dut2-memif-1-if2_mac}= | Get Interface MAC | ${dut2} | memif2
| | VPP Add IP Neighbor | ${dut1}
diff --git a/resources/libraries/robot/performance/performance_configuration.robot b/resources/libraries/robot/performance/performance_configuration.robot
deleted file mode 100644
index 13acce1524..0000000000
--- a/resources/libraries/robot/performance/performance_configuration.robot
+++ /dev/null
@@ -1,215 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Documentation | Performance suite keywords - configuration
-
-*** Keywords ***
-| Initialize LISP IPv4 forwarding in 3-node circular topology
-| | [Documentation] | Custom setup of IPv4 addresses on all DUT nodes and TG \
-| | ... | Don`t set route.
-| |
-| | ... | *Arguments:*
-| | ... | - dut1_dut2_address - Ip address from DUT1 to DUT2. Type: string
-| | ... | - dut1_tg_address - Ip address from DUT1 to tg. Type: string
-| | ... | - dut2_dut1_address - Ip address from DUT2 to DUT1. Type: string
-| | ... | - dut1_tg_address - Ip address from DUT1 to tg. Type: string
-| | ... | - duts_prefix - ip prefix. Type: int
-| |
-| | ... | *Return:*
-| | ... | - No value returned
-| |
-| | ... | *Example:*
-| | ... | \| Initialize LISP IPv4 forwarding in 3-node circular topology \
-| | ... | \| ${dut1_dut2_address} \| ${dut1_tg_address} \
-| | ... | \| ${dut2_dut1_address} \| ${dut2_tg_address} \| ${duts_prefix} \|
-| |
-| | [Arguments] | ${dut1_dut2_address} | ${dut1_tg_address}
-| | ... | ${dut2_dut1_address} | ${dut2_tg_address} | ${duts_prefix}
-| |
-| | Set interfaces in path up
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 10.10.10.2 | ${tg_if1_mac}
-| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | ${dut2_dut1_address} | ${dut2_if1_mac}
-| | VPP Add IP Neighbor
-| | ... | ${dut2} | ${dut2_if1} | ${dut1_dut2_address} | ${dut1_if2_mac}
-| | VPP Add IP Neighbor | ${dut2} | ${dut2_if2} | 20.20.20.2 | ${tg_if2_mac}
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1}
-| | ... | ${dut1_tg_address} | ${duts_prefix}
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if2}
-| | ... | ${dut1_dut2_address} | ${duts_prefix}
-| | VPP Interface Set IP Address | ${dut2} | ${dut2_if1}
-| | ... | ${dut2_dut1_address} | ${duts_prefix}
-| | VPP Interface Set IP Address | ${dut2} | ${dut2_if2}
-| | ... | ${dut2_tg_address} | ${duts_prefix}
-
-| Initialize LISP GPE IPv4 over IPsec in 3-node circular topology
-| | [Documentation] | Setup Lisp GPE IPv4 forwarding over IPsec.
-| |
-| | ... | *Arguments:*
-| | ... | - encr_alg - Encryption algorithm. Type: string
-| | ... | - auth_alg - Authentication algorithm. Type: string
-| |
-| | ... | *Return:*
-| | ... | - No value returned
-| |
-| | ... | *Example:*
-| | ... | \| Initialize LISP GPE IPv4 over IPsec in 3-node circular topology\
-| | ... | \| ${encr_alg} \| ${auth_alg}
-| |
-| | [Arguments] | ${encr_alg} | ${auth_alg}
-| |
-| | Generate keys for IPSec | ${encr_alg} | ${auth_alg}
-| | Initialize LISP IPv4 forwarding in 3-node circular topology
-| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4}
-| | ... | ${dut2_to_tg_ip4} | ${prefix4}
-| | Configure LISP GPE topology in 3-node circular topology
-| | ... | ${dut1} | ${dut1_if2} | ${NONE}
-| | ... | ${dut2} | ${dut2_if1} | ${NONE}
-| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid}
-| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency}
-| | Configure manual keyed connection for IPSec
-| | ... | ${dut1} | ${dut1_if2} | ${encr_alg} | ${encr_key}
-| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi}
-| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4}
-| | Configure manual keyed connection for IPSec
-| | ... | ${dut2} | ${dut2_if1} | ${encr_alg} | ${encr_key}
-| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi}
-| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4}
-
-| Initialize LISP IPv6 forwarding in 3-node circular topology
-| | [Documentation] | Custom setup of IPv6 topology on all DUT nodes \
-| | ... | Don`t set route.
-| |
-| | ... | *Arguments:*
-| | ... | - dut1_dut2_address - Ip address from DUT1 to DUT2. Type: string
-| | ... | - dut1_tg_address - Ip address from DUT1 to tg. Type: string
-| | ... | - dut2_dut1_address - Ip address from DUT2 to DUT1. Type: string
-| | ... | - dut1_tg_address - Ip address from DUT1 to tg. Type: string
-| | ... | - duts_prefix - ip prefix. Type: int
-| |
-| | ... | *Return:*
-| | ... | - No value returned
-| |
-| | ... | *Example:*
-| | ... | \| Initialize LISP IPv6 forwarding in 3-node circular topology \
-| | ... | \| ${dut1_dut2_address} \| ${dut1_tg_address} \
-| | ... | \| ${dut2_dut1_address} \| ${dut2_tg_address} \| ${duts_prefix} \|
-| |
-| | [Arguments] | ${dut1_dut2_address} | ${dut1_tg_address}
-| | ... | ${dut2_dut1_address} | ${dut2_tg_address} | ${prefix}
-| |
-| | Set interfaces in path up
-| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if1} | ${dut1_tg_address} | ${prefix}
-| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if2} | ${dut1_dut2_address} | ${prefix}
-| | VPP Interface Set IP Address
-| | ... | ${dut2} | ${dut2_if1} | ${dut2_dut1_address} | ${prefix}
-| | VPP Interface Set IP Address
-| | ... | ${dut2} | ${dut2_if2} | ${dut2_tg_address} | ${prefix}
-| | Vpp All Ra Suppress Link Layer | ${nodes}
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 2001:1::2 | ${tg_if1_mac}
-| | VPP Add IP Neighbor | ${dut2} | ${dut2_if2} | 2001:2::2 | ${tg_if2_mac}
-| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | ${dut2_dut1_address} | ${dut2_if1_mac}
-| | VPP Add IP Neighbor
-| | ... | ${dut2} | ${dut2_if1} | ${dut1_dut2_address} | ${dut1_if2_mac}
-
-| Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology
-| | [Documentation] | Custom setup of IPv4 over IPv6 topology on all DUT nodes \
-| | ... | Don`t set route.
-| |
-| | ... | *Arguments:*
-| | ... | - dut1_dut2_ip6_address - IPv6 address from DUT1 to DUT2.
-| | ... | Type: string
-| | ... | - dut1_tg_ip4_address - IPv4 address from DUT1 to tg. Type: string
-| | ... | - dut2_dut1_ip6_address - IPv6 address from DUT2 to DUT1.
-| | ... | Type: string
-| | ... | - dut1_tg_ip4_address - IPv4 address from DUT1 to tg. Type: string
-| | ... | - prefix4 - IPv4 prefix. Type: int
-| | ... | - prefix6 - IPv6 prefix. Type: int
-| |
-| | ... | *Return:*
-| | ... | - No value returned
-| |
-| | ... | *Example:*
-| | ... | \| Lisp IPv4 over IPv6 forwarding initialized in a 3-node circular \
-| | ... | topology \| ${dut1_dut2_ip6_address} \| ${dut1_tg_ip4_address} \
-| | ... | \| ${dut2_dut1_ip6_address} \| ${dut2_tg_ip4_address} \
-| | ... | \| ${prefix4} \| ${prefix6} \|
-| |
-| | [Arguments] | ${dut1_dut2_ip6_address} | ${dut1_tg_ip4_address}
-| | ... | ${dut2_dut1_ip6_address} | ${dut2_tg_ip4_address}
-| | ... | ${prefix4} | ${prefix6}
-| |
-| | Set interfaces in path up
-| | VPP Interface Set IP Address | ${dut1} | ${dut1_if1}
-| | ... | ${dut1_tg_ip4_address} | ${prefix4}
-| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if2} | ${dut1_dut2_ip6_address} | ${prefix6}
-| | VPP Interface Set IP Address
-| | ... | ${dut2} | ${dut2_if1} | ${dut2_dut1_ip6_address} | ${prefix6}
-| | VPP Interface Set IP Address | ${dut2} | ${dut2_if2}
-| | ... | ${dut2_tg_ip4_address} | ${prefix4}
-| | Vpp All Ra Suppress Link Layer | ${nodes}
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 10.10.10.2 | ${tg_if1_mac}
-| | VPP Add IP Neighbor | ${dut2} | ${dut2_if2} | 20.20.20.2 | ${tg_if2_mac}
-| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | ${dut2_dut1_ip6_address} | ${dut2_if1_mac}
-| | VPP Add IP Neighbor
-| | ... | ${dut2} | ${dut2_if1} | ${dut1_dut2_ip6_address} | ${dut1_if2_mac}
-
-| Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology
-| | [Documentation] | Custom setup of IPv4 over IPv6 topology on all DUT nodes \
-| | ... | Don`t set route.
-| |
-| | ... | *Arguments:*
-| | ... | - dut1_dut2_ip4_address - IPv4 address from DUT1 to DUT2.
-| | ... | Type: string
-| | ... | - dut1_tg_ip6_address - IPv6 address from DUT1 to tg. Type: string
-| | ... | - dut2_dut1_ip4_address - IPv4 address from DUT2 to DUT1.
-| | ... | Type: string
-| | ... | - dut1_tg_ip6_address - IPv6 address from DUT1 to tg. Type: string
-| | ... | - prefix4 - IPv4 prefix. Type: int
-| | ... | - prefix6 - IPv6 prefix. Type: int
-| |
-| | ... | *Return:*
-| | ... | - No value returned
-| |
-| | ... | *Example:*
-| | ... | \| Lisp IPv6 over IPv4 forwarding initialized in a 3-node circular \
-| | ... | topology \| ${dut1_dut2_ip4_address} \| ${dut1_tg_ip6_address} \
-| | ... | \| ${dut2_dut1_ip4_address} \| ${dut2_tg_ip6_address} \
-| | ... | \| ${prefix6} \| ${prefix4} \|
-| |
-| | [Arguments] | ${dut1_dut2_ip4_address} | ${dut1_tg_ip6_address}
-| | ... | ${dut2_dut1_ip4_address} | ${dut2_tg_ip6_address}
-| | ... | ${prefix6} | ${prefix4}
-| |
-| | Set interfaces in path up
-| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if1} | ${dut1_tg_ip6_address} | ${prefix6}
-| | VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if2} | ${dut1_dut2_ip4_address} | ${prefix4}
-| | VPP Interface Set IP Address
-| | ... | ${dut2} | ${dut2_if1} | ${dut2_dut1_ip4_address} | ${prefix4}
-| | VPP Interface Set IP Address
-| | ... | ${dut2} | ${dut2_if2} | ${dut2_tg_ip6_address} | ${prefix6}
-| | Vpp All Ra Suppress Link Layer | ${nodes}
-| | VPP Add IP Neighbor | ${dut1} | ${dut1_if1} | 2001:1::2 | ${tg_if1_mac}
-| | VPP Add IP Neighbor | ${dut2} | ${dut2_if2} | 2001:2::2 | ${tg_if2_mac}
-| | VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if2} | ${dut2_dut1_ip4_address} | ${dut2_if1_mac}
-| | VPP Add IP Neighbor
-| | ... | ${dut2} | ${dut2_if1} | ${dut1_dut2_ip4_address} | ${dut1_if2_mac}
diff --git a/resources/libraries/robot/shared/container.robot b/resources/libraries/robot/shared/container.robot
index dbe2ae73a4..b2b3d01a4e 100644
--- a/resources/libraries/robot/shared/container.robot
+++ b/resources/libraries/robot/shared/container.robot
@@ -1,4 +1,4 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2020 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:
@@ -209,26 +209,40 @@
| | ${dut1_if2} = | Get Variable Value | \${dut1_if2} | ${None}
| | ${dut2_if2} = | Get Variable Value | \${dut2_if2} | ${None}
| | Run Keyword If | '${container_chain_topology}' == 'chain_ip4'
-| | ... | ${group}.Configure VPP In All Containers | ${container_chain_topology}
-| | ... | tg_if1_mac=${tg_if1_mac} | tg_if2_mac=${tg_if2_mac}
+| | ... | ${group}.Configure VPP In All Containers
+| | ... | ${container_chain_topology}
+| | ... | tg_if1_mac=${TG_pf1_mac}
+| | ... | tg_if2_mac=${TG_pf2_mac}
| | ... | nodes=${nf_nodes}
| | ... | ELSE IF | '${container_chain_topology}' == 'chain_ipsec'
-| | ... | ${group}.Configure VPP In All Containers | ${container_chain_topology}
-| | ... | tg_if1_ip4=${tg_if1_ip4} | tg_if1_mac=${tg_if1_mac}
-| | ... | tg_if2_ip4=${tg_if2_ip4} | tg_if2_mac=${tg_if2_mac}
-| | ... | dut1_if1_ip4=${dut1_if1_ip4} | dut1_if2_ip4=${dut1_if2_ip4}
-| | ... | dut2_if1_ip4=${dut2_if1_ip4} | dut2_if2_ip4=${dut2_if2_ip4}
-| | ... | raddr_ip4=${raddr_ip4} | laddr_ip4=${laddr_ip4}
-| | ... | nodes=${nodes} | nf_nodes=${nf_nodes}
+| | ... | ${group}.Configure VPP In All Containers
+| | ... | ${container_chain_topology}
+| | ... | tg_if1_ip4=${tg_if1_ip4}
+| | ... | tg_if1_mac=${TG_pf1_mac}[0]
+| | ... | tg_if2_ip4=${tg_if2_ip4}
+| | ... | tg_if2_mac=${TG_pf2_mac}[0]
+| | ... | dut1_if1_ip4=${dut1_if1_ip4}
+| | ... | dut1_if2_ip4=${dut1_if2_ip4}
+| | ... | dut2_if1_ip4=${dut2_if1_ip4}
+| | ... | dut2_if2_ip4=${dut2_if2_ip4}
+| | ... | raddr_ip4=${raddr_ip4}
+| | ... | laddr_ip4=${laddr_ip4}
+| | ... | nodes=${nodes}
+| | ... | nf_nodes=${nf_nodes}
| | ... | ELSE IF | '${container_chain_topology}' == 'pipeline_ip4'
-| | ... | ${group}.Configure VPP In All Containers | ${container_chain_topology}
-| | ... | tg_if1_mac=${tg_if1_mac} | tg_if2_mac=${tg_if2_mac}
+| | ... | ${group}.Configure VPP In All Containers
+| | ... | ${container_chain_topology}
+| | ... | tg_if1_mac=${TG_pf1_mac}[0]
+| | ... | tg_if2_mac=${TG_pf2_mac}[0]
| | ... | nodes=${nf_nodes}
| | ... | ELSE IF | '${container_chain_topology}' == 'cross_horiz'
-| | ... | ${group}.Configure VPP In All Containers | ${container_chain_topology}
-| | ... | dut1_if=${dut1_if2} | dut2_if=${dut2_if2}
+| | ... | ${group}.Configure VPP In All Containers
+| | ... | ${container_chain_topology}
+| | ... | dut1_if=${DUT1_${int}2}[0]
+| | ... | dut2_if=${DUT2_${int}2}[0]
| | ... | ELSE
-| | ... | ${group}.Configure VPP In All Containers | ${container_chain_topology}
+| | ... | ${group}.Configure VPP In All Containers
+| | ... | ${container_chain_topology}
| Stop all '${group}' containers
| | [Documentation] | Stop all container(s) in specific container group on all
@@ -324,11 +338,11 @@
| | ... | ELSE | Set variable | ${rxq_count_int}
| | VSWITCH.Configure VPP in all containers | chain_vswitch
| | ... | rxq=${rxq_count_int} | n_instances=${n_instances} | node=${dut}
-| | ... | dut1_if1=${dut1_if1} | dut1_if2=${dut1_if2}
-| | ... | dut2_if1=${dut2_if1} | dut2_if2=${dut2_if2}
+| | ... | dut1_if1=${DUT1_${int}1}[0] | dut1_if2=${DUT1_${int}2}[0]
+| | ... | dut2_if1=${DUT2_${int}1}[0] | dut2_if2=${DUT2_${int}2}[0]
| | ... | dut2_if2_ip4=${dut2_if2_ip4}
-| | ... | tg_if1_ip4=${tg_if1_ip4} | tg_if1_mac=${tg_if1_mac}
-| | ... | tg_if2_ip4=${tg_if2_ip4} | tg_if2_mac=${tg_if2_mac}
+| | ... | tg_if1_ip4=${tg_if1_ip4} | tg_if1_mac=${TG_pf1_mac}[0]
+| | ... | tg_if2_ip4=${tgi_f2_ip4} | tg_if2_mac=${TG_pf2_mac}[0]
| | ... | nodes=${nodes}
| | Start VPP in all '${container_group}' containers
diff --git a/resources/libraries/robot/shared/default.robot b/resources/libraries/robot/shared/default.robot
index 64365f352b..0a3efc285a 100644
--- a/resources/libraries/robot/shared/default.robot
+++ b/resources/libraries/robot/shared/default.robot
@@ -58,7 +58,6 @@
| Resource | resources/libraries/robot/overlay/lisp.robot
| Resource | resources/libraries/robot/overlay/lispgpe.robot
| Resource | resources/libraries/robot/overlay/lisp_api.robot
-| Resource | resources/libraries/robot/performance/performance_configuration.robot
| Resource | resources/libraries/robot/performance/performance_limits.robot
| Resource | resources/libraries/robot/performance/performance_utils.robot
| Resource | resources/libraries/robot/shared/interfaces.robot
@@ -68,7 +67,6 @@
| Resource | resources/libraries/robot/shared/suite_setup.robot
| Resource | resources/libraries/robot/shared/test_teardown.robot
| Resource | resources/libraries/robot/shared/test_setup.robot
-| Resource | resources/libraries/robot/shared/testing_path.robot
| Resource | resources/libraries/robot/shared/traffic.robot
| Resource | resources/libraries/robot/shared/vm.robot
@@ -188,18 +186,8 @@
| | ${rxd_count_int}= | Set variable | ${rxd}
| | ${txd_count_int}= | Set variable | ${txd}
| | FOR | ${dut} | IN | @{duts}
-| | | ${if1_status} | ${value}= | Run Keyword And Ignore Error
-| | | ... | Variable Should Exist | ${${dut}_if1}
-| | | @{if_list}= | Run Keyword If | '${if1_status}' == 'PASS'
-| | | ... | Create List | ${${dut}_if1}
-| | | ... | ELSE | Create List | ${${dut}_if1_1} | ${${dut}_if1_2}
-| | | ${if2_status} | ${value}= | Run Keyword And Ignore Error
-| | | ... | Variable Should Exist | ${${dut}_if2}
-| | | Run Keyword If | '${if2_status}' == 'PASS'
-| | | ... | Append To List | ${if_list} | ${${dut}_if2}
-| | | ... | ELSE
-| | | ... | Append To List | ${if_list} | ${${dut}_if2_1} | ${${dut}_if2_2}
-| | | ${numa}= | Get interfaces numa node | ${nodes['${dut}']} | @{if_list}
+| | | ${numa}= | Get interfaces numa node
+| | | ... | ${nodes['${dut}']} | @{${dut}_pf_pci}
| | | ${smt_used}= | Is SMT enabled | ${nodes['${dut}']['cpuinfo']}
| | | ${skip_cnt}= | Set variable | ${CPU_CNT_SYSTEM}
| | | ${cpu_main}= | Cpu list per node str | ${nodes['${dut}']} | ${numa}
@@ -239,80 +227,23 @@
| | Set Test Variable | ${rxd_count_int}
| | Set Test Variable | ${txd_count_int}
-| Add DPDK pci devices to all DUTs
-| | [Documentation]
-| | ... | Add PCI devices to VPP configuration file.
-| |
-| | FOR | ${dut} | IN | @{duts}
-| | | ${if1_status} | ${value}= | Run Keyword And Ignore Error
-| | | ... | Variable Should Exist | ${${dut}_if1}
-| | | ${if1_pci}= | Run Keyword If | '${if1_status}' == 'PASS'
-| | | ... | Get Interface PCI Addr | ${nodes['${dut}']} | ${${dut}_if1}
-| | | ${if1_1_pci}= | Run Keyword Unless | '${if1_status}' == 'PASS'
-| | | ... | Get Interface PCI Addr | ${nodes['${dut}']} | ${${dut}_if1_1}
-| | | ${if1_2_pci}= | Run Keyword Unless | '${if1_status}' == 'PASS'
-| | | ... | Get Interface PCI Addr | ${nodes['${dut}']} | ${${dut}_if1_2}
-| | | ${if2_status} | ${value}= | Run Keyword And Ignore Error
-| | | ... | Variable Should Exist | ${${dut}_if2}
-| | | ${if2_pci}= | Run Keyword If | '${if2_status}' == 'PASS'
-| | | ... | Get Interface PCI Addr | ${nodes['${dut}']} | ${${dut}_if2}
-| | | ${if2_1_pci}= | Run Keyword Unless | '${if2_status}' == 'PASS'
-| | | ... | Get Interface PCI Addr | ${nodes['${dut}']} | ${${dut}_if2_1}
-| | | ${if2_2_pci}= | Run Keyword Unless | '${if2_status}' == 'PASS'
-| | | ... | Get Interface PCI Addr | ${nodes['${dut}']} | ${${dut}_if2_2}
-| | | @{pci_devs}= | Run Keyword If | '${if1_status}' == 'PASS'
-| | | ... | Create List | ${if1_pci}
-| | | ... | ELSE
-| | | ... | Create List | ${if1_1_pci} | ${if1_2_pci}
-| | | Run Keyword If | '${if2_status}' == 'PASS'
-| | | ... | Append To List | ${pci_devs} | ${if2_pci}
-| | | ... | ELSE
-| | | ... | Append To List | ${pci_devs} | ${if2_1_pci} | ${if2_2_pci}
-| | | Run keyword | ${dut}.Add DPDK Dev | @{pci_devs}
-| | | Run Keyword If | '${if1_status}' == 'PASS'
-| | | ... | Set Test Variable | ${${dut}_if1_pci} | ${if1_pci}
-| | | Run Keyword Unless | '${if1_status}' == 'PASS'
-| | | ... | Set Test Variable | ${${dut}_if1_1_pci} | ${if1_1_pci}
-| | | Run Keyword Unless | '${if1_status}' == 'PASS'
-| | | ... | Set Test Variable | ${${dut}_if1_2_pci} | ${if1_2_pci}
-| | | Run Keyword If | '${if2_status}' == 'PASS'
-| | | ... | Set Test Variable | ${${dut}_if2_pci} | ${if2_pci}
-| | | Run Keyword Unless | '${if2_status}' == 'PASS'
-| | | ... | Set Test Variable | ${${dut}_if2_1_pci} | ${if2_1_pci}
-| | | Run Keyword Unless | '${if2_status}' == 'PASS'
-| | | ... | Set Test Variable | ${${dut}_if2_2_pci} | ${if2_2_pci}
-| | END
-
-| Add DPDK no PCI to all DUTs
-| | [Documentation] | Add DPDK no-pci to VPP startup configuration to all DUTs.
-| |
-| | FOR | ${dut} | IN | @{duts}
-| | | Run keyword | ${dut}.Add DPDK no PCI
-| | END
-
-| Add VLAN strip offload switch off between DUTs in 3-node single link topology
+| Add DPDK VLAN strip offload switch off between DUTs
| | [Documentation]
| | ... | Add VLAN Strip Offload switch off on PCI devices between DUTs to VPP
| | ... | configuration file.
| |
-| | Run keyword | DUT1.Add DPDK Dev Parameter | ${dut1_if2_pci}
-| | ... | vlan-strip-offload | off
-| | Run keyword | DUT2.Add DPDK Dev Parameter | ${dut2_if1_pci}
-| | ... | vlan-strip-offload | off
-
-| Add VLAN strip offload switch off between DUTs in 3-node double link topology
-| | [Documentation]
-| | ... | Add VLAN Strip Offload switch off on PCI devices between DUTs to VPP
-| | ... | configuration file
-| |
-| | Run keyword | DUT1.Add DPDK Dev Parameter | ${dut1_if2_1_pci}
-| | ... | vlan-strip-offload | off
-| | Run keyword | DUT1.Add DPDK Dev Parameter | ${dut1_if2_2_pci}
-| | ... | vlan-strip-offload | off
-| | Run keyword | DUT2.Add DPDK Dev Parameter | ${dut2_if1_1_pci}
-| | ... | vlan-strip-offload | off
-| | Run keyword | DUT2.Add DPDK Dev Parameter | ${dut2_if1_2_pci}
-| | ... | vlan-strip-offload | off
+| | FOR | ${pf} | IN RANGE | 1 | ${nic_pfs} + 1
+| | | ${_even}= | Evaluate | ${pf} % 2
+| | | Run Keyword Unless | ${even}
+| | | ... | DUT1.Add DPDK Dev Parameter | ${DUT1_${int}${pf}_pci}[0]
+| | | ... | vlan-strip-offload | off
+| | END
+| | FOR | ${pf} | IN RANGE | 1 | ${nic_pfs} + 1
+| | | ${_even}= | Evaluate | ${pf} % 2
+| | | Run Keyword If | ${even}
+| | | ... | DUT2.Add DPDK Dev Parameter | ${DUT2_${int}${pf}_pci}[0]
+| | | ... | vlan-strip-offload | off
+| | END
| Add NAT to all DUTs
| | [Documentation] | Add NAT configuration to all DUTs.
@@ -374,7 +305,6 @@
| |
| | ${setup_vpp_pids}= | Get VPP PIDs | ${nodes}
| | ${keys}= | Get Dictionary Keys | ${setup_vpp_pids}
-| | ${duts}= | Get Matches | ${nodes} | DUT*
| | FOR | ${key} | IN | @{keys}
| | | ${pid}= | Get From Dictionary | ${setup_vpp_pids} | ${key}
| | | Run Keyword If | $pid is None | FAIL | No VPP PID found on node ${key}
diff --git a/resources/libraries/robot/shared/interfaces.robot b/resources/libraries/robot/shared/interfaces.robot
index 18bb0d3568..f1dc89d300 100644
--- a/resources/libraries/robot/shared/interfaces.robot
+++ b/resources/libraries/robot/shared/interfaces.robot
@@ -19,147 +19,79 @@
| ${dpdk_no_tx_checksum_offload}= | ${True}
*** Keywords ***
-| Set interfaces in path up
+| Set single interfaces in path up
| | [Documentation]
-| | ... | *Set UP state on VPP interfaces in path on all DUT nodes and set
-| | ... | maximal MTU.*
-| |
-| | FOR | ${dut} | IN | @{duts}
-| | | Set interfaces in path up on DUT | ${dut}
-| | END
-| | All VPP Interfaces Ready Wait | ${nodes} | retries=${300}
-
-| Set interfaces in path up on DUT
-| | [Documentation]
-| | ... | *Set UP state on VPP interfaces in path on specified DUT node and
-| | ... | set maximal MTU.*
+| | ... | *Set UP state on single physical VPP interfaces in path on all DUT
+| | ... | nodes and set maximal MTU.*
| |
| | ... | *Arguments:*
-| | ... | - dut - DUT node on which to set the interfaces up.
-| | ... | Type: string
+| | ... | - pf - NIC physical function (physical port).
+| | ... | Type: integer
| |
| | ... | *Example:*
| |
-| | ... | \| Set interfaces in path up on DUT \| DUT1 \|
+| | ... | \| Set single interfaces in path \| 1 \|
| |
-| | [Arguments] | ${dut}
-# TODO: Rework KW to set all interfaces in path UP and set MTU (including
-# software interfaces. Run KW at the start phase of VPP setup to split
-# from other "functional" configuration. This will allow modularity of this
-# library
-| | ${if1_status} | ${value}= | Run Keyword And Ignore Error
-| | ... | Variable Should Exist | ${${dut}_if1}
-| | Run Keyword If | '${if1_status}' == 'PASS'
-| | ... | Set Interface State | ${nodes['${dut}']} | ${${dut}_if1} | up
-| | ... | ELSE
-| | ... | Set Interface State | ${nodes['${dut}']} | ${${dut}_if1_1} | up
-| | Run Keyword Unless | '${if1_status}' == 'PASS'
-| | ... | Set Interface State | ${nodes['${dut}']} | ${${dut}_if1_2} | up
-| | ${if2_status} | ${value}= | Run Keyword And Ignore Error
-| | ... | Variable Should Exist | ${${dut}_if2}
-| | Run Keyword If | '${if2_status}' == 'PASS'
-| | ... | Set Interface State | ${nodes['${dut}']} | ${${dut}_if2} | up
-| | ... | ELSE
-| | ... | Set Interface State | ${nodes['${dut}']} | ${${dut}_if2_1} | up
-| | Run Keyword Unless | '${if2_status}' == 'PASS'
-| | ... | Set Interface State | ${nodes['${dut}']} | ${${dut}_if2_2} | up
-| | ${if1_status} | ${value}= | Run Keyword And Ignore Error
-| | ... | Variable Should Exist | ${${dut}_if1}
-| | Run Keyword If | '${if1_status}' == 'PASS'
-| | ... | VPP Set Interface MTU | ${nodes['${dut}']} | ${${dut}_if1}
-| | ... | ELSE
-| | ... | VPP Set Interface MTU | ${nodes['${dut}']} | ${${dut}_if1_1}
-| | Run Keyword Unless | '${if1_status}' == 'PASS'
-| | ... | VPP Set Interface MTU | ${nodes['${dut}']} | ${${dut}_if1_2}
-| | ${if2_status} | ${value}= | Run Keyword And Ignore Error
-| | ... | Variable Should Exist | ${${dut}_if2}
-| | Run Keyword If | '${if2_status}' == 'PASS'
-| | ... | VPP Set Interface MTU | ${nodes['${dut}']} | ${${dut}_if2}
-| | ... | ELSE
-| | ... | VPP Set Interface MTU | ${nodes['${dut}']} | ${${dut}_if2_1}
-| | Run Keyword Unless | '${if2_status}' == 'PASS'
-| | ... | VPP Set Interface MTU | ${nodes['${dut}']} | ${${dut}_if2_2}
+| | [Arguments] | ${pf}=${1}
+| |
+| | FOR | ${dut} | IN | @{duts}
+| | | Set interfaces in path up on node on PF | ${dut} | ${pf}
+| | END
+| | All VPP Interfaces Ready Wait | ${nodes} | retries=${60}
-| Set single interfaces in path up
+| Set interfaces in path up
| | [Documentation]
-| | ... | *Set UP state on single VPP interfaces in path on all DUT nodes and set
+| | ... | *Set UP state on VPP interfaces in path on all DUT nodes and set
| | ... | maximal MTU.*
| |
-# TODO: Rework KW to set all interfaces in path UP and set MTU (including
-# software interfaces. Run KW at the start phase of VPP setup to split
-# from other "functional" configuration. This will allow modularity of this
-# library
| | FOR | ${dut} | IN | @{duts}
-| | | ${if1_status} | ${value}= | Run Keyword And Ignore Error
-| | | ... | Variable Should Exist | ${${dut}_if1}
-| | | Run Keyword If | '${if1_status}' == 'PASS'
-| | | ... | Set Interface State | ${nodes['${dut}']} | ${${dut}_if1} | up
-| | | ... | ELSE
-| | | ... | Set Interface State | ${nodes['${dut}']} | ${${dut}_if1_1} | up
-| | | Run Keyword Unless | '${if1_status}' == 'PASS'
-| | | ... | Set Interface State | ${nodes['${dut}']} | ${${dut}_if1_2} | up
+| | | Set interfaces in path up on node | ${dut}
| | END
-| | FOR | ${dut} | IN | @{duts}
-| | | ${if1_status} | ${value}= | Run Keyword And Ignore Error
-| | | ... | Variable Should Exist | ${${dut}_if1}
-| | | Run Keyword If | '${if1_status}' == 'PASS'
-| | | ... | VPP Set Interface MTU | ${nodes['${dut}']} | ${${dut}_if1}
-| | | ... | ELSE
-| | | ... | VPP Set Interface MTU | ${nodes['${dut}']} | ${${dut}_if1_1}
-| | | Run Keyword Unless | '${if1_status}' == 'PASS'
-| | | ... | VPP Set Interface MTU | ${nodes['${dut}']} | ${${dut}_if1_2}
-| | END
-| | All VPP Interfaces Ready Wait | ${nodes}
+| | All VPP Interfaces Ready Wait | ${nodes} | retries=${60}
-| Get Vhost dump
-| | [Documentation] | Get vhost-user dump.
-| |
-| | ... | *Arguments:*
-| | ... | - node - DUT node data. Type: dictionary
-| |
-| | [Arguments] | ${dut_node}
-| |
-| | [Return] | ${vhost_dump}
-| |
-| | ${vhost_dump}= | Vhost User Dump | ${dut_node}
-
-| Initialize layer interface on node
+| Set interfaces in path up on node
| | [Documentation]
-| | ... | Baseline interfaces variables to be created.
+| | ... | *Set UP state on VPP interfaces in path on specified DUT node and
+| | ... | set maximal MTU.*
| |
| | ... | *Arguments:*
-| | ... | - dut - DUT node. Type: string
-| | ... | - count - Number of baseline interface variables. Type: integer
+| | ... | - dut - DUT node on which to set the interfaces up.
+| | ... | Type: string
| |
| | ... | *Example:*
| |
-| | ... | \| Initialize layer interface on node \| DUT1 \| 1 \|
+| | ... | \| Set interfaces in path up on node \| DUT1 \|
| |
-| | [Arguments] | ${dut} | ${count}=${1}
+| | [Arguments] | ${dut}
| |
-| | ${dut_str}= | Convert To Lowercase | ${dut}
-| | FOR | ${id} | IN RANGE | 1 | ${count} + 1
-| | | Set Test Variable | ${${dut_str}_if_${id}_1} | ${${dut_str}_if1}
-| | | Set Test Variable | ${${dut_str}_if_${id}_2} | ${${dut_str}_if2}
+| | FOR | ${pf} | IN RANGE | 1 | ${nic_pfs} + 1
+| | | Set interfaces in path up on node on PF | ${dut} | ${pf}
| | END
-| Initialize layer interface
+| Set interfaces in path up on node on PF
| | [Documentation]
-| | ... | Physical interfaces variables to be created on all DUTs.
+| | ... | *Set UP state on VPP interfaces in path on specified DUT node and
+| | ... | set maximal MTU.*
| |
| | ... | *Arguments:*
-| | ... | - count - Number of untagged interfaces variables. Type: integer
+| | ... | - dut - DUT node on which to set the interfaces up.
+| | ... | Type: string
+| | ... | - pf - NIC physical function (physical port).
+| | ... | Type: integer
| |
| | ... | *Example:*
| |
-| | ... | \| Initialize layer interface \| 1 \|
+| | ... | \| Set interfaces in path up on node on PF \| DUT1 \| 1 \|
| |
-| | [Arguments] | ${count}=${1}
+| | [Arguments] | ${dut} | ${pf}
| |
-| | FOR | ${dut} | IN | @{duts}
-| | | Initialize layer interface on node | ${dut} | count=${count}
+| | ${_chains} | ${value}= | Run Keyword And Ignore Error
+| | ... | Variable Should Exist | @{${dut}_${int}${pf}_1}
+| | ${_id}= | Set Variable If | '${_chains}' == 'PASS' | _1 | ${EMPTY}
+| | FOR | ${if} | IN | @{${dut}_${int}${pf}${_id}}
+| | | Set Interface State | ${nodes['${dut}']} | ${if} | up
+| | | VPP Set Interface MTU | ${nodes['${dut}']} | ${if}
| | END
-| | Set Test Variable | ${prev_layer} | if
| Pre-initialize layer driver
| | [Documentation]
@@ -182,8 +114,8 @@
| | ... | Pre-initialize vfio-pci driver by adding related sections to startup
| | ... | config on all DUTs.
| |
-| | Add DPDK pci devices to all DUTs
| | FOR | ${dut} | IN | @{duts}
+| | | Run keyword | ${dut}.Add DPDK Dev | @{${dut}_pf_pci}
| | | Run Keyword If | ${dpdk_no_tx_checksum_offload}
| | | ... | ${dut}.Add DPDK No Tx Checksum Offload
| | | Run Keyword | ${dut}.Add DPDK Log Level | debug
@@ -198,6 +130,10 @@
| | | Run Keyword If | '${crypto_type}' != '${None}'
| | | ... | ${dut}.Add DPDK Cryptodev | ${thr_count_int}
| | END
+| | ${_vlan_strip} | ${value}= | Run Keyword And Ignore Error
+| | ... | Variable Should Exist | ${vlan_strip_off}
+| | Run keyword If | '${_vlan_strip}' == 'PASS' and ${duts_count} == 2
+| | ... | Add DPDK VLAN strip offload switch off between DUTs
| Pre-initialize layer avf on all DUTs
| | [Documentation]
@@ -213,7 +149,7 @@
| Initialize layer driver
| | [Documentation]
-| | ... | Initialize driver based interfaces on each DUT. Interfaces are
+| | ... | Initialize driver based interfaces on all DUT. Interfaces are
| | ... | brought up.
| |
| | ... | *Arguments:*
@@ -227,91 +163,205 @@
| | [Arguments] | ${driver}
| |
| | FOR | ${dut} | IN | @{duts}
-| | | Run Keyword | Initialize layer ${driver} on node | ${dut}
+| | | Initialize layer driver on node | ${dut} | ${driver}
| | END
-| | Set Test Variable | ${prev_layer} | vf
+| | Set Test Variable | ${int} | vf
| | Set interfaces in path up
+| Initialize layer driver on node
+| | [Documentation]
+| | ... | Initialize driver based interfaces on DUT.
+| |
+| | ... | *Arguments:*
+| | ... | - dut - DUT node.
+| | ... | Type: string
+| | ... | - driver - NIC driver used in test [vfio-pci|avf|rdma-core].
+| | ... | Type: string
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Initialize layer driver \| DUT1 \| vfio-pci \|
+| |
+| | [Arguments] | ${dut} | ${driver}
+| |
+| | FOR | ${pf} | IN RANGE | 1 | ${nic_pfs} + 1
+| | | ${_vf}=
+| | | ... | Copy List | ${${dut}_${int}${pf}}
+| | | ${_ip4_addr}=
+| | | ... | Copy List | ${${dut}_${int}${pf}_ip4_addr}
+| | | ${_ip4_prefix}=
+| | | ... | Copy List | ${${dut}_${int}${pf}_ip4_prefix}
+| | | ${_mac}=
+| | | ... | Copy List | ${${dut}_${int}${pf}_mac}
+| | | ${_pci}=
+| | | ... | Copy List | ${${dut}_${int}${pf}_pci}
+| | | ${_vlan}=
+| | | ... | Copy List | ${${dut}_${int}${pf}_vlan}
+| | | Set Test Variable
+| | | ... | ${${dut}_vf${pf}} | ${_vf}
+| | | Set Test Variable
+| | | ... | ${${dut}_vf${pf}_ip4_addr} | ${_ip4_addr}
+| | | Set Suite Variable
+| | | ... | ${${dut}_vf${pf}_ip4_prefix} | ${_ip4_prefix}
+| | | Set Test Variable
+| | | ... | ${${dut}_vf${pf}_mac} | ${_mac}
+| | | Set Test Variable
+| | | ... | ${${dut}_vf${pf}_pci} | ${_pci}
+| | | Set Test Variable
+| | | ... | ${${dut}_vf${pf}_vlan} | ${_vlan}
+| | | Run Keyword | Initialize layer ${driver} on node | ${dut} | ${pf}
+| | END
+
| Initialize layer vfio-pci on node
| | [Documentation]
-| | ... | Initialize vfio-pci interfaces on DUT. Currently no operation.
+| | ... | Initialize vfio-pci interfaces on DUT on NIC PF.
+| | ... | Currently no operation.
| |
| | ... | *Arguments:*
| | ... | - dut - DUT node. Type: string
+| | ... | - pf - NIC physical function (physical port). Type: integer
| |
| | ... | *Example:*
| |
-| | ... | \| Initialize layer vfio-pci on node \| DUT1 \|
+| | ... | \| Initialize layer vfio-pci on node \| DUT1 \| 1 \|
| |
-| | [Arguments] | ${dut}
+| | [Arguments] | ${dut} | ${pf}
| |
| | No operation
| Initialize layer avf on node
| | [Documentation]
-| | ... | Initialize AVF interfaces on DUT.
+| | ... | Initialize AVF (Intel) interfaces on DUT on NIC PF.
| |
| | ... | *Arguments:*
| | ... | - dut - DUT node. Type: string
+| | ... | - pf - NIC physical function (physical port). Type: integer
| |
| | ... | *Example:*
| |
-| | ... | \| Initialize layer avf on node \| DUT1 \|
+| | ... | \| Initialize layer avf on node \| DUT1 \| 1 \|
+| |
+| | [Arguments] | ${dut} | ${pf}
+| |
+| | FOR | ${vf} | IN RANGE | 0 | ${nic_vfs}
+| | | ${_avf}= | VPP Create AVF Interface
+| | | ... | ${nodes['${dut}']} | ${${dut}_vf${pf}}[${vf}]
+| | | ... | num_rx_queues=${rxq_count_int}
+| | | ... | rxq_size=${nic_rxq_size} | txq_size=${nic_txq_size}
+| | | ${_ip4}=
+| | | ... | Get Interface IP4 | ${nodes['${dut}']} | ${_avf}
+| | | ${_ip4_prefix}=
+| | | ... | Get Interface IP4 Prefix Length | ${nodes['${dut}']} | ${_avf}
+| | | ${_mac}=
+| | | ... | Get Interface MAC | ${nodes['${dut}']} | ${_avf}
+| | | ${_pci}=
+| | | ... | Get Interface PCI Addr | ${nodes['${dut}']} | ${_avf}
+| | | ${_vlan}=
+| | | ... | Get Interface VLAN | ${nodes['${dut}']} | ${_avf}
+| | | Set List Value | ${${dut}_vf${pf}} | ${vf} | ${_avf}
+| | | Set List Value | ${${dut}_vf${pf}_ip4_addr} | ${vf} | ${_ip4}
+| | | Set List Value | ${${dut}_vf${pf}_ip4_prefix} | ${vf} | ${_ip4_prefix}
+| | | Set List Value | ${${dut}_vf${pf}_mac} | ${vf} | ${_mac}
+| | | Set List Value | ${${dut}_vf${pf}_pci} | ${vf} | ${_pci}
+| | | Set List Value | ${${dut}_vf${pf}_vlan} | ${vf} | ${_vlan}
+| | END
+
+| Initialize layer rdma-core on node
+| | [Documentation]
+| | ... | Initialize rdma-core (Mellanox VPP) interfaces on DUT on NIC PF.
| |
-| | [Arguments] | ${dut}
+| | ... | *Arguments:*
+| | ... | - dut - DUT node. Type: string
+| | ... | - pf - NIC physical function (physical port). Type: integer
| |
-| | ${dut_str}= | Convert To Lowercase | ${dut}
-| | ${if1_vlan}= | Get Interface Vlan | ${nodes['${dut}']} | ${${dut}_if1}
-| | ${if2_vlan}= | Get Interface Vlan | ${nodes['${dut}']} | ${${dut}_if2}
-| | Set Test Variable | ${${dut_str}_vlan1} | ${if1_vlan}
-| | Set Test Variable | ${${dut_str}_vlan2} | ${if2_vlan}
-| | ${dut_new_if1}= | VPP Create AVF Interface | ${nodes['${dut}']}
-| | ... | ${${dut}_if1_vf0} | num_rx_queues=${rxq_count_int}
-| | ... | rxq_size=${nic_rxq_size} | txq_size=${nic_txq_size}
-| | ${dut_new_if1_mac}= | Get Interface MAC | ${nodes['${dut}']}
-| | ... | ${dut_new_if1}
-| | ${dut_new_if2}= | VPP Create AVF Interface | ${nodes['${dut}']}
-| | ... | ${${dut}_if2_vf0} | num_rx_queues=${rxq_count_int}
+| | ... | *Example:*
+| |
+| | ... | \| Initialize layer rdma-core on node \| DUT1 \| 1 \|
+| |
+| | [Arguments] | ${dut} | ${pf}
+| |
+| | ${_rdma}= | VPP Create Rdma Interface
+| | ... | ${nodes['${dut}']} | ${${dut}_vf${pf}}[0]
+| | ... | num_rx_queues=${rxq_count_int}
| | ... | rxq_size=${nic_rxq_size} | txq_size=${nic_txq_size}
-| | ${dut_new_if2_mac}= | Get Interface MAC | ${nodes['${dut}']}
-| | ... | ${dut_new_if2}
-| | Set Test Variable | ${${dut_str}_if1} | ${dut_new_if1}
-| | Set Test Variable | ${${dut_str}_if2} | ${dut_new_if2}
-| | Set Test Variable | ${${dut_str}_if1_mac} | ${dut_new_if1_mac}
-| | Set Test Variable | ${${dut_str}_if2_mac} | ${dut_new_if2_mac}
+| | Set List Value | ${${dut}_vf${pf}} | 0 | ${_rdma}
-| Initialize layer rdma-core on node
+| Initialize layer interface
| | [Documentation]
-| | ... | Initialize rdma-core (MLX) interfaces on DUT.
+| | ... | Physical interfaces variables to be created on all DUTs.
+| |
+| | ... | *Arguments:*
+| | ... | - count - Number of untagged interfaces variables. Type: integer
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Initialize layer interface \| 1 \|
+| |
+| | [Arguments] | ${count}=${1}
+| |
+| | FOR | ${dut} | IN | @{duts}
+| | | Initialize layer interface on node | ${dut} | count=${count}
+| | END
+
+| Initialize layer interface on node
+| | [Documentation]
+| | ... | Physical interfaces variables to be created on all DUTs.
| |
| | ... | *Arguments:*
| | ... | - dut - DUT node. Type: string
+| | ... | - count - Number of baseline interface variables. Type: integer
| |
| | ... | *Example:*
| |
-| | ... | \| Initialize layer rdma-core on node \| DUT1 \|
+| | ... | \| Initialize layer interface on node \| DUT1 \| 1 \|
| |
-| | [Arguments] | ${dut}
+| | [Arguments] | ${dut} | ${count}=${1}
| |
-| | ${dut_str}= | Convert To Lowercase | ${dut}
-| | ${if1_vlan}= | Get Interface Vlan | ${nodes['${dut}']} | ${${dut}_if1}
-| | ${if2_vlan}= | Get Interface Vlan | ${nodes['${dut}']} | ${${dut}_if2}
-| | Set Test Variable | ${${dut_str}_vlan1} | ${if1_vlan}
-| | Set Test Variable | ${${dut_str}_vlan2} | ${if2_vlan}
-| | ${dut_new_if1}= | VPP Create Rdma Interface | ${nodes['${dut}']}
-| | ... | ${${dut}_if1} | num_rx_queues=${rxq_count_int}
-| | ... | rxq_size=${nic_rxq_size} | txq_size=${nic_txq_size}
-| | ${dut_new_if1_mac}= | Get Interface MAC | ${nodes['${dut}']}
-| | ... | ${dut_new_if1}
-| | ${dut_new_if2}= | VPP Create Rdma Interface | ${nodes['${dut}']}
-| | ... | ${${dut}_if2} | num_rx_queues=${rxq_count_int}
-| | ... | rxq_size=${nic_rxq_size} | txq_size=${nic_txq_size}
-| | ${dut_new_if2_mac}= | Get Interface MAC | ${nodes['${dut}']}
-| | ... | ${dut_new_if2}
-| | Set Test Variable | ${${dut_str}_if1} | ${dut_new_if1}
-| | Set Test Variable | ${${dut_str}_if2} | ${dut_new_if2}
-| | Set Test Variable | ${${dut_str}_if1_mac} | ${dut_new_if1_mac}
-| | Set Test Variable | ${${dut_str}_if2_mac} | ${dut_new_if2_mac}
+| | FOR | ${pf} | IN RANGE | 1 | ${nic_pfs} + 1
+| | | Initialize layer interface on node on PF | ${dut} | ${pf} | count=${count}
+| | END
+
+| Initialize layer interface on node on PF
+| | [Documentation]
+| | ... | Baseline interfaces variables to be created.
+| |
+| | ... | *Arguments:*
+| | ... | - dut - DUT node. Type: string
+| | ... | - pf - NIC physical function (physical port). Type: integer
+| | ... | - count - Number of baseline interface variables. Type: integer
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Initialize layer interface on node on PF \| DUT1 \| 1 \| 1 \|
+| |
+| | [Arguments] | ${dut} | ${pf} | ${count}=${1}
+| |
+| | FOR | ${id} | IN RANGE | 1 | ${count} + 1
+| | | Set Test Variable
+| | | ... | ${${dut}_${int}${pf}_${id}} | ${${dut}_${int}${pf}}
+| | END
+
+| Initialize layer bonding
+| | [Documentation]
+| | ... | Bonded interfaces and variables to be created on all DUT's interfaces.
+| |
+| | ... | *Arguments:*
+| | ... | - bond_mode - Link bonding mode. Type: string
+| | ... | - lb_mode - Load balance mode. Type: string
+| | ... | - count - Number of bond interface variables. Type: integer
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Initialize layer bonding \| xor \| l34 \| 1 \|
+| |
+| | [Arguments] | ${bond_mode}=xor | ${lb_mode}=l34 | ${count}=${1}
+| |
+| | FOR | ${dut} | IN | @{duts}
+| | | Initialize layer bonding on node
+| | | ... | ${dut} | bond_mode=${bond_mode} | lb_mode=${lb_mode}
+| | | ... | count=${count}
+| | END
+| | Set Test Variable | ${int} | bond
| Initialize layer bonding on node
| | [Documentation]
@@ -330,101 +380,80 @@
| |
| | [Arguments] | ${dut} | ${bond_mode}=xor | ${lb_mode}=l34 | ${count}=${1}
| |
-| | ${dut_str}= | Convert To Lowercase | ${dut}
| | ${if_index}= | VPP Create Bond Interface
| | ... | ${nodes['${dut}']} | ${bond_mode} | load_balance=${lb_mode}
| | ... | mac=00:00:00:01:01:01
| | Set Interface State | ${nodes['${dut}']} | ${if_index} | up
| | VPP Enslave Physical Interface
-| | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_1_1} | ${if_index}
+| | ... | ${nodes['${dut}']} | ${${dut}_${int}1_1} | ${if_index}
| | VPP Enslave Physical Interface
-| | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_1_2} | ${if_index}
+| | ... | ${nodes['${dut}']} | ${${dut}_${int}2_1} | ${if_index}
| | FOR | ${id} | IN RANGE | 1 | ${count} + 1
-| | | Set Test Variable | ${${dut_str}_bond_${id}_1} | ${if_index}
-| | | Set Test Variable | ${${dut_str}_bond_${id}_2} | ${if_index}
+| | | Set Test Variable | ${${dut}_bond1_${id}} | ${if_index}
+| | | Set Test Variable | ${${dut}_bond2_${id}} | ${if_index}
| | END
-| Initialize layer bonding
+| Initialize layer dot1q
| | [Documentation]
-| | ... | Bonded interfaces and variables to be created on all DUT's interfaces.
+| | ... | Dot1q interfaces and variables to be created on all DUTs.
| |
| | ... | *Arguments:*
-| | ... | - bond_mode - Link bonding mode. Type: string
-| | ... | - lb_mode - Load balance mode. Type: string
-| | ... | - count - Number of bond interface variables. Type: integer
+| | ... | - count - Number of chains.
+| | ... | Type: integer
+| | ... | - vlan_per_chain - Whether to create vlan subinterface for each chain.
+| | ... | Type: boolean
+| | ... | - start - Id of first chain, allows adding chains during test.
+| | ... | Type: integer
| |
-| | ... | *Example:*
+| | ... | \| Initialize layer dot1q \| 1 \| True \| 1 \|
| |
-| | ... | \| Initialize layer bonding \| xor \| l34 \| 1 \|
-| |
-| | [Arguments] | ${bond_mode}=xor | ${lb_mode}=l34 | ${count}=${1}
+| | [Arguments] | ${count}=${1} | ${vlan_per_chain}=${True} | ${start}=${1}
| |
| | FOR | ${dut} | IN | @{duts}
-| | | Initialize layer bonding on node
-| | | ... | ${dut} | bond_mode=${bond_mode} | lb_mode=${lb_mode}
-| | | ... | count=${count}
+| | | Initialize layer dot1q on node
+| | | ... | ${dut} | count=${count} | vlan_per_chain=${vlan_per_chain}
+| | | ... | start=${start}
| | END
-| | Set Test Variable | ${prev_layer} | bond
+| | Set Test Variable | ${int} | dot1q
-| Initialize layer dot1q on node for chain
+| Initialize layer dot1q on node
| | [Documentation]
-| | ... | Optionally create tag popping subinterface per chain.
-| | ... | Return interface indices for dot1q layer interfaces,
-| | ... | or Nones if subinterfaces are not created.
+| | ... | Dot1q interfaces and variables to be created on all DUT's node.
| |
| | ... | *Arguments:*
-| | ... | - dut - DUT node. Type: string
-| | ... | - id - Positive index of the chain. Type: integer
+| | ... | - dut - DUT node.
+| | ... | Type: string
+| | ... | - count - Number of chains.
+| | ... | Type: integer
| | ... | - vlan_per_chain - Whether to create vlan subinterface for each chain.
| | ... | Type: boolean
+| | ... | - start - Id of first chain, allows adding chains during test.
+| | ... | Type: integer
| |
| | ... | *Example:*
| |
-| | ... | \| Initialize layer dot1q on node for chain \| DUT1 \| 1 \| True \|
+| | ... | \| Initialize layer dot1q on node \| DUT1 \| 1 \| True \| 1 \|
| |
-| | [Arguments] | ${dut} | ${id} | ${vlan_per_chain}=${True}
+| | [Arguments] | ${dut} | ${count}=${1} | ${vlan_per_chain}=${True}
+| | ... | ${start}=${1}
| |
-| | ${dut_str}= | Convert To Lowercase | ${dut}
-| | Return From Keyword If | ${id} != ${1} and not ${vlan_per_chain}
-| | ... | ${NONE} | ${NONE}
-| | # TODO: Is it worth creating Get Variable Value If Not None keyword?
-| | ${default}= | Evaluate | ${100} + ${id} - ${1}
-| | ${if1_vlan}= | Get Variable Value | \${${dut_str}_vlan1}
-| | ${if1_vlan}= | Set Variable If | '${if1_vlan}' != '${NONE}'
-| | ... | ${if1_vlan} | ${default}
-| | ${default}= | Evaluate | ${200} + ${id} - ${1}
-| | ${if2_vlan}= | Get Variable Value | \${${dut_str}_vlan2}
-| | ${if2_vlan}= | Set Variable If | '${if2_vlan}' != '${NONE}'
-| | ... | ${if2_vlan} | ${default}
-| | ${if1_name} | ${if1_index}= | Create Vlan Subinterface
-| | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_${id}_1}
-| | ... | ${if1_vlan}
-| | ${if2_name} | ${if2_index}= | Create Vlan Subinterface
-| | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_${id}_2}
-| | ... | ${if2_vlan}
-| | Set Interface State | ${nodes['${dut}']} | ${if1_index} | up
-| | Set Interface State | ${nodes['${dut}']} | ${if2_index} | up
-| | Configure L2 tag rewrite method on interfaces
-| | ... | ${nodes['${dut}']} | ${if1_index} | TAG_REWRITE_METHOD=pop-1
-| | Configure L2 tag rewrite method on interfaces
-| | ... | ${nodes['${dut}']} | ${if2_index} | TAG_REWRITE_METHOD=pop-1
-| | Return From Keyword | ${if1_index} | ${if2_index}
+| | FOR | ${pf} | IN RANGE | 1 | ${nic_pfs} + 1
+| | | Initialize layer dot1q on node on PF | ${dut} | pf=${pf} | count=${count}
+| | | ... | vlan_per_chain=${vlan_per_chain} | start=${start}
+| | END
-| Initialize layer dot1q on node
+| Initialize layer dot1q on node on PF
| | [Documentation]
| | ... | Dot1q interfaces and variables to be created on all DUT's node
| | ... | interfaces.
| |
-| | ... | TODO: Unify names for number of chains/pipelines/instances/interfaces.
-| | ... | Chose names and descriptions that makes sense for both
-| | ... | nf_density and older tests.
-| | ... | Note that with vlan_per_chain=False it is not a number of interfaces.
-| | ... | At least not number of real interfaces, just number of aliases.
-| | ... | This TODO applies also to all keywords with nf_chains argument.
-| |
| | ... | *Arguments:*
-| | ... | - dut - DUT node. Type: string
-| | ... | - count - Number of chains. Type: integer
+| | ... | - dut - DUT node.
+| | ... | Type: string
+| | ... | - pf - NIC physical function (physical port).
+| | ... | Type: integer
+| | ... | - count - Number of chains.
+| | ... | Type: integer
| | ... | - vlan_per_chain - Whether to create vlan subinterface for each chain.
| | ... | Type: boolean
| | ... | - start - Id of first chain, allows adding chains during test.
@@ -432,44 +461,76 @@
| |
| | ... | *Example:*
| |
-| | ... | \| Initialize layer dot1q on node \| DUT1 \| 3 \| True \| 2 \|
+| | ... | \| Initialize layer dot1q on node on PF \| DUT1 \| 3 \| True \| 2 \|
| |
-| | [Arguments] | ${dut} | ${count}=${1} | ${vlan_per_chain}=${True}
-| | ... | ${start}=${1}
+| | [Arguments] | ${dut} | ${pf}=${1} | ${count}=${1}
+| | ... | ${vlan_per_chain}=${True} | ${start}=${1}
| |
-| | ${dut_str}= | Convert To Lowercase | ${dut}
| | FOR | ${id} | IN RANGE | ${start} | ${count} + 1
-| | | ${if1_index} | ${if2_index}= | Initialize layer dot1q on node for chain
-| | | ... | dut=${dut} | id=${id} | vlan_per_chain=${vlan_per_chain}
+| | | ${_dot1q} | Initialize layer dot1q on node on PF for chain
+| | | ... | dut=${dut} | pf=${pf} | id=${id} | vlan_per_chain=${vlan_per_chain}
| | | # First id results in non-None indices, after that _1_ are defined.
-| | | ${if1_index}= | Set Variable If | '${if1_index}' == '${NONE}'
-| | | ... | ${${dut_str}_dot1q_1_1} | ${if1_index}
-| | | ${if2_index}= | Set Variable If | '${if2_index}' == '${NONE}'
-| | | ... | ${${dut_str}_dot1q_1_2} | ${if2_index}
-| | | Set Test Variable | ${${dut_str}_dot1q_${id}_1} | ${if1_index}
-| | | Set Test Variable | ${${dut_str}_dot1q_${id}_2} | ${if2_index}
+| | | ${_dot1q}= | Set Variable If | '${_dot1q}' == '${NONE}'
+| | | ... | ${${dut}_dot1q${pf}_1} | ${_dot1q}
+| | | ${_dot1q}= | Create List | ${_dot1q}
+| | | Set Test Variable | ${${dut}_dot1q${pf}_${id}} | ${_dot1q}
| | END
-| Initialize layer dot1q
+| Initialize layer dot1q on node on PF for chain
| | [Documentation]
-| | ... | Dot1q interfaces and variables to be created on all DUT's interfaces.
+| | ... | Optionally create tag popping subinterface per chain.
+| | ... | Return interface indices for dot1q layer interfaces,
+| | ... | or Nones if subinterfaces are not created.
| |
| | ... | *Arguments:*
-| | ... | - count - Number of chains. Type: integer
+| | ... | - dut - DUT node.
+| | ... | Type: string
+| | ... | - pf - NIC physical function (physical port).
+| | ... | Type: integer
+| | ... | - id - Positive index of the chain.
+| | ... | Type: integer
| | ... | - vlan_per_chain - Whether to create vlan subinterface for each chain.
| | ... | Type: boolean
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Initialize layer dot1q on node on PF for chain \| DUT1 \
+| | ... | \| 1 \| 1 \| True \|
+| |
+| | [Arguments] | ${dut} | ${pf} | ${id} | ${vlan_per_chain}=${True}
+| |
+| | Return From Keyword If | ${id} != ${1} and not ${vlan_per_chain}
+| | ... | ${NONE} | ${NONE}
+| | ${_default}= | Evaluate | ${pf} * ${100} + ${id} - ${1}
+| | ${_vlan}= | Get Variable Value | \${${dut}_pf${pf}_vlan}
+| | ${_vlan}= | Set Variable If | '${_vlan}[0]' != '${NONE}'
+| | ... | ${_vlan}[0] | ${_default}
+| | ${_name} | ${_index}= | Create Vlan Subinterface
+| | ... | ${nodes['${dut}']} | ${${dut}_${int}${pf}_${id}}[0] | ${_vlan}
+| | Set Interface State | ${nodes['${dut}']} | ${_index} | up
+| | Configure L2 tag rewrite method on interfaces
+| | ... | ${nodes['${dut}']} | ${_index} | TAG_REWRITE_METHOD=pop-1
+| | Return From Keyword | ${_index}
+
+| Initialize layer ip4vxlan
+| | [Documentation]
+| | ... | VXLAN interfaces and variables to be created on all DUT's interfaces.
+| |
+| | ... | *Arguments:*
+| | ... | - count - Number of vxlan interfaces.
+| | ... | Type: integer
| | ... | - start - Id of first chain, allows adding chains during test.
| | ... | Type: integer
| |
-| | ... | \| Initialize layer dot1q \| 3 \| True \| 2 \|
+| | ... | \| Initialize layer ip4vxlan \| 3 \| 2 \|
| |
-| | [Arguments] | ${count}=${1} | ${vlan_per_chain}=${True} | ${start}=${1}
+| | [Arguments] | ${count}=${1} | ${start}=${1}
| |
| | FOR | ${dut} | IN | @{duts}
-| | | Initialize layer dot1q on node | ${dut} | count=${count}
-| | | ... | vlan_per_chain=${vlan_per_chain} | start=${start}
+| | | Initialize layer ip4vxlan on node | ${dut} | count=${count}
+| | | ... | start=${start}
| | END
-| | Set Test Variable | ${prev_layer} | dot1q
+| | Set Test Variable | ${int} | ip4vxlan
| Initialize layer ip4vxlan on node
| | [Documentation]
@@ -479,8 +540,10 @@
| | ... | towards TG. VXLAN sub-interfaces has same IPv4 address as interfaces.
| |
| | ... | *Arguments:*
-| | ... | - dut - DUT node. Type: string
-| | ... | - count - Number of vxlan interfaces. Type: integer
+| | ... | - dut - DUT node.
+| | ... | Type: string
+| | ... | - count - Number of vxlan interfaces.
+| | ... | Type: integer
| | ... | - start - Id of first chain, allows adding chains during test.
| | ... | Type: integer
| |
@@ -490,75 +553,75 @@
| |
| | [Arguments] | ${dut} | ${count}=${1} | ${start}=${1}
| |
-| | ${dut_str}= | Convert To Lowercase | ${dut}
-| | Run Keyword If | "${start}" == "1" | VPP Interface Set IP Address
-| | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_1_1}
-| | ... | 172.16.0.1 | 24
-| | Run Keyword If | "${start}" == "1" | VPP Interface Set IP Address
-| | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_1_2}
-| | ... | 172.26.0.1 | 24
-| | FOR | ${id} | IN RANGE | ${start} | ${count} + 1
-| | | ${subnet}= | Evaluate | ${id} - 1
-| | | ${vni}= | Evaluate | ${id} - 1
-| | | ${ip4vxlan_1}= | Create VXLAN interface
-| | | ... | ${nodes['${dut}']} | ${vni} | 172.16.0.1 | 172.17.${subnet}.2
-| | | ${ip4vxlan_2}= | Create VXLAN interface
-| | | ... | ${nodes['${dut}']} | ${vni} | 172.26.0.1 | 172.27.${subnet}.2
-| | | ${prev_mac}= | Set Variable If | '${dut}' == 'DUT1'
-| | | ... | ${tg_if1_mac} | ${dut1_if2_mac}
-| | | ${next_mac}= | Set Variable If | '${dut}' == 'DUT1' and ${duts_count} == 2
-| | | ... | ${dut2_if1_mac} | ${tg_if2_mac}
-| | | VPP Add IP Neighbor
-| | | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_${id}_1}
-| | | ... | 172.16.${subnet}.2 | ${prev_mac}
-| | | VPP Add IP Neighbor
-| | | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_${id}_2}
-| | | ... | 172.26.${subnet}.2 | ${next_mac}
-| | | VPP Route Add
-| | | ... | ${nodes['${dut}']} | 172.17.${subnet}.0 | 24
-| | | ... | gateway=172.16.${subnet}.2
-| | | ... | interface=${${dut_str}_${prev_layer}_${id}_1}
-| | | VPP Route Add
-| | | ... | ${nodes['${dut}']} | 172.27.${subnet}.0 | 24
-| | | ... | gateway=172.26.${subnet}.2
-| | | ... | interface=${${dut_str}_${prev_layer}_${id}_2}
-| | | Set VXLAN Bypass
-| | | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_${id}_1}
-| | | Set VXLAN Bypass
-| | | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_${id}_2}
-| | | Set Test Variable
-| | | ... | ${${dut_str}_ip4vxlan_${id}_1} | ${ip4vxlan_1}
-| | | Set Test Variable
-| | | ... | ${${dut_str}_ip4vxlan_${id}_2} | ${ip4vxlan_2}
+| | FOR | ${pf} | IN RANGE | 1 | ${nic_pfs} + 1
+| | | Initialize layer ip4vxlan on node on PF | ${dut} | pf=${pf}
+| | | ... | count=${count} | start=${start}
| | END
-| Initialize layer ip4vxlan
+| Initialize layer ip4vxlan on node on PF
| | [Documentation]
-| | ... | VXLAN interfaces and variables to be created on all DUT's interfaces.
+| | ... | Setup VXLANoIPv4 between TG and DUTs and DUT to DUT by connecting
+| | ... | physical and vxlan interfaces on each DUT. All interfaces are brought
+| | ... | up. IPv4 addresses with prefix /24 are configured on interfaces
+| | ... | towards TG. VXLAN sub-interfaces has same IPv4 address as interfaces.
| |
| | ... | *Arguments:*
-| | ... | - count - Number of vxlan interfaces. Type: integer
+| | ... | - dut - DUT node.
+| | ... | Type: string
+| | ... | - pf - NIC physical function (physical port).
+| | ... | Type: integer
+| | ... | - count - Number of vxlan interfaces.
+| | ... | Type: integer
| | ... | - start - Id of first chain, allows adding chains during test.
| | ... | Type: integer
| |
-| | ... | \| Initialize layer ip4vxlan \| 3 \| 2 \|
+| | ... | *Example:*
| |
-| | [Arguments] | ${count}=${1} | ${start}=${1}
+| | ... | \| Initialize layer ip4vxlan on node on PF \| DUT1 \| 3 \| 2 \|
| |
-| | FOR | ${dut} | IN | @{duts}
-| | | Initialize layer ip4vxlan on node | ${dut} | count=${count}
-| | ... | start=${start}
+| | [Arguments] | ${dut} | ${pf}=${1} | ${count}=${1} | ${start}=${1}
+| |
+| | Run Keyword If | "${start}" == "1" | VPP Interface Set IP Address
+| | ... | ${nodes['${dut}']} | ${${dut}_${int}${pf}_1}[0]
+| | ... | 172.${pf}6.0.1 | 24
+| | FOR | ${id} | IN RANGE | ${start} | ${count} + 1
+| | | ${_subnet}= | Evaluate | ${id} - 1
+| | | ${_vni}= | Evaluate | ${id} - 1
+| | | ${_ip4vxlan}= | Create VXLAN interface
+| | | ... | ${nodes['${dut}']} | ${_vni}
+| | | ... | 172.${pf}6.0.1 | 172.${pf}7.${_subnet}.2
+| | | ${_prev_mac}= | Set Variable If | '${dut}' == 'DUT1'
+| | | ... | ${tg_if1_mac} | ${dut1_if2_mac}
+| | | ${_next_mac}= | Set Variable If | '${dut}' == 'DUT1' and ${duts_count} == 2
+| | | ... | ${dut2_if1_mac} | ${tg_if2_mac}
+| | | ${_even}= | Evaluate | ${pf} % 2
+| | | ${_mac}= | Set Variable If | ${_even}
+| | | ... | ${_prev_mac} | ${_next_mac}
+| | | VPP Add IP Neighbor
+| | | ... | ${nodes['${dut}']} | ${${dut}_${int}${pf}_${id}}[0]
+| | | ... | 172.${pf}6.${_subnet}.2 | ${_mac}
+| | | VPP Route Add
+| | | ... | ${nodes['${dut}']} | 172.${pf}7.${_subnet}.0 | 24
+| | | ... | gateway=172.${pf}6.${_subnet}.2
+| | | ... | interface=${${dut}_${int}${pf}_${id}}[0]
+| | | Set VXLAN Bypass
+| | | ... | ${nodes['${dut}']} | ${${dut}_${int}${pf}_${id}}[0]
+| | | ${_ip4vxlan}= | Create List | ${_ip4vxlan}
+| | | Set Test Variable
+| | | ... | ${${dut}_ip4vxlan${pf}_${id}} | ${_ip4vxlan}
| | END
-| | Set Test Variable | ${prev_layer} | ip4vxlan
| Configure vhost interfaces
| | [Documentation]
| | ... | Create two Vhost-User interfaces on defined VPP node.
| |
| | ... | *Arguments:*
-| | ... | - ${dut_node} - DUT node. Type: dictionary
-| | ... | - ${sock1} - Socket path for first Vhost-User interface. Type: string
-| | ... | - ${sock2} - Socket path for second Vhost-User interface. Type: string
+| | ... | - ${dut_node} - DUT node.
+| | ... | Type: dictionary
+| | ... | - ${sock1} - Socket path for first Vhost-User interface.
+| | ... | Type: string
+| | ... | - ${sock2} - Socket path for second Vhost-User interface.
+| | ... | Type: string
| | ... | - ${vhost_if1} - Name of the first Vhost-User interface (Optional).
| | ... | Type: string
| | ... | - ${vhost_if2} - Name of the second Vhost-User interface (Optional).
@@ -576,9 +639,6 @@
| |
| | ... | \| Configure vhost interfaces \
| | ... | \| ${nodes['DUT1']} \| /tmp/sock1 \| /tmp/sock2 \|
-| | ... | \| Configure vhost interfaces \
-| | ... | \| ${nodes['DUT2']} \| /tmp/sock1 \| /tmp/sock2 \| dut2_vhost_if1 \
-| | ... | \| dut2_vhost_if2 \|
| |
| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vhost_if1}=vhost_if1
| | ... | ${vhost_if2}=vhost_if2 | ${is_server}=${False}
@@ -600,3 +660,15 @@
| | Set Test Variable | ${${vhost_if2}} | ${vhost_2}
| | Set Test Variable | ${${vhost_if1}_mac} | ${vhost_1_mac}
| | Set Test Variable | ${${vhost_if2}_mac} | ${vhost_2_mac}
+
+| Get Vhost dump
+| | [Documentation] | Get vhost-user dump.
+| |
+| | ... | *Arguments:*
+| | ... | - dut - DUT node data.
+| | ... | Type: dictionary
+| |
+| | [Arguments] | ${dut}
+| |
+| | ${vhost_dump}= | Vhost User Dump | ${dut}
+| | Return From Keyword | ${vhost_dump}
diff --git a/resources/libraries/robot/shared/suite_setup.robot b/resources/libraries/robot/shared/suite_setup.robot
index 7cfb38bcf7..5f8c3c5b2f 100644
--- a/resources/libraries/robot/shared/suite_setup.robot
+++ b/resources/libraries/robot/shared/suite_setup.robot
@@ -26,27 +26,40 @@
| Documentation | Suite setup keywords.
*** Keywords ***
-| Setup suite single link
+| Setup suite topology interfaces
| | [Documentation]
-| | ... | Common suite setup for single link tests.
+| | ... | Common suite setup for one to multiple link tests.
| | ... |
-| | ... | Compute path for testing on two given nodes in circular topology
+| | ... | Compute path for testing on given topology nodes in circular topology
| | ... | based on interface model provided as an argument and set
| | ... | corresponding suite variables.
| |
-| | ... | _NOTE:_ This KW sets following suite variables:
-| | ... | - duts - List of DUT nodes
+| | ... | _NOTE:_ This KW sets various suite variables based on filtered
+| | ... | topology. All variables are set with also backward compatibility
+| | ... | format dut{m}_if{n} (where the value type is string).
+| | ... | List type allows to access physical interfaces in same way as
+| | ... | virtual interface (e.g. SRIOV). This keeps abstracted compatibility
+| | ... | between existing L1 and L2 KWs library and underlaying physical
+| | ... | topology.
+| |
+| | ... | - duts - List of DUT nodes (name as seen in topology file).
| | ... | - duts_count - Number of DUT nodes.
-| | ... | - tg - TG node
-| | ... | - tg_if1 - 1st TG interface towards DUT.
-| | ... | - tg_if1_mac - 1st TG interface MAC address.
-| | ... | - tg_if2 - 2nd TG interface towards DUT.
-| | ... | - tg_if2_mac - 2nd TG interface MAC address.
-| | ... | - dut{n} - DUTx node
-| | ... | - dut{n}_if1 - 1st DUT interface.
-| | ... | - dut{n}_if1_mac - 1st DUT interface MAC address.
-| | ... | - dut{n}_if2 - 2nd DUT interface.
-| | ... | - dut{n}_if2_mac - 2nd DUT interface MAC address.
+| | ... | - int - Interfacy type (layer).
+| | ... | Type: string
+| | ... | - dut{n} - DUTx node.
+| | ... | Type: dictionary
+| | ... | - dut{m}_pf{n} - Nth interface of Mth DUT.
+| | ... | Type: list
+| | ... | - dut{m}_pf{n}_mac - Nth interface of Mth DUT - MAC address.
+| | ... | Type: list
+| | ... | - dut{m}_pf{n}_vlan - Nth interface of Mth DUT - VLAN id.
+| | ... | Type: list
+| | ... | - dut{m}_pf{n}_pci - Nth interface of Mth DUT - PCI address.
+| | ... | Type: list
+| | ... | - dut{m}_pf{n}_ip4_addr - Nth interface of Mth DUT - IPv4 address.
+| | ... | Type: list
+| | ... | - dut{m}_pf{n}_ip4_prefix - Nth interface of Mth DUT - IPv4 prefix.
+| | ... | Type: list
| |
| | ... | *Arguments:*
| | ... | - ${actions} - Additional setup action. Type: list
@@ -54,37 +67,13 @@
| | [Arguments] | @{actions}
| |
| | ${nic_model_list}= | Create list | ${nic_name}
-| | Append Node | ${nodes['TG']}
-| | ${duts}= | Get Matches | ${nodes} | DUT*
-| | FOR | ${dut} | IN | @{duts}
-| | | Append Node | ${nodes['${dut}']} | filter_list=${nic_model_list}
-| | END
-| | Append Node | ${nodes['TG']}
-| | Compute Path | always_same_link=${FALSE}
-| | ${tg_if1} | ${tg}= | Next Interface
-| | FOR | ${dut} | IN | @{duts}
-| | | ${dutx_if1} | ${dutx}= | Next Interface
-| | | ${dutx_if2} | ${dutx}= | Next Interface
-| | | ${dutx_if1_mac}= | Get Interface MAC | ${dutx} | ${dutx_if1}
-| | | ${dutx_if2_mac}= | Get Interface MAC | ${dutx} | ${dutx_if2}
-| | | ${dut_str}= | Convert To Lowercase | ${dut}
-| | | Set Suite Variable | ${${dut_str}} | ${dutx}
-| | | Set Suite Variable | ${${dut_str}_if1} | ${dutx_if1}
-| | | Set Suite Variable | ${${dut_str}_if2} | ${dutx_if2}
-| | | Set Suite Variable | ${${dut_str}_if1_mac} | ${dutx_if1_mac}
-| | | Set Suite Variable | ${${dut_str}_if2_mac} | ${dutx_if2_mac}
+| | &{info}= | Compute Circular Topology
+| | ... | ${nodes} | filter_list=${nic_model_list} | nic_pfs=${nic_pfs}
+| | ${variables}= | Get Dictionary Keys | ${info}
+| | FOR | ${variable} | IN | @{variables}
+| | | ${value}= | Get From Dictionary | ${info} | ${variable}
+| | | Set Suite Variable | ${${variable}} | ${value}
| | END
-| | ${tg_if2} | ${tg}= | Next Interface
-| | ${tg_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1}
-| | ${tg_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2}
-| | ${duts_count}= | Get Length | ${duts}
-| | Set Suite Variable | ${duts}
-| | Set Suite Variable | ${duts_count}
-| | Set Suite Variable | ${tg}
-| | Set Suite Variable | ${tg_if1}
-| | Set Suite Variable | ${tg_if1_mac}
-| | Set Suite Variable | ${tg_if2}
-| | Set Suite Variable | ${tg_if2_mac}
| | FOR | ${action} | IN | @{actions}
| | | Run Keyword | Additional Suite setup Action For ${action}
| | END
@@ -147,152 +136,84 @@
| | | Run Keyword | Additional Suite setup Action For ${action}
| | END
-| Setup suite double link
-| | [Documentation]
-| | ... | Common suite setup for double link tests.
-| | ... |
-| | ... | Compute path for testing on three given nodes in circular topology
-| | ... | with double link between DUTs based on interface model provided as an
-| | ... | argument and set corresponding suite variables.
-| |
-| | ... | *Arguments:*
-| | ... | - ${actions} - Additional setup action. Type: list
-| |
-| | ... | _NOTE:_ This KW sets following suite variables:
-| | ... | - duts - List of DUT nodes
-| | ... | - duts_count - Number of DUT nodes.
-| | ... | - tg - TG node
-| | ... | - tg_if1 - 1st TG interface towards DUT.
-| | ... | - tg_if1 - 1st TG interface MAC address.
-| | ... | - tg_if2 - 2nd TG interface towards DUT.
-| | ... | - tg_if2 - 2nd TG interface MAC address.
-| | ... | - dut1 - DUT1 node
-| | ... | - dut1_if1 - DUT1 interface towards TG.
-| | ... | - dut1_if2_1 - DUT1 interface 1 towards DUT2.
-| | ... | - dut1_if2_2 - DUT1 interface 2 towards DUT2.
-| | ... | - dut2 - DUT2 node
-| | ... | - dut2_if1_1 - DUT2 interface 1 towards DUT1.
-| | ... | - dut2_if1_2 - DUT2 interface 2 towards DUT1.
-| | ... | - dut2_if2 - DUT2 interface towards TG.
-| |
-| | [Arguments] | @{actions}
-| |
-| | ${nic_model_list}= | Create list | ${nic_name}
-| | # Compute path TG - DUT1 with single link in between
-| | Append Node | ${nodes['TG']}
-| | Append Node | ${nodes['DUT1']} | filter_list=${nic_model_list}
-| | Append Node | ${nodes['TG']}
-| | Compute Path
-| | ${tg_if1} | ${tg}= | Next Interface
-| | ${dut1_if1} | ${dut1}= | Next Interface
-| | # Compute path TG - DUT2 with single link in between
-| | Clear Path
-| | Append Node | ${nodes['TG']}
-| | Append Node | ${nodes['DUT2']} | filter_list=${nic_model_list}
-| | Append Node | ${nodes['TG']}
-| | Compute Path
-| | ${tg_if2} | ${tg}= | Next Interface
-| | ${dut2_if2} | ${dut2}= | Next Interface
-| | # Compute path DUT1 - DUT2 with double link in between
-| | Clear Path
-| | Append Node | ${nodes['DUT1']} | filter_list=${nic_model_list}
-| | Append Node | ${nodes['DUT2']} | filter_list=${nic_model_list}
-| | Append Node | ${nodes['DUT1']} | filter_list=${nic_model_list}
-| | Compute Path | always_same_link=${FALSE}
-| | ${dut1_if2_1} | ${dut1}= | First Interface
-| | ${dut1_if2_2} | ${dut1}= | Last Interface
-| | ${dut2_if1_1} | ${dut2}= | First Ingress Interface
-| | ${dut2_if1_2} | ${dut2}= | Last Egress Interface
-| | ${tg_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1}
-| | ${tg_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2}
-| | ${duts_count}= | Set Variable | 2
-| | ${duts}= | Get Matches | ${nodes} | DUT*
-| | # Set suite variables
-| | Set Suite Variable | ${duts}
-| | Set Suite Variable | ${duts_count}
-| | Set Suite Variable | ${tg}
-| | Set Suite Variable | ${tg_if1}
-| | Set Suite Variable | ${tg_if1_mac}
-| | Set Suite Variable | ${tg_if2}
-| | Set Suite Variable | ${tg_if2_mac}
-| | Set Suite Variable | ${dut1}
-| | Set Suite Variable | ${dut1_if1}
-| | Set Suite Variable | ${dut1_if2_1}
-| | Set Suite Variable | ${dut1_if2_2}
-| | Set Suite Variable | ${dut2}
-| | Set Suite Variable | ${dut2_if1_1}
-| | Set Suite Variable | ${dut2_if1_2}
-| | Set Suite Variable | ${dut2_if2}
-| | FOR | ${action} | IN | @{actions}
-| | | Run Keyword | Additional Suite setup Action For ${action}
-| | END
-
| Additional Suite Setup Action For scapy
| | [Documentation]
| | ... | Additional Setup for suites which uses scapy as Traffic generator.
| |
-| | Set Interface State | ${tg} | ${tg_if1} | up
-| | Set Interface State | ${tg} | ${tg_if2} | up
+| | FOR | ${dut} | IN | @{duts}
+| | | Set Suite Variable | ${${dut}_vf1} | ${${dut}_${int}1}
+| | | Set Suite Variable | ${${dut}_vf2} | ${${dut}_${int}2}
+| | END
+| | Set Interface State | ${tg} | ${TG_pf1}[0] | up
+| | Set Interface State | ${tg} | ${TG_pf2}[0] | up
| Additional Suite Setup Action For dpdk
| | [Documentation]
| | ... | Additional Setup for suites which uses dpdk.
| |
| | FOR | ${dut} | IN | @{duts}
-| | | ${dut_str}= | Convert To Lowercase | ${dut}
| | | Initialize DPDK Environment | ${nodes['${dut}']}
-| | | ... | ${${dut_str}_if1} | ${${dut_str}_if2}
+| | | ... | ${${dut}_${int}1}[0] | ${${dut}_${int}2}[0]
| | END
-| Additional Suite Setup Action For performance
+| Additional Suite Setup Action For performance vf
| | [Documentation]
-| | ... | Additional Setup for suites which uses performance measurement.
-| | ...
-| | Run Keyword If | ${duts_count} == 1
-| | ... | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2}
-| | ... | ${dut1} | ${dut1_if1} | ${dut1} | ${dut1_if2} | ${osi_layer}
-| | Run Keyword If | ${duts_count} == 2
-| | ... | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2}
-| | ... | ${dut1} | ${dut1_if1} | ${dut2} | ${dut2_if2} | ${osi_layer}
-
-| Additional Suite Setup Action For performance_rdma
-| | [Documentation]
-| | ... | Additional Setup for suites which uses performance measurement with
-| | ... | RDMA-core driver.
-| | ...
-# TODO: Add functionality for tests that need some.
-| | Additional Suite Setup Action For performance
-
-| Additional Suite Setup Action For performance_avf
-| | [Documentation]
-| | ... | Additional Setup for suites which uses performance measurement over
-| | ... | SRIOV AVF.
+| | ... | Additional Setup for suites which uses performance measurement for
+| | ... | single DUT (inner loop).
| |
-| | FOR | ${dut} | IN | @{duts}
-| | | ${if1_avf_arr}= | Init AVF interface | ${nodes['${dut}']} | ${${dut}_if1}
-| | | ... | numvfs=${1} | osi_layer=${osi_layer}
-| | | ${if2_avf_arr}= | Init AVF interface | ${nodes['${dut}']} | ${${dut}_if2}
-| | | ... | numvfs=${1} | osi_layer=${osi_layer}
-| | # Currently only one AVF is supported.
-| | | Set Suite Variable | ${${dut}_if1_vf0} | ${if1_avf_arr[0]}
-| | | Set Suite Variable | ${${dut}_if2_vf0} | ${if2_avf_arr[0]}
+| | ... | *Arguments:*
+| | ... | - dut - DUT node. Type: string
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Additional Suite Setup Action For performance_dut \| DUT1 \|
+| |
+| | [Arguments] | ${dut}
+| |
+| | FOR | ${pf} | IN RANGE | 1 | ${nic_pfs} + 1
+| | | ${_vf}=
+| | | ... | Run Keyword | Init ${nic_driver} interface
+| | | ... | ${nodes['${dut}']} | ${${dut}_pf${pf}}[0] | numvfs=${nic_vfs}
+| | | ... | osi_layer=${osi_layer}
+| | | ${_mac}=
+| | | ... | Create List | ${EMPTY}
+| | | ${_ip4_addr}=
+| | | ... | Create List | ${EMPTY}
+| | | ${_ip4_prefix}=
+| | | ... | Create List | ${EMPTY}
+| | | ${_pci}=
+| | | ... | Create List | ${EMPTY}
+| | | ${_vlan}=
+| | | ... | Create List | ${EMPTY}
+| | | Set Suite Variable
+| | | ... | ${${dut}_prevf${pf}} | ${_vf}
+| | | Set Suite Variable
+| | | ... | ${${dut}_prevf${pf}_ip4_addr} | ${_ip4_addr}
+| | | Set Suite Variable
+| | | ... | ${${dut}_prevf${pf}_ip4_prefix} | ${_ip4_prefix}
+| | | Set Suite Variable
+| | | ... | ${${dut}_prevf${pf}_mac} | ${_mac}
+| | | Set Suite Variable
+| | | ... | ${${dut}_prevf${pf}_pci} | ${_pci}
+| | | Set Suite Variable
+| | | ... | ${${dut}_prevf${pf}_vlan} | ${_vlan}
| | END
-| | Run Keyword If | ${duts_count} == 1
-| | ... | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2}
-| | ... | ${dut1} | ${dut1_if1_vf0} | ${dut1} | ${dut1_if2_vf0} | ${osi_layer}
-| | Run Keyword If | ${duts_count} == 2
-| | ... | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2}
-| | ... | ${dut1} | ${dut1_if1_vf0} | ${dut2} | ${dut2_if2_vf0} | ${osi_layer}
+| | Set Suite Variable
+| | ... | ${int} | prevf
-| Additional Suite Setup Action For avf
+| Additional Suite Setup Action For performance
| | [Documentation]
-| | ... | Additional Setup for suites which uses SRIOV AVF.
+| | ... | Additional Setup for suites which uses performance measurement.
| |
| | FOR | ${dut} | IN | @{duts}
-| | # Currently only one AVF is supported.
-| | | Set Suite Variable | ${${dut}_if1_vf0} | ${${dut}_if1}
-| | | Set Suite Variable | ${${dut}_if2_vf0} | ${${dut}_if2}
+| | | Run Keyword If | ${nic_vfs} > 0
+| | | ... | Additional Suite Setup Action For performance vf | ${dut}
| | END
+| | Initialize traffic generator
+| | ... | ${tg} | ${TG_pf1}[0] | ${TG_pf2}[0]
+| | ... | ${dut1} | ${DUT1_${int}1}[0]
+| | ... | ${dut${duts_count}} | ${DUT${duts_count}_${int}2}[0]
+| | ... | ${osi_layer}
| Additional Suite Setup Action For ipsechw
| | [Documentation]
diff --git a/resources/libraries/robot/shared/suite_teardown.robot b/resources/libraries/robot/shared/suite_teardown.robot
index 362c7366e9..38683658d7 100644
--- a/resources/libraries/robot/shared/suite_teardown.robot
+++ b/resources/libraries/robot/shared/suite_teardown.robot
@@ -47,7 +47,7 @@
| |
| | FOR | ${dut} | IN | @{duts}
| | | Cleanup DPDK Environment
-| | | ... | ${nodes['${dut}']} | ${${dut}_if1} | ${${dut}_if2}
+| | | ... | ${nodes['${dut}']} | ${${dut}_${int}1}[0] | ${${dut}_${int}2}[0]
| | END
| Additional Suite Tear Down Action For wrk
diff --git a/resources/libraries/robot/shared/test_setup.robot b/resources/libraries/robot/shared/test_setup.robot
index 5ebe048cd9..b5b9e57cf7 100644
--- a/resources/libraries/robot/shared/test_setup.robot
+++ b/resources/libraries/robot/shared/test_setup.robot
@@ -29,6 +29,7 @@
| | [Arguments] | @{actions}
| |
| | Reset PAPI History On All DUTs | ${nodes}
+| | ${int} = | Set Variable If | ${nic_vfs} > 0 | prevf | pf
| | Create base startup configuration of VPP on all DUTs
| | FOR | ${action} | IN | @{actions}
| | | Run Keyword | Additional Test Setup Action For ${action}
diff --git a/resources/libraries/robot/shared/testing_path.robot b/resources/libraries/robot/shared/testing_path.robot
deleted file mode 100644
index 696e7397a5..0000000000
--- a/resources/libraries/robot/shared/testing_path.robot
+++ /dev/null
@@ -1,380 +0,0 @@
-# Copyright (c) 2018 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.InterfaceUtil
-| Library | resources.libraries.python.NodePath
-
-*** Keywords ***
-| Configure path in 2-node circular topology
-| | [Documentation] | Compute path for testing on two given nodes in circular
-| | ... | topology and set corresponding test case variables.
-| |
-| | ... | *Arguments:*
-| | ... | - ${tg_node} - TG node. Type: dictionary
-| | ... | - ${dut_node} - DUT node. Type: dictionary
-| | ... | - ${tg2_node} - Node where the path ends. Must be the same as TG node
-| | ... | parameter in circular topology. Type: dictionary
-| |
-| | ... | *Return:*
-| | ... | - No value returned
-| |
-| | ... | _NOTE:_ This KW sets following test case variables:
-| | ... | - ${tg_node} - TG node.
-| | ... | - ${tg_to_dut_if1} - 1st TG interface towards DUT.
-| | ... | - ${tg_to_dut_if2} - 2nd TG interface towards DUT.
-| | ... | - ${dut_node} - DUT node.
-| | ... | - ${dut_to_tg_if1} - 1st DUT interface towards TG.
-| | ... | - ${dut_to_tg_if2} - 2nd DUT interface towards TG.
-| | ... | - ${tg_to_dut_if1_mac}
-| | ... | - ${tg_to_dut_if2_mac}
-| | ... | - ${dut_to_tg_if1_mac}
-| | ... | - ${dut_to_tg_if2_mac}
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Given Configure path in 2-node circular topology \| ${nodes['TG']} \
-| | ... | \| ${nodes['DUT1']} \| ${nodes['TG']} \|
-| |
-| | [Arguments] | ${tg_node} | ${dut_node} | ${tg2_node}
-| | Should Be Equal | ${tg_node} | ${tg2_node}
-| | Append Nodes | ${tg_node} | ${dut_node} | ${tg_node}
-| | Compute Path | always_same_link=${FALSE}
-| | ${tg_to_dut_if1} | ${tmp}= | First Interface
-| | ${tg_to_dut_if2} | ${tmp}= | Last Interface
-| | ${dut_to_tg_if1} | ${tmp}= | First Ingress Interface
-| | ${dut_to_tg_if2} | ${tmp}= | Last Egress Interface
-| | ${tg_to_dut_if1_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut_if1}
-| | ${tg_to_dut_if2_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut_if2}
-| | ${dut_to_tg_if1_mac}= | Get interface mac | ${dut_node} | ${dut_to_tg_if1}
-| | ${dut_to_tg_if2_mac}= | Get interface mac | ${dut_node} | ${dut_to_tg_if2}
-| | Set Test Variable | ${tg_to_dut_if1}
-| | Set Test Variable | ${tg_to_dut_if2}
-| | Set Test Variable | ${dut_to_tg_if1}
-| | Set Test Variable | ${dut_to_tg_if2}
-| | Set Test Variable | ${tg_to_dut_if1_mac}
-| | Set Test Variable | ${tg_to_dut_if2_mac}
-| | Set Test Variable | ${dut_to_tg_if1_mac}
-| | Set Test Variable | ${dut_to_tg_if2_mac}
-| | Set Test Variable | ${tg_node}
-| | Set Test Variable | ${dut_node}
-
-| Set interfaces in 2-node circular topology up
-| | [Documentation] | Set UP state on interfaces in 2-node path on nodes and
-| | ... | wait for all interfaces are ready. Requires more than one link
-| | ... | between nodes.
-| |
-| | ... | *Arguments:*
-| | ... | - No arguments.
-| |
-| | ... | *Return:*
-| | ... | - No value returned.
-| |
-| | ... | _NOTE:_ This KW uses test variables sets in
-| | ... | "Configure path in 2-node circular topology" KW.
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Given Configure path in 2-node circular topology \| ${nodes['TG']} \
-| | ... | \| ${nodes['DUT1']} \| ${nodes['TG']} \|
-| | ... | \| And Set interfaces in 2-node circular topology up \|
-| |
-| | Set Interface State | ${tg_node} | ${tg_to_dut_if1} | up
-| | Set Interface State | ${tg_node} | ${tg_to_dut_if2} | up
-| | Set Interface State | ${dut_node} | ${dut_to_tg_if1} | up
-| | Set Interface State | ${dut_node} | ${dut_to_tg_if2} | up
-| | Vpp Node Interfaces Ready Wait | ${dut_node}
-
-| Configure path in 3-node circular topology
-| | [Documentation] | Compute path for testing on three given nodes in circular
-| | ... | topology and set corresponding test case variables.
-| |
-| | ... | *Arguments:*
-| | ... | - ${tg_node} - TG node. Type: dictionary
-| | ... | - ${dut1_node} - DUT1 node. Type: dictionary
-| | ... | - ${dut2_node} - DUT2 node. Type: dictionary
-| | ... | - ${tg2_node} - Node where the path ends. Must be the same as TG node
-| | ... | parameter in circular topology. Type: dictionary
-| |
-| | ... | *Return:*
-| | ... | - No value returned
-| | ... |
-| | ... | _NOTE:_ This KW sets following test case variables:
-| | ... | - ${tg_node} - TG node.
-| | ... | - ${tg_to_dut1} - TG interface towards DUT1.
-| | ... | - ${tg_to_dut2} - TG interface towards DUT2.
-| | ... | - ${dut1_node} - DUT1 node.
-| | ... | - ${dut1_to_tg} - DUT1 interface towards TG.
-| | ... | - ${dut1_to_dut2} - DUT1 interface towards DUT2.
-| | ... | - ${dut2_node} - DUT2 node.
-| | ... | - ${dut2_to_tg} - DUT2 interface towards TG.
-| | ... | - ${dut2_to_dut1} - DUT2 interface towards DUT1.
-| | ... | - ${tg_to_dut1_mac}
-| | ... | - ${tg_to_dut2_mac}
-| | ... | - ${dut1_to_tg_mac}
-| | ... | - ${dut1_to_dut2_mac}
-| | ... | - ${dut2_to_tg_mac}
-| | ... | - ${dut2_to_dut1_mac}
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Given Configure path in 3-node circular topology \| ${nodes['TG']} \
-| | ... | \| ${nodes['DUT1']} \| ${nodes['DUT2']} \| ${nodes['TG']} \|
-| |
-| | [Arguments] | ${tg_node} | ${dut1_node} | ${dut2_node} | ${tg2_node}
-| | Should Be Equal | ${tg_node} | ${tg2_node}
-| | Append Nodes | ${tg_node} | ${dut1_node} | ${dut2_node} | ${tg_node}
-| | Compute Path
-| | ${tg_to_dut1} | ${tmp}= | Next Interface
-| | ${dut1_to_tg} | ${tmp}= | Next Interface
-| | ${dut1_to_dut2} | ${tmp}= | Next Interface
-| | ${dut2_to_dut1} | ${tmp}= | Next Interface
-| | ${dut2_to_tg} | ${tmp}= | Next Interface
-| | ${tg_to_dut2} | ${tmp}= | Next Interface
-| | ${tg_to_dut1_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut1}
-| | ${tg_to_dut2_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut2}
-| | ${dut1_to_tg_mac}= | Get interface mac | ${dut1_node} | ${dut1_to_tg}
-| | ${dut1_to_dut2_mac}= | Get interface mac | ${dut1_node} | ${dut1_to_dut2}
-| | ${dut2_to_tg_mac}= | Get interface mac | ${dut2_node} | ${dut2_to_tg}
-| | ${dut2_to_dut1_mac}= | Get interface mac | ${dut2_node} | ${dut2_to_dut1}
-| | Set Test Variable | ${tg_to_dut1}
-| | Set Test Variable | ${dut1_to_tg}
-| | Set Test Variable | ${tg_to_dut2}
-| | Set Test Variable | ${dut2_to_tg}
-| | Set Test Variable | ${dut1_to_dut2}
-| | Set Test Variable | ${dut2_to_dut1}
-| | Set Test Variable | ${tg_to_dut1_mac}
-| | Set Test Variable | ${tg_to_dut2_mac}
-| | Set Test Variable | ${dut1_to_tg_mac}
-| | Set Test Variable | ${dut1_to_dut2_mac}
-| | Set Test Variable | ${dut2_to_tg_mac}
-| | Set Test Variable | ${dut2_to_dut1_mac}
-| | Set Test Variable | ${tg_node}
-| | Set Test Variable | ${dut1_node}
-| | Set Test Variable | ${dut2_node}
-
-| Set interfaces in 3-node circular topology up
-| | [Documentation]
-| | ... | Set UP state on interfaces in 3-node path on nodes and \
-| | ... | wait until all interfaces are ready.
-| |
-| | ... | *Arguments:*
-| | ... | - No arguments.
-| |
-| | ... | *Return:*
-| | ... | - No value returned.
-| |
-| | ... | _NOTE:_ This KW uses test variables sets in
-| | ... | "Configure path in 3-node circular topology" KW.
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Given Configure path in 3-node circular topology \| ${nodes['TG']} \
-| | ... | \| ${nodes['DUT1']} \| ${nodes['TG']} \|
-| | ... | \| And Set interfaces in 3-node circular topology up \|
-| |
-| | Set Interface State | ${tg_node} | ${tg_to_dut1} | up
-| | Set Interface State | ${tg_node} | ${tg_to_dut2} | up
-| | Set Interface State | ${dut1_node} | ${dut1_to_tg} | up
-| | Set Interface State | ${dut1_node} | ${dut1_to_dut2} | up
-| | Set Interface State | ${dut2_node} | ${dut2_to_tg} | up
-| | Set Interface State | ${dut2_node} | ${dut2_to_dut1} | up
-| | Vpp Node Interfaces Ready Wait | ${dut1_node}
-| | Vpp Node Interfaces Ready Wait | ${dut2_node}
-
-| Configure path in double-link 3-node circular topology
-| | [Documentation]
-| | ... | Compute path for testing on three given nodes in circular \
-| | ... | topology with double link and set corresponding \
-| | ... | test case variables.
-| |
-| | ... | *Arguments:*
-| | ... | - ${tg_node} - TG node. Type: dictionary
-| | ... | - ${dut1_node} - DUT1 node. Type: dictionary
-| | ... | - ${dut2_node} - DUT2 node. Type: dictionary
-| | ... | - ${tg2_node} - Node where the path ends. Must be the same as TG node
-| | ... | parameter in circular topology. Type: dictionary
-| |
-| | ... | *Return:*
-| | ... | - No value returned.
-| | ... |
-| | ... | _NOTE:_ This KW sets following test case variables:
-| | ... | - ${tg_node} - TG node.
-| | ... | - ${tg_to_dut1_if1} - TG interface towards DUT1 interface 1.
-| | ... | - ${tg_to_dut1_if2} - TG interface towards DUT1 interface 2.
-| | ... | - ${tg_to_dut1_mac_if1} - TG towards DUT1 MAC address interface 1.
-| | ... | - ${tg_to_dut1_mac_if2} - TG towards DUT1 MAC address interface 2.
-| | ... | - ${tg_to_dut2_if1} - TG interface towards DUT2 interface 1.
-| | ... | - ${tg_to_dut2_if2} - TG interface towards DUT2 interface 2.
-| | ... | - ${tg_to_dut2_mac_if1} - TG towards DUT2 MAC address interface 1.
-| | ... | - ${tg_to_dut2_mac_if2} - TG towards DUT2 MAC address interface 2.
-| | ... | - ${dut1_node} - DUT1 node.
-| | ... | - ${dut1_to_tg_if1} - DUT1 interface towards TG interface 1.
-| | ... | - ${dut1_to_tg_if2} - DUT1 interface towards TG interface 2.
-| | ... | - ${dut1_to_tg_mac_if1} - DUT1 towards TG MAC address interface 1.
-| | ... | - ${dut1_to_tg_mac_if2} - DUT1 towards TG MAC address interface 2.
-| | ... | - ${dut1_to_dut2_if1} - DUT1 interface towards DUT2 interface 1.
-| | ... | - ${dut1_to_dut2_if2} - DUT1 interface towards DUT2 interface 2.
-| | ... | - ${dut1_to_dut2_mac_if1} - DUT1 towards DUT2 MAC address interface 1.
-| | ... | - ${dut1_to_dut2_mac_if2} - DUT1 towards DUT2 MAC address interface 2.
-| | ... | - ${dut2_node} - DUT2 node.
-| | ... | - ${dut2_to_tg_if1} - DUT2 interface towards TG interface 1.
-| | ... | - ${dut2_to_tg_if2} - DUT2 interface towards TG interface 2.
-| | ... | - ${dut2_to_tg_mac_if1} - DUT2 towards TG MAC address interface 1.
-| | ... | - ${dut2_to_tg_mac_if2} - DUT2 towards TG MAC address interface 2.
-| | ... | - ${dut2_to_dut1_if1} - DUT2 interface towards DUT1 interface 1.
-| | ... | - ${dut2_to_dut1_if2} - DUT2 interface towards DUT1 interface 2.
-| | ... | - ${dut2_to_dut1_mac_if1} - DUT2 towards DUT1 MAC address interface 1.
-| | ... | - ${dut2_to_dut1_mac_if2} - DUT2 towards DUT1 MAC address interface 2.
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Configure path in double-link 3-node circular topology \| ${nodes['TG']} \
-| | ... | \| ${nodes['DUT1']} \| ${nodes['DUT2']} \| ${nodes['TG']} \|
-| |
-| | [Arguments] | ${tg_node} | ${dut1_node} | ${dut2_node} | ${tg2_node}
-| | Should Be Equal | ${tg_node} | ${tg2_node}
-| | # Compute path TG - DUT1 with two links in between
-| | Append Nodes | ${tg_node} | ${dut1_node} | ${tg_node}
-| | Compute Path | always_same_link=${FALSE}
-| | ${tg_to_dut1_if1} | ${tmp}= | First Interface
-| | ${tg_to_dut1_if2} | ${tmp}= | Last Interface
-| | ${dut1_to_tg_if1} | ${tmp}= | First Ingress Interface
-| | ${dut1_to_tg_if2} | ${tmp}= | Last Egress Interface
-| | # Compute path TG - DUT2 with two links in between
-| | Clear Path
-| | Append Nodes | ${tg_node} | ${dut2_node} | ${tg_node}
-| | Compute Path | always_same_link=${FALSE}
-| | ${tg_to_dut2_if1} | ${tmp}= | First Interface
-| | ${tg_to_dut2_if2} | ${tmp}= | Last Interface
-| | ${dut2_to_tg_if1} | ${tmp}= | First Ingress Interface
-| | ${dut2_to_tg_if2} | ${tmp}= | Last Egress Interface
-| | # Compute path DUT1 - DUT2 with one link in between
-| | Clear Path
-| | Append Nodes | ${dut1_node} | ${dut2_node} | ${dut1_node}
-| | Compute Path | always_same_link=${FALSE}
-| | ${dut1_to_dut2_if1} | ${tmp}= | First Interface
-| | ${dut1_to_dut2_if2} | ${tmp}= | Last Interface
-| | ${dut2_to_dut1_if1} | ${tmp}= | First Ingress Interface
-| | ${dut2_to_dut1_if2} | ${tmp}= | Last Egress Interface
-| | # Set test variables
-| | Set Test Variable | ${tg_to_dut1_if1}
-| | Set Test Variable | ${tg_to_dut1_if2}
-| | Set Test Variable | ${tg_to_dut2_if1}
-| | Set Test Variable | ${tg_to_dut2_if2}
-| | Set Test Variable | ${dut1_to_tg_if1}
-| | Set Test Variable | ${dut1_to_tg_if2}
-| | Set Test Variable | ${dut2_to_tg_if1}
-| | Set Test Variable | ${dut2_to_tg_if2}
-| | Set Test Variable | ${dut1_to_dut2_if1}
-| | Set Test Variable | ${dut1_to_dut2_if2}
-| | Set Test Variable | ${dut2_to_dut1_if1}
-| | Set Test Variable | ${dut2_to_dut1_if2}
-| | Set Test Variable | ${tg_node}
-| | Set Test Variable | ${dut1_node}
-| | Set Test Variable | ${dut2_node}
-| | # Set Mac Addresses
-| | ${tg_to_dut1_if1_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut1_if1}
-| | ${tg_to_dut1_if2_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut1_if2}
-| | ${tg_to_dut2_if1_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut2_if1}
-| | ${tg_to_dut2_if2_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut2_if2}
-| | ${dut1_to_tg_if1_mac}= | Get interface mac | ${dut1_node}
-| | ... | ${dut1_to_tg_if1}
-| | ${dut1_to_tg_if2_mac}= | Get interface mac | ${dut1_node}
-| | ... | ${dut1_to_tg_if2}
-| | ${dut1_to_dut2_if1_mac}= | Get interface mac | ${dut1_node}
-| | ... | ${dut1_to_dut2_if1}
-| | ${dut1_to_dut2_if2_mac}= | Get interface mac | ${dut1_node}
-| | ... | ${dut1_to_dut2_if2}
-| | ${dut2_to_tg_if1_mac}= | Get interface mac | ${dut2_node}
-| | ... | ${dut2_to_tg_if1}
-| | ${dut2_to_tg_if2_mac}= | Get interface mac | ${dut2_node}
-| | ... | ${dut2_to_tg_if2}
-| | ${dut2_to_dut1_if1_mac}= | Get interface mac | ${dut2_node}
-| | ... | ${dut2_to_dut1_if1}
-| | ${dut2_to_dut1_if2_mac}= | Get interface mac | ${dut2_node}
-| | ... | ${dut2_to_dut1_if2}
-| | Set Test Variable | ${tg_to_dut1_if1_mac}
-| | Set Test Variable | ${tg_to_dut1_if2_mac}
-| | Set Test Variable | ${tg_to_dut2_if1_mac}
-| | Set Test Variable | ${tg_to_dut2_if2_mac}
-| | Set Test Variable | ${dut1_to_tg_if1_mac}
-| | Set Test Variable | ${dut1_to_tg_if2_mac}
-| | Set Test Variable | ${dut1_to_dut2_if1_mac}
-| | Set Test Variable | ${dut1_to_dut2_if2_mac}
-| | Set Test Variable | ${dut2_to_tg_if1_mac}
-| | Set Test Variable | ${dut2_to_tg_if2_mac}
-| | Set Test Variable | ${dut2_to_dut1_if1_mac}
-| | Set Test Variable | ${dut2_to_dut1_if2_mac}
-
-| Set interfaces in double-link 3-node circular topology up
-| | [Documentation]
-| | ... | Set UP state on interfaces in 3-node double link path \
-| | ... | wait until all interfaces are ready.
-| |
-| | ... | *Arguments:*
-| | ... | - No arguments.
-| |
-| | ... | *Return:*
-| | ... | - No value returned.
-| |
-| | ... | _NOTE:_ This KW uses test variables sets in
-| | ... | "Configure path in double-link 3-node circular topology" KW.
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Configure path in double-link 3-node circular topology \| ${nodes['TG']} \
-| | ... | \| ${nodes['DUT1']} \| ${nodes['TG']} \|
-| | ... | \| Interfaces in Double-Link 3-node testing are UP \|
-| |
-| | Set Interface State | ${tg_node} | ${tg_to_dut1_if1} | up
-| | Set Interface State | ${tg_node} | ${tg_to_dut1_if2} | up
-| | Set Interface State | ${tg_node} | ${tg_to_dut2_if1} | up
-| | Set Interface State | ${tg_node} | ${tg_to_dut2_if2} | up
-| | Set Interface State | ${dut1_node} | ${dut1_to_tg_if1} | up
-| | Set Interface State | ${dut1_node} | ${dut1_to_tg_if2} | up
-| | Set Interface State | ${dut2_node} | ${dut2_to_tg_if1} | up
-| | Set Interface State | ${dut2_node} | ${dut2_to_tg_if2} | up
-| | Set Interface State | ${dut1_node} | ${dut1_to_dut2_if1} | up
-| | Set Interface State | ${dut1_node} | ${dut1_to_dut2_if2} | up
-| | Set Interface State | ${dut2_node} | ${dut2_to_dut1_if1} | up
-| | Set Interface State | ${dut2_node} | ${dut2_to_dut1_if2} | up
-| | Vpp Node Interfaces Ready Wait | ${dut1_node}
-| | Vpp Node Interfaces Ready Wait | ${dut2_node}
-
-| Configure interfaces in path up
-| | [Documentation]
-| | ... | Set UP state on interfaces in 2-node or 3-node path on nodes and \
-| | ... | wait until all interfaces are ready.
-| |
-| | ... | *Arguments:*
-| | ... | - No arguments.
-| |
-| | ... | *Return:*
-| | ... | - No value returned.
-| |
-| | ... | _NOTE:_ This KW uses test variables sets in\
-| | ... | "Configure path in 2-node circular topology" or\
-| | ... | "Configure path in 3-node circular topology" KW.
-| |
-| | ... | *Example:*
-| |
-| | ... | \| Configure interfaces in path up \|
-| |
-| | ${dut2_status} | ${value}= | Run Keyword And Ignore Error
-| | ... | Variable Should Exist | ${dut2}
-| |
-| | Run Keyword If | '${dut2_status}' == 'PASS'
-| | ... | Set interfaces in 3-node circular topology up
-| | ... | ELSE
-| | ... | Set interfaces in 2-node circular topology up
diff --git a/resources/libraries/robot/shared/vm.robot b/resources/libraries/robot/shared/vm.robot
index b0fe5cf457..5963287335 100644
--- a/resources/libraries/robot/shared/vm.robot
+++ b/resources/libraries/robot/shared/vm.robot
@@ -1,4 +1,4 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2020 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:
@@ -50,7 +50,7 @@
| | ... | nf_chains=${nf_chains} | nf_nodes=${nf_nodes} | jumbo=${jumbo}
| | ... | perf_qemu_qsz=${perf_qemu_qsz} | use_tuned_cfs=${use_tuned_cfs}
| | ... | auto_scale=${auto_scale} | vnf=${vnf}
-| | ... | tg_if1_mac=${tg_if1_mac} | tg_if2_mac=${tg_if2_mac}
+| | ... | tg_if1_mac=${TG_pf1_mac} | tg_if2_mac=${TG_pf2_mac}
| | ... | vs_dtc=${cpu_count_int} | nf_dtc=${nf_dtc} | nf_dtcr=${nf_dtcr}
| | ... | rxq_count_int=${rxq_count_int} | enable_csum=${False}
| | ... | enable_gso=${False}
@@ -96,7 +96,7 @@
| | ... | nf_chains=${nf_chains} | nf_nodes=${nf_nodes} | jumbo=${jumbo}
| | ... | perf_qemu_qsz=${perf_qemu_qsz} | use_tuned_cfs=${use_tuned_cfs}
| | ... | auto_scale=${auto_scale} | vnf=${vnf}
-| | ... | tg_if1_mac=${tg_if1_mac} | tg_if2_mac=${tg_if2_mac}
+| | ... | tg_if1_mac=${TG_pf1_mac} | tg_if2_mac=${TG_pf2_mac}
| | ... | vs_dtc=${cpu_count_int} | nf_dtc=${nf_dtc} | nf_dtcr=${nf_dtcr}
| | ... | rxq_count_int=${rxq_count_int} | enable_csum=${False}
| | ... | enable_gso=${False}
diff --git a/resources/libraries/robot/wrk/wrk_utils.robot b/resources/libraries/robot/wrk/wrk_utils.robot
index 2a24bce9f3..0e7150ba1e 100644
--- a/resources/libraries/robot/wrk/wrk_utils.robot
+++ b/resources/libraries/robot/wrk/wrk_utils.robot
@@ -42,7 +42,7 @@
| |
| | [Arguments] | ${profile}
| |
-| | ${tg_numa}= | Get interfaces numa node | ${tg} | ${tg_if1} | ${tg_if2}
+| | ${tg_numa}= | Get interfaces numa node | ${tg} | ${TG_pf1}[0] | ${TG_pf2}[0]
| | ${output}= | Run wrk | ${tg} | ${profile} | ${tg_numa} | bw
| | Set test message | ${output}
@@ -60,7 +60,7 @@
| |
| | [Arguments] | ${profile}
| |
-| | ${tg_numa}= | Get interfaces numa node | ${tg} | ${tg_if1} | ${tg_if2}
+| | ${tg_numa}= | Get interfaces numa node | ${tg} | ${TG_pf1}[0] | ${TG_pf2}[0]
| | ${output}= | Run wrk | ${tg} | ${profile} | ${tg_numa} | rps
| | Set test message | ${output}
@@ -78,6 +78,6 @@
| |
| | [Arguments] | ${profile}
| |
-| | ${tg_numa}= | Get interfaces numa node | ${tg} | ${tg_if1} | ${tg_if2}
+| | ${tg_numa}= | Get interfaces numa node | ${tg} | ${TG_pf1}[0] | ${TG_pf2}[0]
| | ${output}= | Run wrk | ${tg} | ${profile} | ${tg_numa} | cps
| | Set test message | ${output}