From: Peter Mikus Date: Fri, 8 Nov 2019 13:15:23 +0000 (+0000) Subject: VPPD: Add L2patch X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=commitdiff_plain;h=84c5ded911af20e033b6f5b521036eeeeb2678a3 VPPD: Add L2patch Signed-off-by: Peter Mikus Change-Id: Iebdc03e56cf9ecf0322ff5c2c8698e9e3daf4407 --- diff --git a/resources/libraries/python/CoreDumpUtil.py b/resources/libraries/python/CoreDumpUtil.py index 76084a3cba..3d40ffa25d 100644 --- a/resources/libraries/python/CoreDumpUtil.py +++ b/resources/libraries/python/CoreDumpUtil.py @@ -105,6 +105,17 @@ class CoreDumpUtil: LimitUtil.set_pid_limit(node, pid, u"core", u"unlimited") LimitUtil.get_pid_limit(node, pid) + def enable_coredump_limit_vpp(self, node): + """Enable coredump for VPP PID by setting no core limits on DUT + if setting of core limit by this library is enabled. + + :param node: DUT Node in the topology. + :type node: dict + """ + if node['type'] == NodeType.DUT and self.is_core_limit_enabled(): + vpp_pid = DUTSetup.get_vpp_pid(node) + self.enable_coredump_limit(node, vpp_pid) + def enable_coredump_limit_vpp_on_all_duts(self, nodes): """Enable coredump for all VPP PIDs by setting no core limits on all DUTs if setting of core limit by this library is enabled. @@ -113,9 +124,7 @@ class CoreDumpUtil: :type nodes: dict """ for node in nodes.values(): - if node[u"type"] == NodeType.DUT and self.is_core_limit_enabled(): - vpp_pid = DUTSetup.get_vpp_pid(node) - self.enable_coredump_limit(node, vpp_pid) + self.enable_coredump_limit_vpp(node) def get_core_files_on_all_nodes(self, nodes, disable_on_success=True): """Process all core files and remove the original core files on all @@ -128,17 +137,19 @@ class CoreDumpUtil: :type disable_on_success: bool """ for node in nodes.values(): - command = ( - f"for f in {Constants.CORE_DUMP_DIR}/*.core; do sudo gdb" - f" /usr/bin/vpp ${{f}} -ex 'source -v {Constants.REMOTE_FW_DIR}" - f"/resources/tools/scripts/gdb-commands' -ex quit;" - f" sudo rm -f ${{f}}; done" - ) - try: - exec_cmd_no_error(node, command, timeout=3600) - if disable_on_success: - self.set_core_limit_disabled() - except RuntimeError: - # If compress was not successful ignore error and skip further - # processing. - continue + if node[u"type"] == NodeType.DUT: + command = ( + f"for f in {Constants.CORE_DUMP_DIR}/*.core; do " + f"sudo gdb /usr/bin/vpp ${{f}} " + f"-ex 'source -v {Constants.REMOTE_FW_DIR}" + f"/resources/tools/scripts/gdb-commands' -ex quit; " + f"sudo rm -f ${{f}}; done" + ) + try: + exec_cmd_no_error(node, command, timeout=3600) + if disable_on_success: + self.set_core_limit_disabled() + except RuntimeError: + # If compress was not successful ignore error and skip further + # processing. + continue diff --git a/tests/vpp/device/l2patch/eth2p-ethip4-l2patch-dev.robot b/tests/vpp/device/l2patch/eth2p-ethip4-l2patch-dev.robot new file mode 100644 index 0000000000..3829a7249d --- /dev/null +++ b/tests/vpp/device/l2patch/eth2p-ethip4-l2patch-dev.robot @@ -0,0 +1,75 @@ +# 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 *** +| Resource | resources/libraries/robot/shared/default.robot +| +| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY +| ... | NIC_Virtual | ETH | L2PATCH | BASE | DRV_VFIO_PCI +| +| Suite Setup | Setup suite single link | scapy +| Test Setup | Setup test +| Test Teardown | Tear down test | packet_trace +| +| Test Template | Local Template +| +| Documentation | *L2 cross-connect test cases* +| +| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of \ +| ... | IPv4. Both apply to all links. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 patch switching. +| ... | *[Ver] TG verification:* Test IPv4 packets with IP protocol=61 \ +| ... | are sent in both directions by TG on links to DUT1; on receive TG \ +| ... | verifies packets for correctness and their IPv4 src-addr, \ +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC792 + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | virtual +| ${nic_driver}= | vfio-pci +| ${overhead}= | ${0} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Ver] Make TG send IPv4 packets in both directions between two\ +| | ... | of its interfaces to be switched by DUT to and from docker; verify\ +| | ... | all packets are received. +| | +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer. Type: integer +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | Given Set Max Rate And Jumbo +| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} +| | And Pre-initialize layer driver | ${nic_driver} +| | And Apply startup configuration on all VPP DUTs | with_trace=${True} +| | When Initialize layer driver | ${nic_driver} +| | And Initialize layer interface +| | And Initialize L2 patch +| | Then Send IPv4 bidirectionally and verify received packets +| | ... | ${tg} | ${tg_if1} | ${tg_if2} + +*** Test Cases *** +| tc01-64B-ethip4-l2patch-dev +| | [Tags] | 64B | EXPECTED_FAILING +| | frame_size=${64} | phy_cores=${0}