*** Settings ***
| Library | resources.libraries.python.InterfaceUtil
-| Library | resources.libraries.python.IPv6Util
-| Library | resources.libraries.python.Routing
+| Library | resources.libraries.python.IPUtil
| ...
-| Resource | resources/libraries/robot/ip/ip4.robot
| Resource | resources/libraries/robot/shared/default.robot
-| Resource | resources/libraries/robot/shared/memif.robot
+| Resource | resources/libraries/robot/ip/ip4.robot
| Resource | resources/libraries/robot/shared/testing_path.robot
| Resource | resources/libraries/robot/shared/traffic.robot
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV
| ... | FUNCTEST | IP4FWD | BASE | ETH | MEMIF | DOCKER
| ...
-| Test Setup | Set up VPP device test
-| ...
-| Test Teardown | Run Keywords
-| ... | Tear down functional test with container
-| ... | AND | Tear down VPP device test
-| ... | AND | Show Memif on all DUTs | ${nodes}
+| Suite Setup | Setup suite single link
+| Test Setup | Setup test
+| Test Teardown | Tear down test | packet_trace | container
| ...
| Documentation | *IPv4 routing test cases with memif interface*
| ...
| ... | *[Ref] Applicable standard specifications:* RFC791, RFC826, RFC792
*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so | memif_plugin.so
+| ${nic_name}= | virtual
# IP
| ${net1}= | 10.0.1.0
| ${net3}= | 10.0.3.0
| ${prefix_length}= | 24
| ${fib_table_2}= | 20
# Memif
-| ${sock_base}= | memif-DUT1_CNF1
+| ${sock_base}= | memif-DUT1_CNF
# Container
| ${container_engine}= | Docker
| ${container_chain_topology}= | chain_functional
-# TODO: Add update of VPP PIDs after container creation
*** Test Cases ***
| tc01-eth2p-ethip4-ip4base-eth-2memif-1dcr-device
| | [Documentation]
| | ... | send ICMPv4 Echo Reqest form one TG interface to another one to be \
| | ... | switched by DUT1; verify header of received packet.
| | ...
-| | Given Configure path in 2-node circular topology
+| | Given Add PCI devices to all DUTs
+| | And Apply startup configuration on all VPP DUTs
+| | And VPP Enable Traces On All Duts | ${nodes}
+| | When Configure path in 2-node circular topology
| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
-| | And Set up functional test with containers
+| | And Start containers for device test
| | And Configure interfaces in path up
-| | When Set up memif interfaces on DUT node | ${dut_node} | ${sock_base}
-| | ... | ${sock_base} | dcr_uuid=${dcr_uuid}
+| | When Set up memif interfaces on DUT node
+| | ... | ${dut_node} | ${sock_base} | ${sock_base} | dcr_uuid=${dcr_uuid}
| | ... | memif_if1=memif_if1 | memif_if2=memif_if2 | rxq=${0} | txq=${0}
| | And Add Fib Table | ${dut_node} | ${fib_table_2}
-| | And Assign Interface To Fib Table | ${dut_node}
-| | ... | ${memif_if2} | ${fib_table_2}
-| | And Assign Interface To Fib Table | ${dut_node}
-| | ... | ${dut_to_tg_if2} | ${fib_table_2}
+| | And Assign Interface To Fib Table
+| | ... | ${dut_node} | ${memif_if2} | ${fib_table_2}
+| | And Assign Interface To Fib Table
+| | ... | ${dut_node} | ${dut_to_tg_if2} | ${fib_table_2}
| | And Configure IP addresses on interfaces
| | ... | ${dut_node} | ${dut_to_tg_if1} | ${net1_ip1} | ${prefix_length}
| | ... | ${dut_node} | ${memif_if1} | ${net2_ip1} | ${prefix_length}
| | ${memif_if2_key}= | Get interface by sw index | ${nodes['DUT1']}
| | ... | ${memif_if2}
| | ${memif_if2_mac}= | Get interface MAC | ${nodes['DUT1']} | ${memif_if2_key}
-| | And Vpp Route Add | ${dut_node} | ${net3} | ${prefix_length} | ${net2_ip2}
-| | ... | ${memif_if1} | resolve_attempts=${NONE} | count=${NONE}
-| | And Vpp Route Add | ${dut_node} | ${net1} | ${prefix_length} | ${net2_ip1}
-| | ... | ${memif_if2} | resolve_attempts=${NONE} | count=${NONE}
-| | ... | vrf=${fib_table_2}
-| | Add IP Neighbor | ${dut_node} | ${memif_if1} | ${net2_ip2}
-| | ... | ${memif_if2_mac}
-| | Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${net3_ip2}
-| | ... | ${tg_to_dut_if2_mac}
+| | And Vpp Route Add
+| | ... | ${dut_node} | ${net3} | ${prefix_length}
+| | ... | gateway=${net2_ip2} | interface=${memif_if1}
+| | And Vpp Route Add
+| | ... | ${dut_node} | ${net1} | ${prefix_length}
+| | ... | gateway=${net2_ip1} | interface=${memif_if2} | vrf=${fib_table_2}
+| | VPP Add IP Neighbor
+| | ... | ${dut_node} | ${memif_if1} | ${net2_ip2} | ${memif_if2_mac}
+| | VPP Add IP Neighbor
+| | ... | ${dut_node} | ${dut_to_tg_if2} | ${net3_ip2} | ${tg_to_dut_if2_mac}
| | Then Send packet and verify headers
| | ... | ${tg_node} | ${net1_ip2} | ${net3_ip2}
| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac}