tap package

api-crud-tap-func module

TC01: Tap Interface Modify And Delete

[Top] TG-DUT1-TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] Set two TAP interfaces. [Ver] Verify that TAP interface can be modified, deleted, and no other TAP interface is affected.


Given Path for 2-node testing is set  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['TG']}
  And Interfaces in 2-node path are up
${int1}=  And Add Tap Interface  ${dut_node}  ${tap_int1}
${int2}=  And Add Tap Interface  ${dut_node}  ${tap_int2}
  And Set Interface State  ${dut_node}  ${int1}  up
  And Set Interface State  ${dut_node}  ${int2}  up
 When Modify Tap Interface  ${dut_node}  ${int1}  ${mod_tap_name}
 Then Check Tap Present  ${dut_node}  ${mod_tap_name}
 When Delete Tap Interface  ${dut_node}  ${int1}
 Then Run Keyword And Expect Error  Tap interface :${mod_tap_name} does not exist  Check Tap Present  ${dut_node}  ${mod_tap_name}
  And Check Tap Present  ${dut_node}  ${tap_int2}
 When Delete Tap Interface  ${dut_node}  ${int2}
 Then Run Keyword And Expect Error  ValueError: No JSON object could be decoded  Check Tap Present  ${dut_node}  ${tap_int2}

eth2p-eth-l2bdbasemaclrn-eth-2tap-func module

TC01: Tap Interface Simple BD

[Top] TG-DUT1-TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 configure two L2BD with two if’s for each L2BD with MAC learning and one L2BD joining two linux-TAP interfaces created by VPP located in namespace. [Ver] Packet sent from TG is passed through all L2BD and received back on TG. Then src_ip, dst_ip and MAC are checked.


Given Path for 2-node testing is set  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['TG']}
  And Interfaces in 2-node path are up
${int1}=  And Add Tap Interface  ${dut_node}  ${tap_int1}
${int2}=  And Add Tap Interface  ${dut_node}  ${tap_int2}
  And Set Interface State  ${dut_node}  ${int1}  up
  And Set Interface State  ${dut_node}  ${int2}  up
  And Bridge domain on DUT node is created  ${dut_node}  ${bid_from_TG}  learn=${TRUE}
  And Bridge domain on DUT node is created  ${dut_node}  ${bid_to_TG}  learn=${TRUE}
  And Linux Add Bridge  ${dut_node}  ${bid_TAP}  ${tap_int1}  ${tap_int2}
  And Interface is added to bridge domain  ${dut_node}  ${int1}  ${bid_to_TG}  0
  And Interface is added to bridge domain  ${dut_node}  ${dut_to_tg_if1}  ${bid_to_TG}  0
  And Interface is added to bridge domain  ${dut_node}  ${int2}  ${bid_from_TG}  0
  And Interface is added to bridge domain  ${dut_node}  ${dut_to_tg_if2}  ${bid_from_TG}  0
 Then Send and receive ICMP Packet  ${tg_node}  ${tg_to_dut_if1}  ${tg_to_dut_if2}

eth2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func module

TC01: Tap Interface BD - Different Split Horizon

[Top] TG-DUT1-TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 configure one if into L2BD with MAC learning. Add two TAP interfaces into this L2BD and assign them different SHG. Setup two namespaces and assign two linux-TAP interfaces to it respectively. [Ver] Packet is sent from TG to both linux-TAP interfaces and reply is checked. Ping from First linux-TAP to another should pass.


Given Path for 2-node testing is set  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['TG']}
  And Interfaces in 2-node path are up
${int1}=  And Add Tap Interface  ${dut_node}  ${tap_int1}
${int2}=  And Add Tap Interface  ${dut_node}  ${tap_int2}
  And Set Interface State  ${dut_node}  ${int1}  up
  And Set Interface State  ${dut_node}  ${int2}  up
 When Create Namespace  ${dut_node}  ${namespace1}
  And Attach Interface To Namespace  ${dut_node}  ${namespace1}  ${tap_int1}
  And Create Namespace  ${dut_node}  ${namespace2}
  And Attach Interface To Namespace  ${dut_node}  ${namespace2}  ${tap_int2}
  And Set Linux Interface IP  ${dut_node}  ${tap_int1}  ${tap1_NM_ip}  ${prefix}  ${namespace1}
  And Set Linux Interface IP  ${dut_node}  ${tap_int2}  ${tap2_NM_SHG}  ${prefix}  ${namespace2}
  And Set Linux Interface MAC  ${dut_node}  ${tap_int1}  ${tap1_NM_mac}  ${namespace1}
  And Set Linux Interface MAC  ${dut_node}  ${tap_int2}  ${tap2_NM_mac}  ${namespace2}
  And Set Linux Interface ARP  ${dut_node}  ${tap_int1}  ${tg_ip_address_SHG}  ${tg_to_dut_if1_mac}  ${namespace1}
  And Set Linux Interface ARP  ${dut_node}  ${tap_int2}  ${tg_ip_address_SHG}  ${tg_to_dut_if1_mac}  ${namespace2}
  And Bridge domain on DUT node is created  ${dut_node}  ${bd_id1}  learn=${TRUE}
  And Interface is added to bridge domain  ${dut_node}  ${dut_to_tg_if1}  ${bd_id1}
  And Interface is added to bridge domain  ${dut_node}  ${int1}  ${bd_id1}  ${shg1}
  And Interface is added to bridge domain  ${dut_node}  ${int2}  ${bd_id1}  ${shg2}
 Then Node replies to ICMP echo request  ${tg_node}  ${tg_to_dut_if1}  ${tap1_NM_mac}  ${tg_to_dut_if1_mac}  ${tap1_NM_ip}  ${tg_ip_address_SHG}
  And Node replies to ICMP echo request  ${tg_node}  ${tg_to_dut_if1}  ${tap2_NM_mac}  ${tg_to_dut_if1_mac}  ${tap2_NM_SHG}  ${tg_ip_address_SHG}
  And Send Ping From Node To Dst  ${dut_node}  ${tap1_NM_ip}  namespace=${namespace2}
  And Send Ping From Node To Dst  ${dut_node}  ${tap2_NM_SHG}  namespace=${namespace1}

TC02: Tap Interface BD - Same Split Horizon

[Top] TG-DUT1-TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 configure one if into L2BD with MAC learning. Add two TAP interfaces into this L2BD and assign them same SHG. Setup two namespaces and assign two linux-TAP interfaces to it respectively. [Ver] Packet is sent from TG to both linux-TAP interfaces and reply is checked. Ping from First linux-TAP to another should fail.


Given Path for 2-node testing is set  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['TG']}
  And Interfaces in 2-node path are up
${int1}=  And Add Tap Interface  ${dut_node}  ${tap_int1}
${int2}=  And Add Tap Interface  ${dut_node}  ${tap_int2}
  And Set Interface State  ${dut_node}  ${int1}  up
  And Set Interface State  ${dut_node}  ${int2}  up
 When Create Namespace  ${dut_node}  ${namespace1}
  And Attach Interface To Namespace  ${dut_node}  ${namespace1}  ${tap_int1}
  And Create Namespace  ${dut_node}  ${namespace2}
  And Attach Interface To Namespace  ${dut_node}  ${namespace2}  ${tap_int2}
  And Set Linux Interface IP  ${dut_node}  ${tap_int1}  ${tap1_NM_ip}  ${prefix}  ${namespace1}
  And Set Linux Interface IP  ${dut_node}  ${tap_int2}  ${tap2_NM_SHG}  ${prefix}  ${namespace2}
  And Set Linux Interface MAC  ${dut_node}  ${tap_int1}  ${tap1_NM_mac}  ${namespace1}
  And Set Linux Interface MAC  ${dut_node}  ${tap_int2}  ${tap2_NM_mac}  ${namespace2}
  And Set Linux Interface ARP  ${dut_node}  ${tap_int1}  ${tg_ip_address_SHG}  ${tg_to_dut_if1_mac}  ${namespace1}
  And Set Linux Interface ARP  ${dut_node}  ${tap_int2}  ${tg_ip_address_SHG}  ${tg_to_dut_if1_mac}  ${namespace2}
  And Bridge domain on DUT node is created  ${dut_node}  ${bd_id1}  learn=${TRUE}
  And Interface is added to bridge domain  ${dut_node}  ${dut_to_tg_if1}  ${bd_id1}
  And Interface is added to bridge domain  ${dut_node}  ${int1}  ${bd_id1}  ${shg1}
  And Interface is added to bridge domain  ${dut_node}  ${int2}  ${bd_id1}  ${shg1}
 Then Node replies to ICMP echo request  ${tg_node}  ${tg_to_dut_if1}  ${tap1_NM_mac}  ${tg_to_dut_if1_mac}  ${tap1_NM_ip}  ${tg_ip_address_SHG}
  And Node replies to ICMP echo request  ${tg_node}  ${tg_to_dut_if1}  ${tap2_NM_mac}  ${tg_to_dut_if1_mac}  ${tap2_NM_SHG}  ${tg_ip_address_SHG}
  And Run Keyword And Expect Error  Ping Not Successful  Send Ping From Node To Dst  ${dut_node}  ${tap2_NM_SHG}  namespace=${namespace1}
  And Run Keyword And Expect Error  Ping Not Successful  Send Ping From Node To Dst  ${dut_node}  ${tap1_NM_ip}  namespace=${namespace2}

eth2p-ethip4-ip4base-eth-1tap-func module

TC01: Tap Interface IP Ping Without Namespace

[Top] TG-DUT1-TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 configure two interface addresses with IPv4 of which one is TAP interface ( dut_to_tg_if and TAP ). and one is linux-TAP. [Ver] Packet sent from TG gets to the destination and ICMP-reply is received on TG.


Given Path for 2-node testing is set  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['TG']}
  And Interfaces in 2-node path are up
${int1}=  And Add Tap Interface  ${dut_node}  ${tap_int1}
  And Set Interface Address  ${dut_node}  ${int1}  ${tap1_VPP_ip}  ${prefix}
  And Set Interface Address  ${dut_node}  ${dut_to_tg_if1}  ${dut_ip_address}  ${prefix}
  And Set Interface State  ${dut_node}  ${int1}  up
  And Set Linux Interface MAC  ${dut_node}  ${tap_int1}  ${tap1_NM_mac}
  And Set Linux Interface IP  ${dut_node}  ${tap_int1}  ${tap1_NM_ip}  ${prefix}
  And Add Route  ${dut_node}  ${tg_ip_address_GW}  ${prefix}  ${tap1_VPP_ip}
  And Add Arp On Dut  ${dut_node}  ${dut_to_tg_if1}  ${tg_ip_address}  ${tg_to_dut_if1_mac}
  And Add Arp On Dut  ${dut_node}  ${int1}  ${tap1_NM_ip}  ${tap1_NM_mac}
 Then Node replies to ICMP echo request  ${tg_node}  ${tg_to_dut_if1}  ${dut_to_tg_if1_mac}  ${tg_to_dut_if1_mac}  ${tap1_NM_ip}  ${tg_ip_address}

TC02: Tap Interface IP Ping With Namespace

[Top] TG-DUT1-TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 configure two interface addresses with IPv4 of which one is TAP interface ( dut_to_tg_if and TAP ). and one is linux-TAP in namespace. [Ver] Packet sent from TG gets to the destination and ICMP-reply is received on TG.


Given Path for 2-node testing is set  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['TG']}
  And Interfaces in 2-node path are up
${int1}=  And Add Tap Interface  ${dut_node}  ${tap_int1}
  And Set Interface Address  ${dut_node}  ${int1}  ${tap1_VPP_ip}  ${prefix}
  And Set Interface Address  ${dut_node}  ${dut_to_tg_if1}  ${dut_ip_address}  ${prefix}
  And Set Interface State  ${dut_node}  ${int1}  up
 When Create Namespace  ${dut_node}  ${namespace1}
  And Attach Interface To Namespace  ${dut_node}  ${namespace1}  ${tap_int1}
  And Set Linux Interface MAC  ${dut_node}  ${tap_int1}  ${tap1_NM_mac}  ${namespace1}
  And Set Linux Interface IP  ${dut_node}  ${tap_int1}  ${tap1_NM_ip}  ${prefix}  ${namespace1}
  And Add Arp On Dut  ${dut_node}  ${dut_to_tg_if1}  ${tg_ip_address}  ${tg_to_dut_if1_mac}
  And Add Arp On Dut  ${dut_node}  ${int1}  ${tap1_NM_ip}  ${tap1_NM_mac}
  And Add Route  ${dut_node}  ${tg_ip_address_GW}  ${prefix}  ${tap1_VPP_ip}  ${namespace1}
 Then Node replies to ICMP echo request  ${tg_node}  ${tg_to_dut_if1}  ${dut_to_tg_if1_mac}  ${tg_to_dut_if1_mac}  ${tap1_NM_ip}  ${tg_ip_address}