From be157c8643a2c095d169e3ea78e8db60000189eb Mon Sep 17 00:00:00 2001 From: Patrik Hrnciar Date: Tue, 8 Mar 2016 17:34:18 +0100 Subject: Add vxlan tests using xconnect Change-Id: I190689d5a624f1c876df90ce29b05a2b0b8a2df4 Signed-off-by: Patrik Hrnciar --- resources/libraries/python/IPv4Util.py | 2 -- resources/libraries/python/InterfaceSetup.py | 2 -- resources/libraries/python/InterfaceUtil.py | 10 ++++++--- resources/libraries/python/L2Util.py | 21 +++++++++++++----- resources/libraries/robot/vxlan.robot | 33 +++++++++++++++++++--------- 5 files changed, 45 insertions(+), 23 deletions(-) (limited to 'resources') diff --git a/resources/libraries/python/IPv4Util.py b/resources/libraries/python/IPv4Util.py index 3b500ab1d9..b7035f272c 100644 --- a/resources/libraries/python/IPv4Util.py +++ b/resources/libraries/python/IPv4Util.py @@ -36,8 +36,6 @@ class IPv4Util(object): get_node(node).arp_ping(ip_address, interface) @staticmethod - @keyword('Node "${node}" interface "${port}" has IPv4 address "${address}"' - ' with prefix length "${prefix_length}"') def set_interface_address(node, interface, address, length): """See IPv4Node.set_ip for more information. diff --git a/resources/libraries/python/InterfaceSetup.py b/resources/libraries/python/InterfaceSetup.py index f981d2323a..946c8fc8fd 100644 --- a/resources/libraries/python/InterfaceSetup.py +++ b/resources/libraries/python/InterfaceSetup.py @@ -151,8 +151,6 @@ class InterfaceSetup(object): if_v['driver']) @staticmethod - @keyword('Create VXLAN interface on "${DUT}" with VNI "${VNI}"' - ' from "${SRC_IP}" to "${DST_IP}"') def create_vxlan_interface(node, vni, source_ip, destination_ip): """Create VXLAN interface and return index of created interface diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py index aeb54be86a..be126503f7 100644 --- a/resources/libraries/python/InterfaceUtil.py +++ b/resources/libraries/python/InterfaceUtil.py @@ -30,10 +30,10 @@ class InterfaceUtil(object): Function can be used for DUTs as well as for TGs. :param node: node where the interface is - :param interface: interface name + :param interface: interface name or sw_if_index :param state: one of 'up' or 'down' :type node: dict - :type interface: str + :type interface: str or int :type state: str :return: nothing """ @@ -45,7 +45,11 @@ class InterfaceUtil(object): else: raise ValueError('Unexpected interface state: {}'.format(state)) - sw_if_index = Topology.get_interface_sw_index(node, interface) + if isinstance(interface, basestring): + sw_if_index = Topology.get_interface_sw_index(node, interface) + else: + sw_if_index = interface + VatExecutor.cmd_from_template(node, 'set_if_state.vat', sw_if_index=sw_if_index, state=state) diff --git a/resources/libraries/python/L2Util.py b/resources/libraries/python/L2Util.py index c0a764fa2d..4dc230cf16 100644 --- a/resources/libraries/python/L2Util.py +++ b/resources/libraries/python/L2Util.py @@ -159,14 +159,23 @@ class L2Util(object): """Create bidirectional cross-connect between 2 interfaces on vpp node. :param node: Node to add bidirectional cross-connect - :param interface1: first interface - :param interface2: second interface + :param interface1: first interface name or sw_if_index + :param interface2: second interface name or sw_if_index :type node: dict - :type interface1: str - :type interface2: str + :type interface1: str or int + :type interface2: str or int """ - sw_iface1 = Topology().get_interface_sw_index(node, interface1) - sw_iface2 = Topology().get_interface_sw_index(node, interface2) + + if isinstance(interface1, basestring): + sw_iface1 = Topology().get_interface_sw_index(node, interface1) + else: + sw_iface1 = interface1 + + if isinstance(interface2, basestring): + sw_iface2 = Topology().get_interface_sw_index(node, interface2) + else: + sw_iface2 = interface2 + with VatTerminal(node) as vat: vat.vat_terminal_exec_cmd_from_template('l2_xconnect.vat', interface1=sw_iface1, diff --git a/resources/libraries/robot/vxlan.robot b/resources/libraries/robot/vxlan.robot index e38c678d2b..e855f2499d 100644 --- a/resources/libraries/robot/vxlan.robot +++ b/resources/libraries/robot/vxlan.robot @@ -15,6 +15,7 @@ | Library | Collections | Resource | resources/libraries/robot/default.robot | Resource | resources/libraries/robot/bridge_domain.robot +| Resource | resources/libraries/robot/l2_xconnect.robot | Library | resources.libraries.python.L2Util | Library | resources.libraries.python.IPUtil | Library | resources.libraries.python.IPv4Util @@ -48,21 +49,33 @@ | | Set Suite Variable | ${duts_ip_address_prefix} | 24 | | Set Interface State | ${TG} | ${tgs_to_dut1} | up | | Set Interface State | ${TG} | ${tgs_to_dut2} | up -| | Setup DUT for VXLAN | ${DUT1} | ${VNI} | ${dut1s_ip_address} | ${dut2s_ip_address} -| | ... | ${dut1s_to_tg} | ${dut1s_to_dut2} | ${dut1s_ip_address} | ${duts_ip_address_prefix} -| | Setup DUT for VXLAN | ${DUT2} | ${VNI} | ${dut2s_ip_address} | ${dut1s_ip_address} -| | ... | ${dut2s_to_tg} | ${dut2s_to_dut1} | ${dut2s_ip_address} | ${duts_ip_address_prefix} +| | ${vxlan_dut1}= | Setup VXLAN on DUT | ${DUT1} | ${VNI} | ${dut1s_ip_address} +| | ... | ${dut2s_ip_address} | ${dut1s_to_tg} +| | ... | ${dut1s_to_dut2} | ${dut1s_ip_address} +| | ... | ${duts_ip_address_prefix} +| | Set Suite Variable | ${vxlan_dut1} +| | ${vxlan_dut2}= | Setup VXLAN on DUT | ${DUT2} | ${VNI} | ${dut2s_ip_address} +| | ... | ${dut1s_ip_address} | ${dut2s_to_tg} +| | ... | ${dut2s_to_dut1} | ${dut2s_ip_address} +| | ... | ${duts_ip_address_prefix} +| | Set Suite Variable | ${vxlan_dut2} | | @{test_nodes}= | Create list | ${DUT1} | ${DUT2} | | Vpp Nodes Interfaces Ready Wait | ${test_nodes} # ip arp table must be filled on both nodes with neighbors address | | VPP IP Probe | ${DUT1} | ${dut1s_to_dut2} | ${dut2s_ip_address} -| Setup DUT for VXLAN -| | [Arguments] | ${DUT} | ${VNI} | ${SRC_IP} | ${DST_IP} | ${INGRESS} | ${EGRESS} | ${IP} | ${PREFIX} -| | Set Interface State | ${DUT} | ${EGRESS} | up -| | Set Interface State | ${DUT} | ${INGRESS} | up -| | Node "${DUT}" interface "${EGRESS}" has IPv4 address "${IP}" with prefix length "${PREFIX}" -| | ${vxlan_if_index}= | Create VXLAN interface on "${DUT}" with VNI "${VNI}" from "${SRC_IP}" to "${DST_IP}" +| Setup DUT for VXLAN using BD +| | [Arguments] | ${DUT} | ${VNI} | ${INGRESS} | ${vxlan_if_index} | | Create L2 BD | ${DUT} | ${VNI} | | Add sw if index To L2 BD | ${DUT} | ${vxlan_if_index} | ${VNI} | | Add Interface To L2 BD | ${DUT} | ${INGRESS} | ${VNI} + +| Setup VXLAN on DUT +| | [Arguments] | ${DUT} | ${VNI} | ${SRC_IP} | ${DST_IP} | ${INGRESS} +| | ... | ${EGRESS} | ${IP} | ${PREFIX} +| | Set Interface State | ${DUT} | ${EGRESS} | up +| | Set Interface State | ${DUT} | ${INGRESS} | up +| | Set Interface Address | ${DUT} | ${EGRESS} | ${IP} | ${PREFIX} +| | ${vxlan_if_index}= | Create VXLAN interface | ${DUT} | ${VNI} | ${SRC_IP} +| | ... | ${DST_IP} +| | [Return] | ${vxlan_if_index} -- cgit 1.2.3-korg