From 6871d4e7f6ed43ce0bb003cb08e88b2581a474eb Mon Sep 17 00:00:00 2001 From: Peter Mikus Date: Tue, 18 Jun 2019 20:31:48 +0000 Subject: Align suite/test teardown/setup + Phase I - aligning FUNC/PERF Change-Id: I46b1e43687ddb29f5ed3c6335fe1baf21ec02822 Signed-off-by: Peter Mikus --- resources/libraries/robot/crypto/ipsec.robot | 29 --- .../libraries/robot/l2/l2_bridge_domain.robot | 37 +-- .../robot/performance/performance_setup.robot | 251 +-------------------- resources/libraries/robot/shared/default.robot | 39 +--- resources/libraries/robot/shared/qemu.robot | 51 +++++ .../libraries/robot/shared/suite_teardown.robot | 47 ++++ .../libraries/robot/shared/test_teardown.robot | 127 +++++++++++ resources/libraries/robot/vm/qemu.robot | 86 ------- .../roles/vpp_device/files/csit-initialize-vfs.sh | 2 + 9 files changed, 234 insertions(+), 435 deletions(-) create mode 100644 resources/libraries/robot/shared/qemu.robot create mode 100644 resources/libraries/robot/shared/suite_teardown.robot create mode 100644 resources/libraries/robot/shared/test_teardown.robot delete mode 100644 resources/libraries/robot/vm/qemu.robot (limited to 'resources') diff --git a/resources/libraries/robot/crypto/ipsec.robot b/resources/libraries/robot/crypto/ipsec.robot index b571fcd6ca..135881f83e 100644 --- a/resources/libraries/robot/crypto/ipsec.robot +++ b/resources/libraries/robot/crypto/ipsec.robot @@ -250,34 +250,5 @@ | | ... | | [Arguments] | ${ip_version} | | ... -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Import Library | resources.libraries.python.VppConfigGenerator -| | | ... | WITH NAME | ${dut} -| | | Run keyword | ${dut}.Set Node | ${nodes['${dut}']} -| | | Run keyword | ${dut}.Set Vpp Startup Conf Backup -| | | Run keyword | ${dut}.Set Vpp Logfile | /tmp/vpp.log -| | | Run keyword | ${dut}.Add Unix Nodaemon -| | | Run keyword | ${dut}.Add Unix Log -| | | Run keyword | ${dut}.Add Unix Coredump -| | | Run keyword | ${dut}.Add Unix CLI Listen | /run/vpp/cli.sock -| | | Run keyword | ${dut}.Add Unix Gid -| | | Run keyword | ${dut}.Add Api Segment Gid -| | | ${socket_id}= | Set Variable | ${0} -| | | ${sw_dev_count}= | Set Variable | ${1} -| | | Run keyword | ${dut}.Add DPDK SW Cryptodev | aesni_mb | ${socket_id} -| | | ... | ${sw_dev_count} -| | | Run keyword | ${dut}.Add DPDK SW Cryptodev | aesni_gcm | ${socket_id} -| | | ... | ${sw_dev_count} -| | Write startup configuration on all VPP DUTs | | Set up VPP device test | | Run Keyword | Configure topology for ${ip_version} IPsec testing - -| Tear down IPSec SW device functional test -| | [Documentation] -| | ... | Tear down IPSec SW device functional test. -| | ... -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Run keyword | ${dut}.Restore Config -| | Tear down VPP device test diff --git a/resources/libraries/robot/l2/l2_bridge_domain.robot b/resources/libraries/robot/l2/l2_bridge_domain.robot index b69d449a10..fda211508b 100644 --- a/resources/libraries/robot/l2/l2_bridge_domain.robot +++ b/resources/libraries/robot/l2/l2_bridge_domain.robot @@ -1,4 +1,4 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. +# 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: @@ -202,41 +202,6 @@ | | ${mac}= | Get Interface Mac | ${dest_node} | ${dest_node_if} | | Vpp Add L2fib Entry | ${vpp_node} | ${mac} | ${vpp_node_if} | ${bd_id} -| Configure VM for vhost L2BD forwarding -| | [Documentation] | Setup QEMU and start VM with two vhost interfaces. -| | ... -| | ... | *Arguments:* -| | ... | - ${dut_node} - DUT node to start VM on. Type: dictionary -| | ... | - ${sock1} - Socket path for first Vhost-User interface. Type: string -| | ... | - ${sock2} - Socket path for second Vhost-User interface. Type: string -| | ... | - ${qemu_name} - Qemu instance name by which the object will be -| | ... | accessed (Optional). Type: string -| | ... -| | ... | _NOTE:_ This KW sets following test case variable: -| | ... | - ${${qemu_name}} - VM node info. Type: dictionary -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Configure VM for vhost L2BD forwarding \| ${nodes['DUT1']} \ -| | ... | \| /tmp/sock1 \| /tmp/sock2 \| -| | ... | \| Configure VM for vhost L2BD forwarding \| ${nodes['DUT2']} \ -| | ... | \| /tmp/sock1 \| /tmp/sock2 \| qemu_instance_2 \| -| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${qemu_name}=vm_node -| | Import Library | resources.libraries.python.QemuUtils | node=${dut_node} | -| | ... | WITH NAME | ${qemu_name} -| | Set Test Variable | ${${qemu_name}} | ${None} -| | Run Keyword | ${qemu_name}.Qemu Add Vhost User If | ${sock1} -| | Run Keyword | ${qemu_name}.Qemu Add Vhost User If | ${sock2} -| | ${vm}= | Run keyword | ${qemu_name}.Qemu Start -| | ${br}= | Set Variable | br0 -| | ${vhost1}= | Get Vhost User If Name By Sock | ${vm} | ${sock1} -| | ${vhost2}= | Get Vhost User If Name By Sock | ${vm} | ${sock2} -| | Linux Add Bridge | ${vm} | ${br} | ${vhost1} | ${vhost2} -| | Set Interface State | ${vm} | ${vhost1} | up | if_type=name -| | Set Interface State | ${vm} | ${vhost2} | up | if_type=name -| | Set Interface State | ${vm} | ${br} | up | if_type=name -| | Set Test Variable | ${${qemu_name}} | ${vm} - | Configure vhost interfaces for L2BD forwarding | | [Documentation] | Create two Vhost-User interfaces on defined VPP node. | | ... diff --git a/resources/libraries/robot/performance/performance_setup.robot b/resources/libraries/robot/performance/performance_setup.robot index 9350c65beb..3e27c18d6a 100644 --- a/resources/libraries/robot/performance/performance_setup.robot +++ b/resources/libraries/robot/performance/performance_setup.robot @@ -200,36 +200,6 @@ | | Set Suite Variable | ${dut2_if1_2} | | Set Suite Variable | ${dut2_if2} -| Tear down guest VM -| | [Documentation] -| | ... | Stop all qemu processes running on nodes. -| | ... -| | Run Keyword | vnf_manager.Kill All VMs - -| Tear down guest VM with dpdk-testpmd -| | [Documentation] -| | ... | Stop all qemu processes with dpdk-testpmd running on ${dut_node}. -| | ... | Argument is dictionary of all qemu nodes running with its names. -| | ... | Dpdk-testpmd is stopped gracefully with printing stats. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - Node where to clean qemu. Type: dictionary -| | ... | - dut_vm_refs - VM references on node. Type: dictionary -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Tear down guest VM with dpdk-testpmd \| ${node['DUT1']} \ -| | ... | \| ${dut_vm_refs} \| -| | ... -| | [Arguments] | ${dut_node} | ${dut_vm_refs} -| | ${vms_number}= | Get Length | ${dut_vm_refs} -| | ${index}= | Set Variable | ${0} -| | :FOR | ${vm_name} | IN | @{dut_vm_refs} -| | | ${vm}= | Get From Dictionary | ${dut_vm_refs} | ${vm_name} -| | | ${index}= | Evaluate | ${index} + 1 -| | | Dpdk Testpmd Stop | ${vm} -| | | Run Keyword If | '${index}' == '${vms_number}' | ${vm_name}.Qemu Kill All - # Suite setups | Set up 2-node performance topology with DUT's NIC model @@ -581,20 +551,6 @@ | | Set Linux interface up | ${tg} | ${intf_name} | | Install wrk | ${tg} -# Suite teardowns - -| Tear down 2-node performance topology -| | [Documentation] -| | ... | Suite teardown phase with traffic generator teardown. -| | ... -| | Teardown traffic generator | ${tg} - -| Tear down 3-node performance topology -| | [Documentation] -| | ... | Suite teardown phase with traffic generator teardown. -| | ... -| | Teardown traffic generator | ${tg} - # Tests setups | Set up performance test @@ -656,210 +612,5 @@ | | Start VPP in all '${container_group}' containers | | Restart VPP service on all DUTs | ${nodes} | | Verify VPP on all DUTs | ${nodes} +| | Save VPP PIDs | | Append To List | ${container_groups} | ${container_group} - -# Tests teardowns - -| Tear down performance test -| | [Documentation] | Common test teardown for performance tests. -| | ... -| | ... | TODO: Rename to "Tear down VPP performance test"? -| | ... | most steps do not apply to DPDK nor other vswitch solutions. -| | ... | TODO: Document at least some steps this keyword takes. -| | ... -| | ... | To save space in suites, this keyword does not accept -| | ... | any explicit arguments. Instead, it requires few variables -| | ... | to be defined in at least test scope. -| | ... -| | ... | *Test Variables needed:* -| | ... | - frame_size - L2 Frame Size [B]. Type: integer -| | ... | - traffic_profile - Profile name to run debug trial with. Type: string -| | ... | - nodes - Parsed information object. Type: dict -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Set Test Variable \| \${frame_size} \| 64 \| -| | ... | \| Tear down performance test \| -| | ... -| | Remove All Added Ports On All DUTs From Topology | ${nodes} -| | Show PAPI History On All DUTs | ${nodes} -| | Get Core Files on All Nodes | ${nodes} -| | Set Test Variable | ${pkt_trace} | ${True} -| | Run Keyword If Test Failed -| | ... | Traffic should pass with no loss | ${perf_trial_duration} | 10000pps -| | ... | ${frame_size} | ${traffic_profile} | fail_on_loss=${False} - -| Tear down performance test with container -| | [Documentation] -| | ... | Common test teardown for performance tests which uses containers. -| | ... -| | ... | TODO: Call Tear down performance test? -| | ... -| | :FOR | ${container_group} | IN | @{container_groups} -| | | Destroy all '${container_group}' containers - -| Tear down performance test with vhost -| | [Documentation] | Common test teardown for performance tests which use -| | ... | vhost(s) and VM(s). -| | ... -| | Tear down performance test -| | Show VPP vhost on all DUTs | ${nodes} -| | Tear down guest VM - -| Tear down performance test with vhost and VM with dpdk-testpmd -| | [Documentation] | Common test teardown for performance tests which use -| | ... | vhost(s) and VM(s) with dpdk-testpmd. -| | ... -| | ... | *Test Variables needed:* -| | ... | - frame_size - L2 Frame Size [B]. Type: integer -| | ... | - traffic_profile - Profile name to run debug trial with. Type: string -| | ... -| | ... | *Arguments:* -| | ... | - dut1_node - Node where to clean qemu. Type: dictionary -| | ... | - dut1_vm_refs - VM references on node. Type: dictionary -| | ... | - dut2_node - Node where to clean qemu. Type: dictionary -| | ... | - dut2_vm_refs - VM references on node. Type: dictionary -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Tear down performance test with vhost and VM with dpdk-testpmd \ -| | ... | \| ${node['DUT1']} \| ${dut_vm_refs} \ -| | ... | \| ${node['DUT2']} \| ${dut_vm_refs} \| -| | ... -| | [Arguments] | ${dut1_node}=${None} | ${dut1_vm_refs}=${None} -| | ... | ${dut2_node}=${None} | ${dut2_vm_refs}=${None} -| | ... -| | Tear down performance test -| | Show VPP vhost on all DUTs | ${nodes} -| | Run keyword unless | ${dut1_node}==${None} -| | ... | Tear down guest VM with dpdk-testpmd | ${dut1} | ${dut1_vm_refs} -| | Run keyword unless | ${dut2_node}==${None} -| | ... | Tear down guest VM with dpdk-testpmd | ${dut2} | ${dut2_vm_refs} - -| Tear down performance test with vhost and VM with dpdk-testpmd and ACL -| | [Documentation] | Common test teardown for performance tests which use -| | ... | vhost(s) and VM(s) with ACL and dpdk-testpmd. -| | ... -| | ... | *Test Variables needed:* -| | ... | - frame_size - L2 Frame Size [B]. Type: integer -| | ... | - traffic_profile - Profile name to run debug trial with. Type: string -| | ... -| | ... | *Arguments:* -| | ... | - dut1_node - Node where to clean qemu. Type: dictionary -| | ... | - dut1_vm_refs - VM references on node. Type: dictionary -| | ... | - dut2_node - Node where to clean qemu. Type: dictionary -| | ... | - dut2_vm_refs - VM references on node. Type: dictionary -| | ... -| | [Arguments] | ${dut1_node}=${None} | ${dut1_vm_refs}=${None} -| | ... | ${dut2_node}=${None} | ${dut2_vm_refs}=${None} -| | ... -| | Tear down performance test with vhost and VM with dpdk-testpmd -| | ... | ${dut1_node} | ${dut1_vm_refs} -| | ... | ${dut2_node} | ${dut2_vm_refs} -| | Run Keyword If Test Failed | Vpp Log Plugin Acl Settings | ${dut1} -| | Run Keyword If Test Failed | Run Keyword And Ignore Error -| | ... | Vpp Log Plugin Acl Interface Assignment | ${dut1} - -| Tear down DPDK 2-node performance topology -| | [Documentation] -| | ... | Suite teardown phase with traffic generator teardown. -| | ... | Cleanup DPDK test environment. -| | ... -| | ... | TODO: Add "Traffic should pass with no loss" with min rate -| | ... | on failure, as in the VPP test teardown? -| | ... -| | Teardown traffic generator | ${tg} -| | Cleanup DPDK Environment | ${dut1} | ${dut1_if1} | ${dut1_if2} - -| Tear down DPDK 3-node performance topology -| | [Documentation] -| | ... | Suite teardown phase with traffic generator teardown. -| | ... | Cleanup DPDK test environment. -| | ... -| | ... | TODO: Add "Traffic should pass with no loss" with min rate -| | ... | on failure, as in the VPP test teardown? -| | ... -| | Teardown traffic generator | ${tg} -| | Cleanup DPDK Environment | ${dut1} | ${dut1_if1} | ${dut1_if2} -| | Cleanup DPDK Environment | ${dut2} | ${dut2_if1} | ${dut2_if2} - -| Tear down performance test with NAT -| | [Documentation] | Common test teardown for performance \ -| | ... | tests with NAT feature used. -| | ... -| | ... | *Test Variables needed:* -| | ... | - frame_size - L2 Frame Size [B]. Type: integer -| | ... | - traffic_profile - Profile name to run debug trial with. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Tear down performance test with NAT \| -| | ... -| | Tear down performance test -| | Show NAT verbose | ${dut1} -| | Show NAT verbose | ${dut2} - -| Tear down performance test with ACL -| | [Documentation] | Common test teardown for performance \ -| | ... | tests with ACL feature used. -| | ... -| | ... | *Test Variables needed:* -| | ... | - frame_size - L2 Frame Size [B]. Type: integer -| | ... | - traffic_profile - Profile name to run debug trial with. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Tear down performance test with ACL \| -| | ... -| | Tear down performance test -| | Run Keyword If Test Failed | Vpp Log Plugin Acl Settings | ${dut1} -| | Run Keyword If Test Failed | Run Keyword And Ignore Error -| | ... | Vpp Log Plugin Acl Interface Assignment | ${dut1} - -| Tear down performance test with MACIP ACL -| | [Documentation] | Common test teardown for performance \ -| | ... | tests with MACIP ACL feature used. -| | ... -| | ... | *Test Variables needed:* -| | ... | - frame_size - L2 Frame Size [B]. Type: integer -| | ... | - traffic_profile - Profile name to run debug trial with. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Tear down performance test with MACIP ACL \| -| | ... -| | Tear down performance test -| | Run Keyword If Test Failed | Run Keyword And Ignore Error -| | ... | Vpp Log Macip Acl Settings | ${dut1} -| | Run Keyword And Ignore Error -| | ... | Vpp Log Macip Acl Interface Assignment | ${dut1} - -| Tear down performance test with Ligato Kubernetes -| | [Documentation] | Common test teardown for performance \ -| | ... | tests with Ligato Kubernetes. -| | ... -| | ... | TODO: Call Tear down performance test? -| | ... -| | Run Keyword If Test Failed -| | ... | Get Kubernetes logs on all DUTs | ${nodes} | csit -| | Run Keyword If Test Failed -| | ... | Describe Kubernetes resource on all DUTs | ${nodes} | csit -| | Delete Kubernetes resource on all DUTs | ${nodes} | csit - -| Tear down performance test with SRv6 with encapsulation -| | [Documentation] | Common test teardown for performance \ -| | ... | tests with SRv6 with encapsulation feature used. -| | ... -| | ... | *Test Variables needed:* -| | ... | - frame_size - L2 Frame Size [B]. Type: integer -| | ... | - traffic_profile - Profile name to run debug trial with. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Tear down performance test with SRv6 with encapsulation \| -| | ... -| | Tear down performance test -| | Run Keyword If Test Failed | Show SR Policies on all DUTs | ${nodes} -| | Run Keyword If Test Failed -| | ... | Show SR Steering Policies on all DUTs | ${nodes} -| | Run Keyword If Test Failed | Show SR LocalSIDs on all DUTs | ${nodes} diff --git a/resources/libraries/robot/shared/default.robot b/resources/libraries/robot/shared/default.robot index 262dc02f55..b7e4a75773 100644 --- a/resources/libraries/robot/shared/default.robot +++ b/resources/libraries/robot/shared/default.robot @@ -34,7 +34,10 @@ | Library | resources.libraries.python.topology.Topology | ... | Resource | resources/libraries/robot/shared/container.robot -| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/shared/qemu.robot +| Resource | resources/libraries/robot/shared/suite_teardown.robot +| Resource | resources/libraries/robot/shared/test_teardown.robot + *** Keywords *** | Configure all TGs for traffic script @@ -421,6 +424,7 @@ | | ${duts}= | Get Matches | ${nodes} | DUT* | | :FOR | ${dut} | IN | @{duts} | | | Run keyword | ${dut}.Apply Config +| | Save VPP PIDs | | Enable Coredump Limit VPP on All DUTs | ${nodes} | | Update All Interface Data On All Nodes | ${nodes} | skip_tg=${True} @@ -434,8 +438,6 @@ | | :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} -| | | Run Keyword If | ',' in '${pid}' -| | | ... | FAIL | More then one VPP PID found on node ${key}: ${pid} | | Set Test Variable | ${setup_vpp_pids} | Verify VPP PID in Teardown @@ -486,17 +488,6 @@ | | Update All Interface Data On All Nodes | ${nodes} | skip_tg_udev=${True} | | Reset PAPI History On All DUTs | ${nodes} -| Tear down VPP device test -# TODO: Generalize this KW if it will not diverge from Functional derivate too -# much -| | [Documentation] | Common test teardown for vpp-device tests. -| | ... -| | Remove All Added Ports On All DUTs From Topology | ${nodes} -| | Show Packet Trace on All DUTs | ${nodes} -| | Show PAPI History On All DUTs | ${nodes} -| | Vpp Show Errors On All DUTs | ${nodes} -| | Verify VPP PID in Teardown - | Tear down LISP functional test | | [Documentation] | Common test teardown for functional tests with LISP. | | ... @@ -508,19 +499,6 @@ | | Vpp Show Errors On All DUTs | ${nodes} | | Verify VPP PID in Teardown -| Tear down LISP functional test with QEMU -| | [Documentation] | Common test teardown for functional tests with LISP and\ -| | ... | QEMU. -| | ... -| | Remove All Added Ports On All DUTs From Topology | ${nodes} -| | Show Packet Trace on All DUTs | ${nodes} -| | Show PAPI History On All DUTs | ${nodes} -| | Show Vpp Settings | ${nodes['DUT1']} -| | Show Vpp Settings | ${nodes['DUT2']} -| | Vpp Show Errors On All DUTs | ${nodes} -| | Tear down QEMU -| | Verify VPP PID in Teardown - | Set up functional test with containers | | [Documentation] | | ... | Common test setup for functional tests with containers. @@ -560,13 +538,6 @@ | | Start VPP in all '${container_group}' containers | | Append To List | ${container_groups} | ${container_group} -| Tear down functional test with container -| | [Documentation] -| | ... | Common test teardown for functional tests which uses containers. -| | ... -| | :FOR | ${container_group} | IN | @{container_groups} -| | | Destroy all '${container_group}' containers - | Stop VPP Service on DUT | | [Documentation] | Stop the VPP service on the specified node. | | ... diff --git a/resources/libraries/robot/shared/qemu.robot b/resources/libraries/robot/shared/qemu.robot new file mode 100644 index 0000000000..1178fa93b4 --- /dev/null +++ b/resources/libraries/robot/shared/qemu.robot @@ -0,0 +1,51 @@ +# 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 *** +| Library | resources.libraries.python.L2Util +| Library | resources.libraries.python.InterfaceUtil + +*** Keywords *** +| Configure VM for vhost L2BD forwarding +| | [Documentation] | Setup QEMU and start VM with two vhost interfaces. +| | ... +| | ... | *Arguments:* +| | ... | - ${dut_node} - DUT node to start VM on. Type: dictionary +| | ... | - ${sock1} - Socket path for first Vhost-User interface. Type: string +| | ... | - ${sock2} - Socket path for second Vhost-User interface. Type: string +| | ... | - ${qemu_name} - Qemu instance name by which the object will be +| | ... | accessed (Optional). Type: string +| | ... +| | ... | _NOTE:_ This KW sets following test case variable: +| | ... | - ${${qemu_name}} - VM node info. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Configure VM for vhost L2BD forwarding \| ${nodes['DUT1']} \ +| | ... | \| /tmp/sock1 \| /tmp/sock2 \| +| | ... | \| Configure VM for vhost L2BD forwarding \| ${nodes['DUT2']} \ +| | ... | \| /tmp/sock1 \| /tmp/sock2 \| qemu_instance_2 \| +| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${qemu_name}=vm_node +| | Import Library | resources.libraries.python.QemuUtils | node=${dut_node} | +| | ... | WITH NAME | ${qemu_name} +| | Set Test Variable | ${${qemu_name}} | ${None} +| | Run Keyword | ${qemu_name}.Qemu Add Vhost User If | ${sock1} +| | Run Keyword | ${qemu_name}.Qemu Add Vhost User If | ${sock2} +| | ${vm}= | Run keyword | ${qemu_name}.Qemu Start +| | ${br}= | Set Variable | br0 +| | ${vhost1}= | Get Vhost User If Name By Sock | ${vm} | ${sock1} +| | ${vhost2}= | Get Vhost User If Name By Sock | ${vm} | ${sock2} +| | Linux Add Bridge | ${vm} | ${br} | ${vhost1} | ${vhost2} +| | Set Interface State | ${vm} | ${vhost1} | up | if_type=name +| | Set Interface State | ${vm} | ${vhost2} | up | if_type=name +| | Set Interface State | ${vm} | ${br} | up | if_type=name +| | Set Test Variable | ${${qemu_name}} | ${vm} diff --git a/resources/libraries/robot/shared/suite_teardown.robot b/resources/libraries/robot/shared/suite_teardown.robot new file mode 100644 index 0000000000..1b738eaeef --- /dev/null +++ b/resources/libraries/robot/shared/suite_teardown.robot @@ -0,0 +1,47 @@ +# 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. + +"""Keywords used in suite teardowns.""" + +*** Settings *** +| Library | resources.libraries.python.DPDK.DPDKTools +| ... +| Documentation | Suite teardown keywords. + +*** Keywords *** +| Tear down suite +| | [Documentation] +| | ... | Common suite teardown for tests. +| | ... +| | ... | *Arguments:* +| | ... | - ${actions} - Additional teardown action. Type: list +| | ... +| | [Arguments] | @{actions} +| | ... +| | :FOR | ${action} | IN | @{actions} +| | | Run Keyword | Additional Suite Tear Down Action For ${action} + +| Additional Suite Tear Down Action For performance +| | [Documentation] +| | ... | Additional teardown for suites which uses performance measurement. +| | ... +| | Teardown traffic generator | ${tg} + +| Additional Suite Tear Down Action For dpdk +| | [Documentation] +| | ... | Additional teardown for suites which uses dpdk. +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Cleanup DPDK Environment +| | | ... | ${nodes['${dut}']} | ${${dut}_if1} | ${${dut}_if2} diff --git a/resources/libraries/robot/shared/test_teardown.robot b/resources/libraries/robot/shared/test_teardown.robot new file mode 100644 index 0000000000..e30aa9f41e --- /dev/null +++ b/resources/libraries/robot/shared/test_teardown.robot @@ -0,0 +1,127 @@ +# 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. + +"""Keywords used in test teardowns.""" + +*** Settings *** +| Documentation | Test teardown keywords. + +*** Keywords *** +| Tear down test +| | [Documentation] +| | ... | Common test teardown for tests. +| | ... +| | ... | *Arguments:* +| | ... | - ${actions} - Additional teardown action. Type: list +| | ... +| | [Arguments] | @{actions} +| | ... +| | Remove All Added Ports On All DUTs From Topology | ${nodes} +| | Show PAPI History On All DUTs | ${nodes} +| | Get Core Files on All Nodes | ${nodes} +| | Verify VPP PID in Teardown +| | :FOR | ${action} | IN | @{actions} +| | | Run Keyword | Additional Test Tear Down Action For ${action} + +| Additional Test Tear Down Action For performance +| | [Documentation] +| | ... | Additional teardown for tests which uses performance measurement. +| | ... +| | Set Test Variable | ${pkt_trace} | ${True} +| | Run Keyword If Test Failed +| | ... | Send traffic at specified rate | ${perf_trial_duration} | 10000pps +| | ... | ${frame_size} | ${traffic_profile} + +| Additional Test Tear Down Action For packet_trace +| | [Documentation] +| | ... | Additional teardown for tests which uses packet trace. +| | ... +| | Show Packet Trace on All DUTs | ${nodes} + +| Additional Test Tear Down Action For container +| | [Documentation] +| | ... | Additional teardown for tests which uses containers. +| | ... +| | :FOR | ${container_group} | IN | @{container_groups} +| | | Destroy all '${container_group}' containers + +| Additional Test Tear Down Action For vhost +| | [Documentation] +| | ... | Additional teardown for tests which uses vhost(s) and VM(s). +| | ... +| | # TODO: Remove IF condition once devicetest is running KernelVM. +| | Show VPP vhost on all DUTs | ${nodes} +| | Run Keyword If | "PERFTEST" in @{TEST TAGS} | vnf_manager.Kill All VMs +| | Run Keyword If | "DEVICETEST" in @{TEST TAGS} | vm_node.Qemu Kill + +| Additional Test Tear Down Action For nat +| | [Documentation] +| | ... | Additional teardown for tests which uses NAT feature. +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Show NAT verbose | ${nodes['${dut}']} + +| Additional Test Tear Down Action For namespace +| | [Documentation] +| | ... | Additional teardown for tests which uses namespace. +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Clean Up Namespaces | ${nodes['${dut}']} + +| Additional Test Tear Down Action For linux_bridge +| | [Documentation] +| | ... | Additional teardown for tests which uses linux_bridge. +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Linux Del Bridge | ${nodes['${dut}']} | ${bid_TAP} + +| Additional Test Tear Down Action For acl +| | [Documentation] +| | ... | Additional teardown for tests which uses ACL feature. +| | ... +| | Run Keyword If Test Failed +| | ... | Vpp Log Plugin Acl Settings | ${dut1} +| | Run Keyword If Test Failed | Run Keyword And Ignore Error +| | ... | Vpp Log Plugin Acl Interface Assignment | ${dut1} + +| Additional Test Tear Down Action For macipacl +| | [Documentation] +| | ... | Additional teardown for tests which uses MACIP ACL feature. +| | ... +| | Run Keyword If Test Failed | Run Keyword And Ignore Error +| | ... | Vpp Log Macip Acl Settings | ${dut1} +| | Run Keyword And Ignore Error +| | ... | Vpp Log Macip Acl Interface Assignment | ${dut1} + +| Additional Test Tear Down Action For srv6 +| | [Documentation] +| | ... | Additional teardown for tests which uses SRv6. +| | ... +| | Run Keyword If Test Failed +| | ... | Show SR Policies on all DUTs | ${nodes} +| | Run Keyword If Test Failed +| | ... | Show SR Steering Policies on all DUTs | ${nodes} +| | Run Keyword If Test Failed | Show SR LocalSIDs on all DUTs | ${nodes} + +| Additional Test Tear Down Action For ligato +| | [Documentation] +| | ... | Additional teardown for performance tests with Ligato. +| | ... +| | Run Keyword If Test Failed +| | ... | Get Kubernetes logs on all DUTs | ${nodes} | csit +| | Run Keyword If Test Failed +| | ... | Describe Kubernetes resource on all DUTs | ${nodes} | csit +| | Delete Kubernetes resource on all DUTs | ${nodes} | csit diff --git a/resources/libraries/robot/vm/qemu.robot b/resources/libraries/robot/vm/qemu.robot deleted file mode 100644 index 765a6cf398..0000000000 --- a/resources/libraries/robot/vm/qemu.robot +++ /dev/null @@ -1,86 +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 *** -| Library | resources.libraries.python.IPUtil - -*** Keywords *** -| Configure QEMU vhost and run it -| | [Documentation] -| | ... | Setup Qemu with 4 vhost-user interfaces and 4 namespaces. -| | ... | Each call will be different object instance. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - Node where to setup qemu. Type: dict -| | ... | - sock1 - Socket path for first Vhost-User interface. Type: string -| | ... | - sock2 - Socket path for second Vhost-User interface. Type: string -| | ... | - sock3 - Socket path for third Vhost-User interface. Type: string -| | ... | - sock4 - Socket path for forth Vhost-User interface. Type: string -| | ... | - ip1 - IP address for namespace 1. Type: string -| | ... | - ip2 - IP address for namespace 2. Type: string -| | ... | - ip3 - IP address for namespace 3. Type: string -| | ... | - ip4 - IP address for namespace 4. Type: string -| | ... | - prefix_length - IP prefix length. Type: int -| | ... | - qemu_name - Qemu instance name by which the object will be accessed. -| | ... | Type: string -| | ... | - mac_ID - MAC address ID used to differentiate qemu instances and -| | ... | namespaces assigned to them. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Setup QEMU Vhost And Run\| {nodes['DUT1']} \| /tmp/sock1 \ -| | ... | \| /tmp/sock2 \| /tmp/sock3 \| /tmp/sock4 \| 16.0.0.1 \| 16.0.0.2 \ -| | ... | \| 16.0.0.3 \| 16.0.0.4 \| 24 \| qemu_instance_1 \| 06 \| -| | ... -| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${sock3} | ${sock4} -| | ... | ${ip1} | ${ip2} | ${ip3} | ${ip4} | ${prefix_length} -| | ... | ${qemu_name}=vm_node | ${mac_ID}=${None} -| | ... -| | Import Library | resources.libraries.python.QemuUtils \ -| | ... | node=${dut_node} | WITH NAME | ${qemu_name} -| | Run keyword | ${qemu_name}.Qemu Add Vhost User If | ${sock1} -| | Run keyword | ${qemu_name}.Qemu Add Vhost User If | ${sock2} -| | Run keyword | ${qemu_name}.Qemu Add Vhost User If | ${sock3} -| | Run keyword | ${qemu_name}.Qemu Add Vhost User If | ${sock4} -| | ${vm}= | Run keyword | ${qemu_name}.Qemu Start -| | ${vhost1}= | Get Vhost User If Name By Sock | ${vm} | ${sock1} -| | ${vhost2}= | Get Vhost User If Name By Sock | ${vm} | ${sock2} -| | ${vhost3}= | Get Vhost User If Name By Sock | ${vm} | ${sock3} -| | ${vhost4}= | Get Vhost User If Name By Sock | ${vm} | ${sock4} -| | Set Interface State | ${vm} | ${vhost1} | up | if_type=name -| | Set Interface State | ${vm} | ${vhost2} | up | if_type=name -| | Set Interface State | ${vm} | ${vhost3} | up | if_type=name -| | Set Interface State | ${vm} | ${vhost4} | up | if_type=name -| | Setup Network Namespace -| | ... | ${vm} | nmspace1 | ${vhost1} | ${ip1} | ${prefix_length} -| | Setup Network Namespace -| | ... | ${vm} | nmspace2 | ${vhost2} | ${ip2} | ${prefix_length} -| | Setup Network Namespace -| | ... | ${vm} | nmspace3 | ${vhost3} | ${ip3} | ${prefix_length} -| | Setup Network Namespace -| | ... | ${vm} | nmspace4 | ${vhost4} | ${ip4} | ${prefix_length} -| | Set Test Variable | ${${qemu_name}} | ${vm} - -| Tear down QEMU -| | [Documentation] -| | ... | Stop specific qemu instance running on DUT. -| | ... -| | ... | *Arguments:* -| | ... | - qemu_name - Qemu instance by name. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Tear down QEMU \| qemu_node_1 \| -| | ... -| | [Arguments] | ${qemu_name}=vm_node -| | ... -| | Run Keyword | ${qemu_name}.Qemu Kill diff --git a/resources/tools/testbed-setup/ansible/roles/vpp_device/files/csit-initialize-vfs.sh b/resources/tools/testbed-setup/ansible/roles/vpp_device/files/csit-initialize-vfs.sh index 092f6ef9f5..06b9923128 100644 --- a/resources/tools/testbed-setup/ansible/roles/vpp_device/files/csit-initialize-vfs.sh +++ b/resources/tools/testbed-setup/ansible/roles/vpp_device/files/csit-initialize-vfs.sh @@ -67,5 +67,7 @@ for pci_addr in ${pci_whitelist[@]}; do pci_idx=$(( pci_idx + 1 )) ;; esac + rmmod i40evf + modprobe i40evf fi done -- cgit 1.2.3-korg