| | ... | \| Configure VM for vhost L2BD forwarding \| ${nodes['DUT2']} \
| | ... | \| /tmp/sock1 \| /tmp/sock2 \| qemu_instance_2 \|
| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${qemu_name}=vm_node
-| | Run Keyword Unless | "${qemu_name}" == "vm_node" | Import Library
-| | ... | resources.libraries.python.QemuUtils | WITH NAME | ${qemu_name}
+| | Import Library | resources.libraries.python.QemuUtils | node=${dut_node} |
+| | ... | WITH NAME | ${qemu_name}
| | Set Test Variable | ${${qemu_name}} | ${None}
-| | ${qemu_set_node}= | Run Keyword If | "${qemu_name}" == "vm_node"
-| | | ... | Set Variable | Qemu Set Node
-| | ... | ELSE | Replace Variables | ${qemu_name}.Qemu Set Node
-| | Run keyword | ${qemu_set_node} | ${dut_node}
-| | ${qemu_add_vhost}= | Run Keyword If | "${qemu_name}" == "vm_node"
-| | | ... | Set Variable | Qemu Add Vhost User If
-| | ... | ELSE | Replace Variables | ${qemu_name}.Qemu Add Vhost User If
-| | Run keyword | ${qemu_add_vhost} | ${sock1}
-| | Run keyword | ${qemu_add_vhost} | ${sock2}
-| | ${qemu_start}= | Run Keyword If | "${qemu_name}" == "vm_node"
-| | | ... | Set Variable | Qemu Start
-| | ... | ELSE | Replace Variables | ${qemu_name}.Qemu Start
-| | ${vm}= | Run keyword | ${qemu_start}
+| | 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}
| | Show Vpp Settings | ${nodes['DUT1']}
| | Show Vpp Settings | ${nodes['DUT2']}
| | Vpp Show Errors On All DUTs | ${nodes}
-| | Stop and clear QEMU | ${nodes['DUT1']}
+| | Tear down QEMU
| | Verify VPP PID in Teardown
| Set up TAP functional test
| | [Arguments] | ${dut1_node} | ${dut2_node}
| | ...
| | Tear down functional test
-| | Tear down QEMU | ${dut1_node} | qemu_node1
-| | Tear down QEMU | ${dut2_node} | qemu_node2
+| | Tear down QEMU | qemu_node1
+| | Tear down QEMU | qemu_node2
| Tear down functional test with container
| | [Documentation]
# limitations under the License.
*** Settings ***
| Library | resources.libraries.python.IPUtil
-| Library | resources.libraries.python.QemuUtils
*** Keywords ***
| Configure QEMU vhost and run it
| | ...
| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${sock3} | ${sock4}
| | ... | ${ip1} | ${ip2} | ${ip3} | ${ip4} | ${prefix_length}
-| | ... | ${qemu_name} | ${mac_ID}=${None}
+| | ... | ${qemu_name}=vm_node | ${mac_ID}=${None}
| | ...
| | Import Library | resources.libraries.python.QemuUtils \
| | ... | node=${dut_node} | WITH NAME | ${qemu_name}
| Tear down QEMU
| | [Documentation]
-| | ... | Stop specific qemu instance running on ${dut_node}.
+| | ... | Stop specific qemu instance running on DUT.
| | ...
| | ... | *Arguments:*
-| | ... | - dut_node - Node where to clean qemu. Type: dict
| | ... | - qemu_name - Qemu instance by name. Type: string
| | ...
| | ... | *Example:*
| | ...
-| | ... | \| Tear down QEMU \| ${node['DUT1']} \| qemu_node_1 \|
+| | ... | \| Tear down QEMU \| qemu_node_1 \|
| | ...
-| | [Arguments] | ${dut_node} | ${qemu_name}
+| | [Arguments] | ${qemu_name}=vm_node
| | ...
-| | Run Keyword | ${qemu_name}.Qemu Set Node | ${dut_node}
| | Run Keyword | ${qemu_name}.Qemu Kill
-
-| Stop and clear QEMU
-| | [Documentation]
-| | ... | Stop QEMU, clear used sockets running on ${dut}.
-| | ...
-| | ... | *Arguments:*
-| | ... | - dut_node - Node where to clean qemu. Type: dict
-| | ...
-| | ... | *Example:*
-| | ...
-| | ... | \| Tear down QEMU \| ${node['DUT1']} \|
-| | ...
-| | [Arguments] | ${dut}
-| | ...
-| | Qemu Set Node | ${dut}
-| | Qemu Kill
| Test Setup | Set up VPP device test
| ...
| Test Teardown | Run Keywords
-| ... | Stop and clear QEMU | ${dut_node}
+| ... | Tear down QEMU
| ... | AND | Tear down VPP device test
| ...
| Documentation | *IPv4 routing test cases with vhost user interface*
| Test Setup | Set up VPP device test
| ...
| Test Teardown | Run Keywords
-| ... | Stop and clear QEMU | ${dut_node}
+| ... | Tear down QEMU
| ... | AND | Tear down VPP device test
| ...
| Documentation | *IPv4 routing test cases with vhost user interface*
| Test Setup | Set up VPP device test
| ...
| Test Teardown | Run Keywords
-| ... | Stop and clear QEMU | ${dut_node}
+| ... | Tear down QEMU
| ... | AND | Tear down VPP device test
| ...
| Documentation | *L2 bridge-domain test cases with vhost user interface*
| Test Setup | Set up VPP device test
| ...
| Test Teardown | Run Keywords
-| ... | Stop and clear QEMU | ${dut_node}
+| ... | Tear down QEMU
| ... | AND | Tear down VPP device test
| ...
| Documentation | *L2 cross-connect test cases with vhost user interface*
| Library | resources.libraries.python.NodePath
| Library | resources.libraries.python.Trace
| Library | resources.libraries.python.LispUtil
-| Library | resources.libraries.python.VhostUser
-| Library | resources.libraries.python.QemuUtils
| Library | resources.libraries.python.VPPUtil
| Library | resources.libraries.python.IPsecUtil
| Resource | resources/libraries/robot/shared/traffic.robot
| Library | resources.libraries.python.IPsecUtil
| Library | resources.libraries.python.VatJsonUtil
| Library | resources.libraries.python.IPv6Setup
-| Library | resources.libraries.python.VhostUser
-| Library | resources.libraries.python.QemuUtils
| Library | resources.libraries.python.VPPUtil
| Library | String
| Resource | resources/libraries/robot/shared/traffic.robot
| Library | resources.libraries.python.IPsecUtil
| Library | resources.libraries.python.VatJsonUtil
| Library | resources.libraries.python.IPv6Setup
-| Library | resources.libraries.python.VhostUser
-| Library | resources.libraries.python.QemuUtils
| Library | resources.libraries.python.VPPUtil
| Library | String
| Resource | resources/libraries/robot/shared/traffic.robot
| Resource | resources/libraries/robot/shared/testing_path.robot
| Resource | resources/libraries/robot/ip/ip6.robot
| Resource | resources/libraries/robot/crypto/ipsec.robot
-| Resource | resources/libraries/robot/vm/qemu.robot
| Resource | resources/libraries/robot/overlay/lispgpe.robot
| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
# Import configuration and test data:
| Library | resources.libraries.python.IPsecUtil
| Library | resources.libraries.python.VatJsonUtil
| Library | resources.libraries.python.IPv6Setup
-| Library | resources.libraries.python.VhostUser
-| Library | resources.libraries.python.QemuUtils
| Library | String
| Resource | resources/libraries/robot/shared/traffic.robot
| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/shared/testing_path.robot
| Resource | resources/libraries/robot/ip/ip6.robot
| Resource | resources/libraries/robot/crypto/ipsec.robot
-| Resource | resources/libraries/robot/vm/qemu.robot
| Resource | resources/libraries/robot/overlay/lispgpe.robot
| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
# Import configuration and test data:
| Library | resources.libraries.python.IPsecUtil
| Library | resources.libraries.python.VatJsonUtil
| Library | resources.libraries.python.IPv6Setup
-| Library | resources.libraries.python.VhostUser
-| Library | resources.libraries.python.QemuUtils
| Library | String
| Resource | resources/libraries/robot/shared/traffic.robot
| Resource | resources/libraries/robot/shared/default.robot
| Resource | resources/libraries/robot/shared/testing_path.robot
| Resource | resources/libraries/robot/ip/ip6.robot
| Resource | resources/libraries/robot/crypto/ipsec.robot
-| Resource | resources/libraries/robot/vm/qemu.robot
| Resource | resources/libraries/robot/overlay/lispgpe.robot
| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot
# Import configuration and test data:
| | ... | Both have IP addresses from same network. On VM is set bridge to pass
| | ... | packet from a one vhost user interface to another one.
| | [Teardown] | Run Keywords
-| | ... | Stop and clear QEMU | ${dut_node} | AND
+| | ... | Tear down QEMU | AND
| | ... | Tear down functional test
| |
| | Given Configure path in 2-node circular topology
| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | HW_ENV | VM_ENV | VPP_VM_ENV
| Test Setup | Set up functional test
| Test Teardown | Run Keywords | Tear down functional test
-| ... | AND | Stop and clear QEMU | ${dut_node}
+| ... | AND | Tear down QEMU
| Documentation | *L2 bridge domain with VLAN tag over VM test cases*
| ...
| ... | *[Top] Network Topologies:* TG=DUT 2-node circular topology
| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | HW_ENV | VM_ENV | VPP_VM_ENV
| Test Setup | Set up functional test
| Test Teardown | Run Keywords | Tear down functional test
-| ... | AND | Stop and clear QEMU | ${dut_node}
+| ... | AND | Tear down QEMU
| Documentation | *L2 bridge-domain test cases*
| ...
| ... | *[Top] Network Topologies:* TG=DUT=VM 3-node topology with VM
| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | HW_ENV | VM_ENV | VPP_VM_ENV
| Test Setup | Set up functional test
| Test Teardown | Run Keywords | Tear down functional test
-| ... | AND | Stop and clear QEMU | ${dut_node}
+| ... | AND | Tear down QEMU
| Documentation | *L2 bridge-domain test cases*
| ...
| ... | *[Top] Network Topologies:* TG=DUT=VM 3-node topology with VM
| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO | VPP_VM_ENV
| Test Setup | Set up functional test
| Test Teardown | Run Keywords
-| ... | resources.libraries.python.QemuUtils.Qemu Kill All | ${dut_node} | AND
+| ... | qemu-1.Qemu Kill | AND
+| ... | qemu-2.Qemu Kill | AND
| ... | Tear down functional test
| Documentation | *Vhost-User Interface Traffic Tests*
| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links
*** Keywords ***
| Configure QEMU vhost and run it VM
| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${qemu_id}
-| | Import Library | resources.libraries.python.QemuUtils | qemu_id=${qemu_id}
-| | ... | WITH NAME | qemu-${qemu_id}
-| | ${q_add_vhost}= | Replace Variables | qemu-${qemu_id}.Qemu Add Vhost User If
-| | ${q_set_node}= | Replace Variables | qemu-${qemu_id}.Qemu Set Node
-| | ${q_start}= | Replace Variables | qemu-${qemu_id}.Qemu Start
-| | Run keyword | ${q_set_node} | ${dut_node}
-| | Run keyword | ${q_add_vhost} | ${sock1}
-| | Run keyword | ${q_add_vhost} | ${sock2}
-| | ${vm}= | Run keyword | ${q_start}
+| | Import Library | resources.libraries.python.QemuUtils | node=${dut_node} |
+| | ... | qemu_id=${qemu_id} | WITH NAME | qemu-${qemu_id}
+| | Run keyword | qemu-${qemu_id}.Qemu Add Vhost User If | ${sock1}
+| | Run keyword | qemu-${qemu_id}.Qemu Add Vhost User If | ${sock2}
+| | ${vm}= | Run keyword | qemu-${qemu_id}.Qemu Start
| | ${vhost1}= | Get Vhost User If Name By Sock | ${vm} | ${sock1}
| | ${vhost2}= | Get Vhost User If Name By Sock | ${vm} | ${sock2}
| | Linux Add Bridge | ${vm} | br0 | ${vhost1} | ${vhost2}
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV | VPP_VM_ENV
| Test Setup | Set up functional test
| Test Teardown | Run Keywords | Tear down functional test
-| ... | AND | Run keyword | Tear down QEMU | ${dut1_node} | ${qemu1}
-| ... | AND | Run keyword | Tear down QEMU | ${dut2_node} | ${qemu2}
+| ... | AND | Run keyword | Tear down QEMU | ${qemu1}
+| ... | AND | Run keyword | Tear down QEMU | ${qemu2}
| Documentation | *L2BD with VM combined with VXLAN test cases - IPv4*
| ...
| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV
| Test Setup | Set up functional test
| Test Teardown | Run Keywords | Tear down functional test
-| ... | AND | Run keyword | Tear down QEMU | ${dut1_node} | ${qemu1}
-| ... | AND | Run keyword | Tear down QEMU | ${dut2_node} | ${qemu2}
+| ... | AND | Run keyword | Tear down QEMU | ${qemu1}
+| ... | AND | Run keyword | Tear down QEMU | ${qemu2}
| Documentation | *L2BD with VM combined with VXLAN test cases - IPv6*
| ...
| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology
| | ... | i/fs to be switched by DUT to and from VM; verify all packets
| | ... | are received. [Ref]
| | ...
-| | [Teardown] | Run Keywords | Stop and clear QEMU | ${dut_node}
+| | [Teardown] | Run Keywords | Tear down QEMU
| | ... | AND | Tear down functional test
| | ...
| | Given Configure path in 2-node circular topology
| | ... | be switched by DUT to and from VM; verify all packets are
| | ... | received. [Ref]
| | ...
-| | [Teardown] | Run Keywords | Stop and clear QEMU | ${dut_node}
+| | [Teardown] | Run Keywords | Tear down QEMU
| | ... | AND | Tear down functional test
| | ...
| | Given Configure path in 2-node circular topology