PAPI-to-VAT: MACSwap 97/20397/1
authorTibor Frank <tifrank@cisco.com>
Fri, 28 Jun 2019 07:20:56 +0000 (09:20 +0200)
committerTibor Frank <tifrank@cisco.com>
Fri, 28 Jun 2019 07:20:56 +0000 (09:20 +0200)
- not used, not needed, deleted

Change-Id: I9b4c78b7ba3fbac3805d06a65f2799ed212770b3
Signed-off-by: Tibor Frank <tifrank@cisco.com>
resources/libraries/python/MacSwap.py [deleted file]
resources/templates/vat/macswap.vat [deleted file]
resources/templates/vat/macswap_exec.vat [deleted file]
resources/traffic_scripts/macswap_check.py [deleted file]
resources/traffic_scripts/span_check.py [deleted file]
sample_tests/sample_suite.robot [deleted file]

diff --git a/resources/libraries/python/MacSwap.py b/resources/libraries/python/MacSwap.py
deleted file mode 100644 (file)
index ebcf95e..0000000
+++ /dev/null
@@ -1,61 +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.
-
-"""Macswap sample_plugin util library"""
-
-from resources.libraries.python.topology import NodeType, Topology
-from resources.libraries.python.VatExecutor import VatExecutor
-
-class MacSwap(object):
-    """Macswap sample plugin API"""
-
-    @staticmethod
-    def enable_disable_macswap_vat(node, interface):
-        """Enable/Disable macswap on interface.
-
-        Function can be used on a VPP node with macswap plugin.
-
-        :param node: Node where the interface is.
-        :param interface: Interface id.
-        :type node: dict
-        :type interface: str or int
-        :returns: nothing
-        """
-        if node['type'] == NodeType.DUT:
-            sw_if_index = Topology.get_interface_sw_index(node, interface)
-
-            VatExecutor.cmd_from_template(node, 'macswap.vat',
-                                          sw_if_index=sw_if_index)
-        else:
-            raise ValueError('Node {} has not DUT NodeType: "{}"'.
-                             format(node['host'], node['type']))
-
-    @staticmethod
-    def enable_disable_macswap_vat_exec(node, interface_name):
-        """Enable/Disable macswap on interface.
-
-        Function can be used on a VPP node with macswap plugin.
-
-        :param node: Node where the interface is.
-        :param interface_name: Interface name.
-        :type node: dict
-        :type interface_name: str or int
-        :returns: nothing
-        """
-        if node['type'] == NodeType.DUT:
-
-            VatExecutor.cmd_from_template(node, 'macswap_exec.vat',
-                                          if_name=interface_name)
-        else:
-            raise ValueError('Node {} has not DUT NodeType: "{}"'.
-                             format(node['host'], node['type']))
diff --git a/resources/templates/vat/macswap.vat b/resources/templates/vat/macswap.vat
deleted file mode 100644 (file)
index 39a6bc5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-sample_macswap_enable_disable sw_if_index {sw_if_index}
diff --git a/resources/templates/vat/macswap_exec.vat b/resources/templates/vat/macswap_exec.vat
deleted file mode 100644 (file)
index 7b12cc6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-exec sample macswap {if_name}
diff --git a/resources/traffic_scripts/macswap_check.py b/resources/traffic_scripts/macswap_check.py
deleted file mode 100755 (executable)
index 402bb7b..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (c) 2016 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Macswap test."""
-
-from scapy.all import Ether, IP
-
-from resources.libraries.python.PacketVerifier import RxQueue, TxQueue
-from resources.libraries.python.TrafficScriptArg import TrafficScriptArg
-
-def check_macswap(pkt_send, pkt_recv):
-    """Compare MAC addresses of sent and received packet.
-
-    :param pkt_send: Sent packet.
-    :param pkt_recv: Received packet.
-    :type pkt_send: Ether
-    :type pkt_recv: Ether
-    """
-    print "Comparing following packets:"
-    pkt_send.show2()
-    pkt_recv.show2()
-
-    if pkt_send.dst != pkt_recv.src or pkt_send.src != pkt_recv.dst:
-        raise RuntimeError("MAC addresses were not swapped.")
-
-
-def main():
-    """Main function."""
-    args = TrafficScriptArg(['src_mac', 'dst_mac', 'src_ip', 'dst_ip'])
-
-    rxq = RxQueue(args.get_arg('rx_if'))
-    txq = TxQueue(args.get_arg('tx_if'))
-
-    src_mac = args.get_arg('src_mac')
-    dst_mac = args.get_arg('dst_mac')
-    src_ip = args.get_arg('src_ip')
-    dst_ip = args.get_arg('dst_ip')
-
-    pkt_send = (Ether(src=src_mac, dst=dst_mac) /
-                    IP(src=src_ip, dst=dst_ip, proto=61))
-
-    sent_packets = []
-    sent_packets.append(pkt_send)
-    txq.send(pkt_send)
-
-    pkt_recv = rxq.recv(ignore=sent_packets)
-
-    if pkt_recv is None:
-        raise RuntimeError('Timeout waiting for packet')
-
-    check_macswap(pkt_send, pkt_recv)
-
-if __name__ == "__main__":
-    main()
diff --git a/resources/traffic_scripts/span_check.py b/resources/traffic_scripts/span_check.py
deleted file mode 100755 (executable)
index cbf65d3..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2016 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Traffic script that sends an IP ICMPv4/ICMPv6 packet from one interface
-to the other. Source and destination IP addresses and source and destination
-MAC addresses are checked in received packet.
-"""
-
-import sys
-import ipaddress
-
-from scapy.layers.inet import IP, ICMP, ARP
-from scapy.layers.inet6 import IPv6, ICMPv6EchoRequest, ICMPv6ND_NS
-from scapy.layers.l2 import Ether
-
-from resources.libraries.python.PacketVerifier import RxQueue, TxQueue, auto_pad
-from resources.libraries.python.TrafficScriptArg import TrafficScriptArg
-
-
-def valid_ipv4(address):
-    """Check if IP address has the correct IPv4 address format.
-
-    :param address: IP address.
-    :type address: str
-    :return: True in case of correct IPv4 address format,
-    otherwise return false.
-    :rtype: bool
-    """
-    try:
-        ipaddress.IPv4Address(unicode(address))
-        return True
-    except (AttributeError, ipaddress.AddressValueError):
-        return False
-
-
-def valid_ipv6(address):
-    """Check if IP address has the correct IPv6 address format.
-
-    :param address: IP address.
-    :type address: str
-    :return: True in case of correct IPv6 address format,
-    otherwise return false.
-    :rtype: bool
-    """
-    try:
-        ipaddress.IPv6Address(unicode(address))
-        return True
-    except (AttributeError, ipaddress.AddressValueError):
-        return False
-
-
-def main():
-    """Send a simple L2 or ICMP packet from one TG interface to DUT, then
-    receive a copy of the packet on the second TG interface, and a copy of
-    the ICMP reply."""
-    args = TrafficScriptArg(['tg_src_mac', 'src_ip', 'dst_ip', 'dut_if1_mac',
-                             'ptype'])
-
-    src_mac = args.get_arg('tg_src_mac')
-    dst_mac = args.get_arg('dut_if1_mac')
-    src_ip = args.get_arg('src_ip')
-    dst_ip = args.get_arg('dst_ip')
-    tx_if = args.get_arg('tx_if')
-    rx_if = args.get_arg('rx_if')
-    ptype = args.get_arg('ptype')
-
-    rxq_mirrored = RxQueue(rx_if)
-    rxq_tx = RxQueue(tx_if)
-    txq = TxQueue(tx_if)
-
-    sent = []
-
-    if ptype == "ARP":
-        pkt_raw = (Ether(src=src_mac, dst=dst_mac) /
-                   ARP(hwsrc=src_mac, hwdst="00:00:00:00:00:00",
-                       psrc=src_ip, pdst=dst_ip, op="who-has"))
-    elif ptype == "ICMP":
-        if valid_ipv4(src_ip) and valid_ipv4(dst_ip):
-            pkt_raw = (Ether(src=src_mac, dst=dst_mac) /
-                       IP(src=src_ip, dst=dst_ip) /
-                       ICMP(type="echo-request"))
-        else:
-            raise ValueError("IP addresses not in correct format")
-    elif ptype == "ICMPv6":
-        if valid_ipv6(src_ip) and valid_ipv6(dst_ip):
-            pkt_raw = (Ether(src=src_mac, dst=dst_mac) /
-                       IPv6(src=src_ip, dst=dst_ip) /
-                       ICMPv6EchoRequest())
-        else:
-            raise ValueError("IPv6 addresses not in correct format")
-    else:
-        raise RuntimeError("Unexpected payload type.")
-
-    txq.send(pkt_raw)
-    sent.append(auto_pad(pkt_raw))
-
-    # Receive copy of Rx packet.
-    while True:
-        ether = rxq_mirrored.recv(2)
-        if ether is None:
-            raise RuntimeError("Rx timeout of mirrored Rx packet")
-
-        if ether.haslayer(ICMPv6ND_NS):
-            # read another packet in the queue if the current one is ICMPv6ND_NS
-            continue
-        else:
-            # otherwise process the current packet
-            break
-
-    pkt = auto_pad(pkt_raw)
-    if str(ether) != str(pkt):
-        print("Mirrored Rx packet doesn't match the original Rx packet.")
-        if ether.src != src_mac or ether.dst != dst_mac:
-            raise RuntimeError("MAC mismatch in mirrored Rx packet.")
-        if ptype == "ARP":
-            if not ether.haslayer(ARP):
-                raise RuntimeError("Mirrored Rx packet is not an ARP packet.")
-            if ether['ARP'].op != 1:  # 1=who-has
-                raise RuntimeError("Mirrored Rx packet is not an ARP request.")
-            if ether['ARP'].hwsrc != src_mac or ether['ARP'].hwdst != dst_mac:
-                raise RuntimeError("MAC mismatch in mirrored Rx ARP packet.")
-            if ether['ARP'].psrc != src_ip or ether['ARP'].pdst != dst_ip:
-                raise RuntimeError("IP address mismatch in mirrored "
-                                   "Rx ARP packet.")
-        elif ptype == "ICMP":
-            if not ether.haslayer(IP):
-                raise RuntimeError("Mirrored Rx packet is not an IPv4 packet.")
-            if ether['IP'].src != src_ip or ether['IP'].dst != dst_ip:
-                raise RuntimeError("IP address mismatch in mirrored "
-                                   "Rx IPv4 packet.")
-            if not ether.haslayer(ICMP):
-                raise RuntimeError("Mirrored Rx packet is not an ICMP packet.")
-            if ether['ICMP'].type != 8:  # 8=echo-request
-                raise RuntimeError("Mirrored Rx packet is not an ICMP "
-                                   "echo request.")
-        elif ptype == "ICMPv6":
-            if not ether.haslayer(IPv6):
-                raise RuntimeError("Mirrored Rx packet is not an IPv6 packet.")
-            if ether['IPv6'].src != src_ip or ether['IPv6'].dst != dst_ip:
-                raise RuntimeError("IP address mismatch in mirrored "
-                                   "Rx IPv6 packet.")
-            if not ether.haslayer(ICMPv6EchoRequest):
-                raise RuntimeError("Mirrored Rx packet is not an ICMPv6 "
-                                   "echo request.")
-    print("Mirrored Rx packet check OK.\n")
-
-    # Receive reply on TG Tx port.
-    ether_repl = rxq_tx.recv(2, sent)
-
-    if ether_repl is None:
-        raise RuntimeError("Reply not received on TG Tx port.")
-
-    print("Reply received on TG Tx port.\n")
-
-    # Receive copy of Tx packet.
-    ether = rxq_mirrored.recv(2)
-    if ether is None:
-        raise RuntimeError("Rx timeout of mirrored Tx packet")
-
-    if str(ether) != str(ether_repl):
-        print("Mirrored Tx packet doesn't match the received Tx packet.")
-        if ether.src != ether_repl.src or ether.dst != ether_repl.dst:
-            raise RuntimeError("MAC mismatch in mirrored Tx packet.")
-        if ptype == "ARP":
-            if not ether.haslayer(ARP):
-                raise RuntimeError("Mirrored Tx packet is not an ARP packet.")
-            if ether['ARP'].op != ether_repl['ARP'].op:  # 2=is_at
-                raise RuntimeError("ARP operational code mismatch "
-                                   "in mirrored Tx packet.")
-            if ether['ARP'].hwsrc != ether_repl['ARP'].hwsrc\
-                    or ether['ARP'].hwdst != ether_repl['ARP'].hwdst:
-                raise RuntimeError("MAC mismatch in mirrored Tx ARP packet.")
-            if ether['ARP'].psrc != ether_repl['ARP'].psrc\
-                    or ether['ARP'].pdst != ether_repl['ARP'].pdst:
-                raise RuntimeError("IP address mismatch in mirrored "
-                                   "Tx ARP packet.")
-        elif ptype == "ICMP":
-            if not ether.haslayer(IP):
-                raise RuntimeError("Mirrored Tx packet is not an IPv4 packet.")
-            if ether['IP'].src != ether_repl['IP'].src\
-                    or ether['IP'].dst != ether_repl['IP'].dst:
-                raise RuntimeError("IP address mismatch in mirrored "
-                                   "Tx IPv4 packet.")
-            if not ether.haslayer(ICMP):
-                raise RuntimeError("Mirrored Tx packet is not an ICMP packet.")
-            if ether['ICMP'].type != ether_repl['ICMP'].type:  # 0=echo-reply
-                raise RuntimeError("ICMP packet type mismatch "
-                                   "in mirrored Tx packet.")
-        elif ptype == "ICMPv6":
-            if not ether.haslayer(IPv6):
-                raise RuntimeError("Mirrored Tx packet is not an IPv6 packet.")
-            if ether['IPv6'].src != ether_repl['IPv6'].src\
-                    or ether['IPv6'].dst != ether_repl['IPv6'].dst:
-                raise RuntimeError("IP address mismatch in mirrored "
-                                   "Tx IPv6 packet.")
-            if ether[2].name != ether_repl[2].name:
-                raise RuntimeError("ICMPv6 message type mismatch "
-                                   "in mirrored Tx packet.")
-    print("Mirrored Tx packet check OK.\n")
-    sys.exit(0)
-
-
-if __name__ == "__main__":
-    main()
diff --git a/sample_tests/sample_suite.robot b/sample_tests/sample_suite.robot
deleted file mode 100644 (file)
index 97a8585..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright (c) 2016 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Library | resources.libraries.python.NodePath
-| Library | resources.libraries.python.Trace
-| Library | resources.libraries.python.TrafficScriptExecutor
-| Library | resources.libraries.python.MacSwap
-| Library | resources.libraries.python.SetupFramework
-| Resource | resources/libraries/robot/shared/default.robot
-| Resource | resources/libraries/robot/shared/interfaces.robot
-| Resource | resources/libraries/robot/shared/counters.robot
-| Suite Setup | Run Keywords | Setup Framework | ${nodes}
-| ...         | AND          | Setup All DUTs | ${nodes}
-| ...         | AND          | Configure all TGs for traffic script
-| ...         | AND          | Update All Interface Data On All Nodes | ${nodes}
-| ...         | AND          | Setup nodes for macswap testing
-| Test Setup | Clear interface counters on all vpp nodes in topology | ${nodes}
-| Test Teardown | Show Packet Trace on All DUTs | ${nodes}
-| Documentation | *MacSwap test suite.*
-| ...
-| ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG with single link
-| ... | between nodes. From this topology only TG and DUT1 nodes are used.
-| ... | Test packet is sent from single interface on TG and test wait for
-| ... | response on the same TG interface.
-
-*** Keywords ***
-| Setup nodes for macswap testing
-| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']}
-| | Compute Path
-| | ${tg_port} | ${tg_node}= | First Interface
-| | ${dut_port} | ${dut_node}= | Last Interface
-| | Set Suite Variable | ${tg_port}
-| | Set Suite Variable | ${tg_node}
-| | Set Suite Variable | ${dut_port}
-| | Set Suite Variable | ${dut_node}
-| | Set Interface State | ${tg_node} | ${tg_port} | up
-| | Set Interface State | ${dut_node} | ${dut_port} | up
-| | All Vpp Interfaces Ready Wait | ${nodes}
-
-| Send and verify macswap on node "${tg_node}" interface "${tg_port}"
-| | ${src_ip}= | Set Variable | 1.1.1.1
-| | ${dst_ip}= | Set Variable | 2.2.2.2
-| | ${src_mac}= | Set Variable | 01:00:00:00:00:01
-| | ${dst_mac}= | Set Variable | 01:00:00:00:00:02
-| | ${args}= | Traffic Script Gen Arg | ${tg_port} | ${tg_port} | ${src_mac}
-| |          | ...                    | ${dst_mac} | ${src_ip} | ${dst_ip}
-| | Run Traffic Script On Node | macswap_check.py | ${tg_node} | ${args}
-
-*** Test Cases ***
-| VPP macswap plugin swaps MAC addresses
-| | [Tags] | 3_NODE_SINGLE_LINK_TOPO | VM_ENV
-| | Enable Disable macswap vat exec | ${dut_node} | ${dut_port}
-| | Send and verify macswap on node "${tg_node}" interface "${tg_port}"