X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=tests%2Fsuites%2Fl2_xconnect%2Fl2_xconnect_untagged.robot;h=05da05308d12ba26bfd3ced8f2dbb2084b5bc4b1;hp=0dd3251acadd278e33798d5615bb1656517cd20e;hb=5aa03bac1ea4fe07f59c6b294b23fce94a0a805b;hpb=994580369f92db56c79bab13c75180c9f38b9187 diff --git a/tests/suites/l2_xconnect/l2_xconnect_untagged.robot b/tests/suites/l2_xconnect/l2_xconnect_untagged.robot index 0dd3251aca..05da05308d 100644 --- a/tests/suites/l2_xconnect/l2_xconnect_untagged.robot +++ b/tests/suites/l2_xconnect/l2_xconnect_untagged.robot @@ -12,29 +12,126 @@ # limitations under the License. *** Settings *** - | Resource | resources/libraries/robot/default.robot | Resource | resources/libraries/robot/l2_xconnect.robot -| Library | resources.libraries.python.InterfaceUtil +| Resource | resources/libraries/robot/l2_traffic.robot +| Resource | resources/libraries/robot/testing_path.robot +| Resource | resources/libraries/robot/interfaces.robot +| Resource | resources/libraries/robot/bridge_domain.robot +| Resource | resources/libraries/robot/qemu.robot +| Library | resources.libraries.python.Trace | Library | resources.libraries.python.NodePath | Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | Test Setup | Setup all DUTs before test | Suite Setup | Setup all TGs before traffic script +| Documentation | *L2 cross-connect test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology with +| ... | single links between nodes; TG=DUT1=DUT2=TG 3-node circular topology +| ... | with double parallel links and TG=DUT=VM 3-node topology with VM and +| ... | double parallel links. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of IPv4; +| ... | Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply to all links. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | cross-connect (L2XC) switching. +| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets are +| ... | sent in both directions by TG on links to DUT1 and DUT2; on receive TG +| ... | verifies packets for correctness and their IPv4 (IPv6) src-addr, +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* +*** Variables *** +| ${sock1}= | /tmp/sock1 +| ${sock2}= | /tmp/sock2 *** Test Cases *** +| TC01: DUT1 and DUT2 with L2XC switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 and \ +| | ... | DUT2 configure L2 cross-connect (L2XC), each with one interface +| | ... | to TG and one Ethernet interface towards the other DUT. [Ver] +| | ... | Make TG send ICMPv4 Echo Req in both directions between two of +| | ... | its interfaces to be switched by DUT1 and DUT2; verify all +| | ... | packets are received. [Ref] +| | Given Path for 3-node testing is set +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Interfaces in 3-node path are up +| | And L2 setup xconnect on DUT +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_dut2} +| | And L2 setup xconnect on DUT +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | When All Vpp Interfaces Ready Wait | ${nodes} +| | Then Send and receive ICMPv4 bidirectionally +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} +| | [Teardown] | Run Keyword | Show vpp trace dump on all DUTs + +| TC02: DUT1 and DUT2 with L2XC switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv6-ICMPv6. [Cfg] On DUT1 and \ +| | ... | DUT2 configure L2 cross-connect (L2XC), each with one interface +| | ... | to TG and one Ethernet interface towards the other DUT. [Ver] +| | ... | Make TG send ICMPv6 Echo Req in both directions between two of +| | ... | its interfaces to be switched by DUT1 and DUT2; verify all +| | ... | packets are received. [Ref] +| | Given Path for 3-node testing is set +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Interfaces in 3-node path are up +| | And L2 setup xconnect on DUT +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_dut2} +| | And L2 setup xconnect on DUT +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | When All Vpp Interfaces Ready Wait | ${nodes} +| | Then Send and receive ICMPv6 bidirectionally +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} +| | [Teardown] | Run Keyword | Show vpp trace dump on all DUTs + +| TC03: DUT with two L2XCs switches ICMPv4 between TG and local VM links +| | [Documentation] +| | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT configure \ +| | ... | two L2 cross-connects (L2XC), each with one untagged interface +| | ... | to TG and untagged i/f to local VM over vhost-user. [Ver] Make +| | ... | TG send ICMPv4 Echo Reqs in both directions between two of its +| | ... | i/fs to be switched by DUT to and from VM; verify all packets +| | ... | are received. [Ref] +| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO | VPP_VM_ENV +| | Given Path for 2-node testing is set +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Interfaces in 2-node path are up +| | When VPP Vhost interfaces for L2BD forwarding are setup | ${dut_node} +| | ... | ${sock1} +| | ... | ${sock2} +| | And L2 Setup Xconnect on DUT | ${dut_node} | ${dut_to_tg_if1} | ${vhost_if1} +| | And L2 Setup Xconnect on DUT | ${dut_node} | ${dut_to_tg_if2} | ${vhost_if2} +| | And VM for Vhost L2BD forwarding is setup | ${dut_node} | ${sock1} +| | ... | ${sock2} +| | Then Send and receive ICMPv4 bidirectionally | ${tg_node} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if2} +| | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes} +| | ... | AND | Stop and Clear QEMU | ${dut_node} | ${vm_node} +| | ... | AND | Show vpp trace dump on all DUTs + +| TC04: DUT with two L2XCs switches ICMPv6 between TG and local VM links +| | [Documentation] +| | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv6-ICMPv6. [Cfg] On DUT configure \ +| | ... | two L2 cross-connects (L2XC), each with one untagged i/f to TG +| | ... | and untagged i/f to local VM over vhost-user. [Ver] Make TG send +| | ... | ICMPv6 Echo Reqs in both directions between two of its i/fs to +| | ... | be switched by DUT to and from VM; verify all packets are +| | ... | received. [Ref] +| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO | VPP_VM_ENV +| | Given Path for 2-node testing is set +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Interfaces in 2-node path are up +| | When VPP Vhost interfaces for L2BD forwarding are setup | ${dut_node} +| | ... | ${sock1} +| | ... | ${sock2} +| | And L2 Setup Xconnect on DUT | ${dut_node} | ${dut_to_tg_if1} | ${vhost_if1} +| | And L2 Setup Xconnect on DUT | ${dut_node} | ${dut_to_tg_if2} | ${vhost_if2} +| | And VM for Vhost L2BD forwarding is setup | ${dut_node} | ${sock1} +| | ... | ${sock2} +| | Then Send and receive ICMPv6 bidirectionally | ${tg_node} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if2} +| | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes} +| | ... | AND | Stop and Clear QEMU | ${dut_node} | ${vm_node} +| | ... | AND | Show vpp trace dump on all DUTs -| Vpp forwards packets via L2 xconnect in circular topology -| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | Compute Path -| | ${tg_if1} | ${tg}= | Next Interface -| | ${dut1_if1} | ${dut1}= | Next Interface -| | ${dut1_if2} | ${dut1}= | Next Interface -| | ${dut2_if1} | ${dut2}= | Next Interface -| | ${dut2_if2} | ${dut2}= | Next Interface -| | ${tg_if2} | ${tg}= | Next Interface -| | L2 setup xconnect on DUT | ${dut1} | ${dut1_if1} | ${dut1_if2} -| | L2 setup xconnect on DUT | ${dut2} | ${dut2_if1} | ${dut2_if2} -| | All Vpp Interfaces Ready Wait | ${nodes} -| | Send and receive traffic | ${tg} | ${tg_if1} | ${tg_if2} -| | Send and receive traffic | ${tg} | ${tg_if2} | ${tg_if1}