CSIT-664: Refactor setups and teardowns
[csit.git] / tests / func / honeycomb / mgmt-cfg-pluginacl-apihc-apivat-func.robot
index ba63cf6..f7d92fc 100644 (file)
 | Library | resources.libraries.python.IPv4Util
 | Library | resources.libraries.python.IPv6Util
 | Library | resources.libraries.python.Routing
+| ...
 | Test Setup | Clear Packet Trace on All DUTs | ${nodes}
-| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| ... | AND | Read plugin-ACL configuration from VAT | ${node}
-| ... | AND | Clear plugin-acl settings | ${node} | ${dut_to_tg_if1}
-| Suite Setup | Vpp All ra suppress link layer | ${nodes}
-| Suite Teardown
-| ... | Restart Honeycomb and VPP | ${node}
+| ...
+| Suite Teardown | Restart Honeycomb and VPP | ${node}
+| ...
 | Documentation | *Honeycomb access control lists test suite for ACL plugin.*
-| Force Tags | honeycomb_sanity | honeycomb_odl
+| ...
+| Force Tags | HC_FUNC
 
 *** Test Cases ***
 | TC01: ACL MAC filtering through plugin-acl node - bridged
 | | ... | [Ver] Send simple TCP packets from one TG interface to the other,\
 | | ... | using different MACs. Receive all packets except those with\
 | | ... | MACs in the filtered ranges.
-| | [Teardown] | Run Keywords
-| | ... | Show Packet Trace on All DUTs | ${nodes} | AND
-| | ... | Clear plugin-acl Settings | ${node} | ${dut_to_tg_if1} | AND
-| | ... | Honeycomb Removes All Bridge Domains
-| | ... | ${node} | ${dut_to_tg_if1} | ${dut_to_tg_if2}
+| | ...
+| | [Teardown] | Bridged ACL test teardown
+| | ...
 | | Given Setup Interfaces And Bridge Domain For plugin-acl Test
 | | ... | macip | ${acl_name_macip}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | And Honeycomb Assigns plugin-acl Chain To Interface
 | | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_macip}
 | | ... | ingress | macip=${True}
-| | When Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip}
+| | When Send TCP or UDP packet and verify received packet | ${tg_node} | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | TCP | ${src_port} | ${dst_port}
 | | And Run Keyword And Expect Error | TCP/UDP Rx timeout
-| | ... | Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip}
+| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${classify_src}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | TCP | ${src_port} | ${dst_port}
 | | And Run Keyword And Expect Error | TCP/UDP Rx timeout
-| | ... | Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip}
+| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${classify_src2}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | TCP | ${src_port} | ${dst_port}
 | | ... | [Ver] Send simple TCP and UDP packets from one TG interface\
 | | ... | to the other, using different IPv4 IPs. Receive all packets except\
 | | ... | those with IPs in the filtered ranges and UDP protocol payload.
-| | [Teardown] | Run Keywords
-| | ... | Show Packet Trace on All DUTs | ${nodes} | AND
-| | ... | Read plugin-ACL configuration from VAT | ${node} | AND
-| | ... | Clear plugin-acl Settings | ${node} | ${dut_to_tg_if1} | AND
-| | ... | Honeycomb Removes All Bridge Domains
-| | ... | ${node} | ${dut_to_tg_if1} | ${dut_to_tg_if2}
+| | ...
+| | [Teardown] | Bridged ACL test teardown
+| | ...
 | | Given Setup Interfaces And Bridge Domain For plugin-acl Test
 | | ... | l3_ip4 | ${acl_name_l3_ip4}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | ${dut_node} | ${acl_name_l3_ip4} | ${acl_settings}
 | | And Honeycomb Assigns plugin-acl Chain To Interface
 | | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_l3_ip4} | ingress
-| | Then Send TCP Or UDP Packet | ${tg_node}
+| | Then Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | UDP | ${src_port} | ${dst_port}
-| | And Send TCP Or UDP Packet | ${tg_node}
+| | And Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${classify_src} | ${classify_dst}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | TCP | ${src_port} | ${dst_port}
 | | And Run Keyword And Expect Error | TCP/UDP Rx timeout
-| | ... | Send TCP Or UDP Packet | ${tg_node}
+| | ... | Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${classify_src} | ${classify_dst}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | [Ver] Send simple TCP and UDP packets from one TG interface\
 | | ... | to the other, using different IPv6 IPs. Receive all packets except\
 | | ... | those with IPs in the filtered ranges and UDP protocol payload.
-| | [Teardown] | Run Keywords
-| | ... | Show Packet Trace on All DUTs | ${nodes} | AND
-| | ... | Read plugin-ACL configuration from VAT | ${node} | AND
-| | ... | Clear plugin-acl Settings | ${node} | ${dut_to_tg_if1} | AND
-| | ... | Honeycomb Removes All Bridge Domains
-| | ... | ${node} | ${dut_to_tg_if1} | ${dut_to_tg_if2}
+| | ...
+| | [Teardown] | Bridged ACL test teardown
+| | ...
 | | Given Setup interfaces and bridge domain for plugin-acl test
 | | ... | l3_ip6 | ${acl_name_l3_ip6}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | ${dut_node} | ${acl_name_l3_ip6} | ${acl_settings}
 | | And Honeycomb Assigns plugin-acl Chain To Interface
 | | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_l3_ip6} | ingress
-| | Then Send TCP Or UDP Packet | ${tg_node}
+| | Then Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | UDP | ${src_port} | ${dst_port}
-| | And Send TCP Or UDP Packet | ${tg_node}
+| | And Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${classify_src} | ${classify_dst}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | TCP | ${src_port} | ${dst_port}
 | | And Run Keyword And Expect Error | TCP/UDP Rx timeout
-| | ... | Send TCP Or UDP Packet | ${tg_node}
+| | ... | Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${classify_src} | ${classify_dst}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | [Ver] Send simple TCP and UDP packets from one TG interface\
 | | ... | to the other, using different ports. Receive all packets except\
 | | ... | those with ports in the filtered ranges.
-| | [Teardown] | Run Keywords
-| | ... | Show Packet Trace on All DUTs | ${nodes} | AND
-| | ... | Read plugin-ACL configuration from VAT | ${node} | AND
-| | ... | Clear plugin-acl Settings | ${node} | ${dut_to_tg_if1} | AND
-| | ... | Honeycomb Removes All Bridge Domains
-| | ... | ${node} | ${dut_to_tg_if1} | ${dut_to_tg_if2}
+| | ...
+| | [Teardown] | Bridged ACL test teardown
+| | ...
 | | Given Setup interfaces and bridge domain for plugin-acl test
 | | ... | L4 | ${acl_name_l4}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | ${dut_node} | ${acl_name_l4} | ${acl_settings}
 | | And Honeycomb Assigns plugin-acl Chain To Interface
 | | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_l4} | ingress
-| | Then Send TCP Or UDP Packet | ${tg_node}
+| | Then Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | TCP | ${src_port} | ${dst_port}
 | | And Run Keyword And Expect Error | TCP/UDP Rx timeout
-| | ... | Send TCP Or UDP Packet | ${tg_node}
+| | ... | Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | TCP | ${classify_src} | ${classify_dst}
 | | And Run Keyword And Expect Error | TCP/UDP Rx timeout
-| | ... | Send TCP Or UDP Packet | ${tg_node}
+| | ... | Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | [Ver] Send simple TCP packets from one TG interface to the other,\
 | | ... | using IPs and ports. Receive all packets except those with\
 | | ... | both IPs and ports in the filtered ranges.
-| | [Teardown] | Run Keywords
-| | ... | Show Packet Trace on All DUTs | ${nodes} | AND
-| | ... | Read plugin-ACL configuration from VAT | ${node} | AND
-| | ... | Clear plugin-acl Settings | ${node} | ${dut_to_tg_if1} | AND
-| | ... | Honeycomb Removes All Bridge Domains
-| | ... | ${node} | ${dut_to_tg_if1} | ${dut_to_tg_if2}
+| | ...
+| | [Teardown] | Bridged ACL test teardown
+| | ...
 | | Given Setup Interfaces And Bridge Domain For plugin-acl Test
 | | ... | mixed | ${acl_name_mixed}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | ${dut_node} | ${acl_name_mixed} | ${acl_settings}
 | | And Honeycomb Assigns plugin-acl Chain To Interface
 | | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_mixed} | ingress
-| | Then Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip}
+| | Then Send TCP or UDP packet and verify received packet | ${tg_node} | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | TCP | ${src_port} | ${dst_port}
-| | Then Send TCP Or UDP Packet | ${tg_node}
+| | Then Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${classify_src_ip} | ${classify_dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | TCP | ${src_port} | ${dst_port}
 | | And Run Keyword And Expect Error | TCP/UDP Rx timeout
-| | ... | Send TCP Or UDP Packet | ${tg_node}
+| | ... | Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${classify_src_ip} | ${classify_dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | [Ver] Send ICMP packets from one TG interface\
 | | ... | to the other, using different codes and types. Receive all packets\
 | | ... | except those with types and codes in the filtered ranges.
-| | [Tags] | EXPECTED_FAILING
-# Bug VPP-624, ICMP type/code values are not matched
-| | [Teardown] | Run Keywords
-| | ... | Show Packet Trace on All DUTs | ${nodes} | AND
-| | ... | Read plugin-ACL configuration from VAT | ${node} | AND
-| | ... | Clear plugin-acl Settings | ${node} | ${dut_to_tg_if1} | AND
-| | ... | Honeycomb Removes All Bridge Domains
-| | ... | ${node} | ${dut_to_tg_if1} | ${dut_to_tg_if2}
+| | ...
+| | [Teardown] | Bridged ACL test teardown
+| | ...
 | | Given Setup interfaces and bridge domain for plugin-acl test
 | | ... | icmp | ${acl_name_icmp}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | ${dut_node} | ${acl_name_icmp} | ${acl_settings}
 | | And Honeycomb Assigns plugin-acl Chain To Interface
 | | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_icmp} | ingress
-| | Then Send ICMP packet with type and code | ${tg_node}
+| | Then Send ICMP packet with type and code and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | ${icmp_type} | ${icmp_code}
-| | Then Send ICMP packet with type and code | ${tg_node}
+| | Then Send ICMP packet with type and code and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | ${classify_type} | ${icmp_code}
 | | And Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ... | Send ICMP packet with type and code | ${tg_node}
+| | ... | Send ICMP packet with type and code and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | [Ver] Send ICMPv6 packets from one TG interface\
 | | ... | to the other, using different codes and types. Receive all packets\
 | | ... | except those with the filtered type and code.
-| | [Tags] | EXPECTED_FAILING
-# Bug VPP-624, ICMP type/code values are not matched
-| | [Teardown] | Run Keywords
-| | ... | Show Packet Trace on All DUTs | ${nodes} | AND
-| | ... | Read plugin-ACL configuration from VAT | ${node} | AND
-| | ... | Clear plugin-acl Settings | ${node} | ${dut_to_tg_if1} | AND
-| | ... | Honeycomb Removes All Bridge Domains
-| | ... | ${node} | ${dut_to_tg_if1} | ${dut_to_tg_if2}
+| | ...
+| | [Teardown] | Bridged ACL test teardown
+| | ...
 | | Given Setup interfaces and bridge domain for plugin-acl test
 | | ... | icmpv6 | ${acl_name_icmpv6}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | ${dut_node} | ${acl_name_icmpv6} | ${acl_settings}
 | | And Honeycomb Assigns plugin-acl Chain To Interface
 | | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_icmpv6} | ingress
-| | Then Send ICMP packet with type and code | ${tg_node}
+| | Then Send ICMP packet with type and code and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | ${icmp_type} | ${icmp_code}
-| | Then Send ICMP packet with type and code | ${tg_node}
+| | Then Send ICMP packet with type and code and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | ${classify_type} | ${icmp_code}
 | | And Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ... | Send ICMP packet with type and code | ${tg_node}
+| | ... | Send ICMP packet with type and code and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | to VPP interface 2 and receive it from interface 1(this should create\
 | | ... | a reflexive "permit" rule) Finally, send the original packet again\
 | | ... | and receive it from interface 2.
-| | [Tags] | EXPCETED_FAILING
-# Bug VPP-633, VPP crashes when any packet hits a reflexive rule
-| | [Teardown] | Run Keywords
-| | ... | Show Packet Trace on All DUTs | ${nodes} | AND
-| | ... | Read plugin-ACL configuration from VAT | ${node} | AND
-| | ... | Clear plugin-acl Settings | ${node} | ${dut_to_tg_if1} | AND
-| | ... | Honeycomb Removes All Bridge Domains
-| | ... | ${node} | ${dut_to_tg_if1} | ${dut_to_tg_if2}
+| | ...
+| | [Teardown] | Bridged ACL test teardown
+| | ...
 | | Given Setup Interfaces And Bridge Domain For plugin-acl Test
 | | ... | reflex | ${acl_name_reflex}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | And Honeycomb Assigns plugin-acl Chain To Interface
 | | ... | ${dut_node} | ${dut_to_tg_if1} | block_all | ingress
 | | And Run Keyword And Expect Error | TCP/UDP Rx timeout
-| | ... | Send TCP Or UDP Packet | ${tg_node}
+| | ... | Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${classify_src} | ${classify_dst}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | TCP | ${src_port} | ${dst_port}
-| | And Send TCP Or UDP Packet | ${tg_node}
+| | And Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${classify_dst} | ${classify_src}
-| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if2_mac}
-| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2_mac}
+| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if2_mac}
+| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if2_mac}
 | | ... | TCP | ${dst_port} | ${src_port}
-| | And Send TCP Or UDP Packet | ${tg_node}
+| | And Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${classify_src} | ${classify_dst}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | [Ver] Send simple TCP and UDP packets from one TG interface\
 | | ... | to the other, using different IPv4 IPs. Receive all packets except\
 | | ... | those with IPs in the filtered ranges and UDP protocol payload.
-| | [Tags] | EXPECTED_FAILING
-# routed interfaces not yet supported by ACL plugin (no Jira id available)
+| | ...
+| | [Teardown] | Routed ACL test teardown - ipv4
+| | ...
 | | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test
 | | ... | l3_ip4 | ${acl_name_l3_ip4}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | ${dut_node} | ${acl_name_l3_ip4} | ${acl_settings}
 | | And Honeycomb Assigns plugin-acl Chain To Interface
 | | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_l3_ip4} | ingress
-| | Then Send TCP Or UDP Packet | ${tg_node}
+| | Then Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | UDP | ${src_port} | ${dst_port}
-| | And Send TCP Or UDP Packet | ${tg_node}
+| | And Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${classify_src} | ${classify_dst}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | TCP | ${src_port} | ${dst_port}
 | | And Run Keyword And Expect Error | TCP/UDP Rx timeout
-| | ... | Send TCP Or UDP Packet | ${tg_node}
+| | ... | Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${classify_src} | ${classify_dst}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | [Ver] Send simple TCP and UDP packets from one TG interface\
 | | ... | to the other, using different IPv6 IPs. Receive all packets except\
 | | ... | those with IPs in the filtered ranges and UDP protocol payload.
-| | [Tags] | EXPECTED_FAILING
-# routed interfaces not yet supported by ACL plugin (no Jira id available)
-| | Given Path for 2-node testing is set
+| | ...
+| | [Teardown] | Routed ACL test teardown - ipv6
+| | ...
+| | Given Configure path in 2-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | And Import Variables | resources/test_data/honeycomb/plugin_acl.py
 | | ... | L3_IP6 | ${acl_name_l3_ip6}
-| | And Honeycomb sets interface state | ${dut_node} | ${dut_to_tg_if1} | up
-| | And Honeycomb sets interface state | ${dut_node} | ${dut_to_tg_if2} | up
-# TODO: Configure addresses through Honeycomb when implemented. (Honeycomb-102)
-| | And Set Interface Address | ${dut_node}
+| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up
+| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up
+| | And Honeycomb sets interface IPv6 address | ${dut_node}
 | | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length}
-| | And Set Interface Address | ${dut_node}
+| | And Honeycomb sets interface IPv6 address | ${dut_node}
 | | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length}
 | | And VPP RA suppress link layer | ${dut_node} | ${dut_to_tg_if2}
-# TODO: Configure route through Honeycomb when implemented.(Honeycomb-58)
-| | And Add IP Neighbor
+| | And Honeycomb adds interface IPv6 neighbor
 | | ... | ${node} | ${dut_to_tg_if2} | ${gateway} | ${tg_to_dut_if2_mac}
 | | And VPP Route Add | ${node} | ${dst_net} | ${prefix_length}
 | | ... | ${gateway} | interface=${dut_to_tg_if2} | use_sw_index=False
 | | ... | ${dut_node} | ${acl_name_l3_ip6} | ${acl_settings}
 | | And Honeycomb Assigns plugin-acl Chain To Interface
 | | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_l3_ip6} | ingress
-| | Then Send TCP Or UDP Packet | ${tg_node}
+| | Then Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | UDP | ${src_port} | ${dst_port}
-| | And Send TCP Or UDP Packet | ${tg_node}
+| | And Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${classify_src} | ${classify_dst}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | TCP | ${src_port} | ${dst_port}
 | | And Run Keyword And Expect Error | TCP/UDP Rx timeout
-| | ... | Send TCP Or UDP Packet | ${tg_node}
+| | ... | Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${classify_src} | ${classify_dst}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | [Ver] Send simple TCP and UDP packets from one TG interface\
 | | ... | to the other, using different ports. Receive all packets except\
 | | ... | those with ports in the filtered ranges.
-| | [Tags] | EXPECTED_FAILING
-# routed interfaces not yet supported by ACL plugin (no Jira id available)
+| | ...
+| | [Teardown] | Routed ACL test teardown - ipv4
+| | ...
 | | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test
 | | ... | L4 | ${acl_name_l4}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | ${dut_node} | ${acl_name_l4} | ${acl_settings}
 | | And Honeycomb Assigns plugin-acl Chain To Interface
 | | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_l4} | ingress
-| | Then Send TCP Or UDP Packet | ${tg_node}
+| | Then Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | TCP | ${src_port} | ${dst_port}
 | | And Run Keyword And Expect Error | TCP/UDP Rx timeout
-| | ... | Send TCP Or UDP Packet | ${tg_node}
+| | ... | Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | TCP | ${classify_src} | ${classify_dst}
 | | And Run Keyword And Expect Error | TCP/UDP Rx timeout
-| | ... | Send TCP Or UDP Packet | ${tg_node}
+| | ... | Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | [Ver] Send simple TCP packets from one TG interface to the other,\
 | | ... | using IPs and ports. Receive all packets except those with\
 | | ... | both IPs and ports in the filtered ranges.
-| | [Tags] | EXPECTED_FAILING
-# routed interfaces not yet supported by ACL plugin (no Jira id available)
+| | ...
+| | [Teardown] | Routed ACL test teardown - ipv4
+| | ...
 | | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test
 | | ... | mixed | ${acl_name_mixed}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | ${dut_node} | ${acl_name_mixed} | ${acl_settings}
 | | And Honeycomb Assigns plugin-acl Chain To Interface
 | | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_mixed} | ingress
-| | Then Send TCP Or UDP Packet | ${tg_node} | ${src_ip} | ${dst_ip}
+| | Then Send TCP or UDP packet and verify received packet | ${tg_node} | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | TCP | ${src_port} | ${dst_port}
-| | Then Send TCP Or UDP Packet | ${tg_node}
+| | Then Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${classify_src_ip} | ${classify_dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | TCP | ${src_port} | ${dst_port}
 | | And Run Keyword And Expect Error | TCP/UDP Rx timeout
-| | ... | Send TCP Or UDP Packet | ${tg_node}
+| | ... | Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${classify_src_ip} | ${classify_dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dst_mac}
 | | ... | [Ver] Send ICMP packets from one TG interface\
 | | ... | to the other, using different codes and types. Receive all packets\
 | | ... | except those with the filtered type and code.
-| | [Tags] | EXPECTED_FAILING
-# Bug VPP-624, ICMP type/code values are not matched
-# routed interfaces not yet supported by ACL plugin (no Jira id available)
+| | ...
+| | [Teardown] | Routed ACL test teardown - ipv4
+| | ...
 | | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test
 | | ... | icmp | ${acl_name_icmp}
 | | When Honeycomb Creates ACL Chain Through ACL plugin
 | | ... | ${dut_node} | ${acl_name_icmp} | ${acl_settings}
 | | And Honeycomb Assigns plugin-acl Chain To Interface
 | | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_icmp} | ingress
-| | Then Send ICMP packet with type and code | ${tg_node}
+| | Then Send ICMP packet with type and code and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | ${icmp_type} | ${icmp_code}
-| | Then Send ICMP packet with type and code | ${tg_node}
+| | Then Send ICMP packet with type and code and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | ${classify_type} | ${icmp_code}
-| | And Run Keyword And Expect Error | TCP/UDP Rx timeout
-| | ... | Send ICMP packet with type and code | ${tg_node}
+| | And Run Keyword And Expect Error | ICMP echo Rx timeout
+| | ... | Send ICMP packet with type and code and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | [Ver] Send ICMPv6 packets from one TG interface\
 | | ... | to the other, using different codes and types. Receive all packets\
 | | ... | except those with the filtered type and code.
-| | [Tags] | EXPECTED_FAILING
-# Bug VPP-624, ICMP type/code values are not matched
-# routed interfaces not yet supported by ACL plugin (no Jira id available)
-| | Given Path for 2-node testing is set
+| | ...
+| | [Teardown] | Routed ACL test teardown - ipv6
+| | ...
+| | Given Configure path in 2-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | And Import Variables | resources/test_data/honeycomb/plugin_acl.py
-| | ... | L3_IP6 | ${acl_name_l3_ip6}
-| | And Honeycomb sets interface state | ${dut_node} | ${dut_to_tg_if1} | up
-| | And Honeycomb sets interface state | ${dut_node} | ${dut_to_tg_if2} | up
-# TODO: Configure addresses through Honeycomb when implemented. (Honeycomb-102)
-| | And Set Interface Address | ${dut_node}
+| | ... | icmpv6 | ${acl_name_icmpv6}
+| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up
+| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up
+| | And Honeycomb sets interface IPv6 address | ${dut_node}
 | | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length}
-| | And Set Interface Address | ${dut_node}
+| | And Honeycomb sets interface IPv6 address | ${dut_node}
 | | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length}
-| | And VPP RA suppress link layer | ${dut_node} | ${dut_to_tg_if2}
-# TODO: Configure route through Honeycomb when implemented.(Honeycomb-58)
-| | And Add IP Neighbor
+| | And Honeycomb adds interface IPv6 neighbor
 | | ... | ${node} | ${dut_to_tg_if2} | ${gateway} | ${tg_to_dut_if2_mac}
+| | And VPP RA suppress link layer | ${dut_node} | ${dut_to_tg_if2}
 | | And VPP Route Add | ${node} | ${dst_net} | ${prefix_length}
 | | ... | ${gateway} | interface=${dut_to_tg_if2} | use_sw_index=False
 | | And VPP Route Add | ${node} | ${classify_dst_net} | ${prefix_length}
 | | ... | ${gateway} | interface=${dut_to_tg_if2} | use_sw_index=False
 | | When Honeycomb Creates ACL Chain Through ACL plugin
-| | ... | ${dut_node} | ${acl_name_icmp} | ${acl_settings}
+| | ... | ${dut_node} | ${acl_name_icmpv6} | ${acl_settings}
 | | And Honeycomb Assigns plugin-acl Chain To Interface
-| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_icmp} | ingress
-| | Then Send ICMP packet with type and code | ${tg_node}
+| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_icmpv6} | ingress
+| | Then Send ICMP packet with type and code and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | ${icmp_type} | ${icmp_code}
-| | Then Send ICMP packet with type and code | ${tg_node}
+| | Then Send ICMP packet with type and code and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | ${classify_type} | ${icmp_code}
-| | And Run Keyword And Expect Error | TCP/UDP Rx timeout
-| | ... | Send ICMP packet with type and code | ${tg_node}
+| | And Run Keyword And Expect Error | ICMP echo Rx timeout
+| | ... | Send ICMP packet with type and code and verify received packet | ${tg_node}
 | | ... | ${src_ip} | ${dst_ip}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | ${classify_type} | ${classify_code}
 
-| TC15: ACL reflexive IPv4 filtering through plugin-acl node - bridged
+| TC15: ACL reflexive IPv4 filtering through plugin-acl node - routed
 | | [Documentation]
 | | ... | [Top] TG=DUT1=TG.
 | | ... | [Enc] Eth-IPv4-TCP.
 | | ... | to VPP interface 2 and receive it from interface 1(this should create\
 | | ... | a reflexive "permit" rule) Finally, send the original packet again\
 | | ... | and receive it from interface 2.
-| | [Tags] | EXPECTED_FAILING
-# routed interfaces not yet supported by ACL plugin (no Jira id available)
-# Bug VPP-633, VPP crashes when any packet hits a reflexive rule
+| | ...
+| | [Teardown] | Routed ACL test teardown - ipv4
+| | ...
 | | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test
 | | ... | reflex | ${acl_name_reflex}
 | | And Add ARP on DUT
 | | And Honeycomb Assigns plugin-acl Chain To Interface
 | | ... | ${dut_node} | ${dut_to_tg_if1} | block_all | ingress
 | | And Run Keyword And Expect Error | TCP/UDP Rx timeout
-| | ... | Send TCP Or UDP Packet | ${tg_node}
+| | ... | Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${classify_src} | ${classify_dst}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 | | ... | TCP | ${src_port} | ${dst_port}
-| | And Send TCP Or UDP Packet | ${tg_node}
+| | And Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${classify_dst} | ${classify_src}
-| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if2_mac}
-| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2_mac}
+| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if2_mac}
+| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if2_mac}
 | | ... | TCP | ${dst_port} | ${src_port}
-| | And Send TCP Or UDP Packet | ${tg_node}
+| | And Send TCP or UDP packet and verify received packet | ${tg_node}
 | | ... | ${classify_src} | ${classify_dst}
 | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac}
 | | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac}
 
 *** Keywords ***
 | Setup interface IPs and routes for IPv4 plugin-acl test
+| | [Documentation] | Import test variables, set interfaces up,
+| | ... | configure IPv4 addresses, add neighbor entry and routes.
+| | ...
 | | [Arguments] | ${test_data_id} | ${acl_name}
-| | Path for 2-node testing is set
+| | ...
+| | Configure path in 2-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | Import Variables | resources/test_data/honeycomb/plugin_acl.py
 | | ... | ${test_data_id} | ${acl_name}
-| | Honeycomb sets interface state | ${dut_node} | ${dut_to_tg_if1} | up
-| | Honeycomb sets interface state | ${dut_node} | ${dut_to_tg_if2} | up
-| | Honeycomb sets interface ipv4 address with prefix | ${dut_node}
+| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up
+| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up
+| | Honeycomb sets interface IPv4 address with prefix | ${dut_node}
 | | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length}
-| | Honeycomb sets interface ipv4 address with prefix | ${dut_node}
+| | Honeycomb sets interface IPv4 address with prefix | ${dut_node}
 | | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length}
-# TODO: Configure routes through Honeycomb once routing tests are added
-| | Add ARP on DUT
+| | And Honeycomb adds interface IPv4 neighbor
 | | ... | ${node} | ${dut_to_tg_if2} | ${gateway} | ${tg_to_dut_if2_mac}
 | | VPP Route Add
 | | ... | ${node} | ${dst_net} | ${prefix_length} | ${gateway}
 | | ... | interface=${dut_to_tg_if2} | use_sw_index=False
 
 | Setup interfaces and bridge domain for plugin-acl test
+| | [Documentation] | Import test variables, set interfaces up and bridge them.
+| | ...
 | | [Arguments] | ${test_data_id} | ${acl_name}
-| | Path For 2-node Testing Is Set
+| | ...
+| | Configure path in 2-node circular topology
 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']}
 | | Import Variables | resources/test_data/honeycomb/plugin_acl.py
 | | ... | ${test_data_id} | ${acl_name}
-| | Honeycomb Sets Interface State | ${dut_node} | ${dut_to_tg_if1} | up
-| | Honeycomb Sets Interface State | ${dut_node} | ${dut_to_tg_if2} | up
+| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up
+| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up
 | | Honeycomb Creates first L2 Bridge Domain
 | | ... | ${dut_node} | ${bd_name} | ${bd_settings}
 | | Honeycomb Adds Interfaces To Bridge Domain
 | | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_to_tg_if2}
 | | ... | ${bd_name} | ${bd_if_settings}
+
+| Bridged ACL test teardown
+| | [Documentation] | Log packet trace and ACL settings,
+| | ... | then clean up bridge domains.
+| | ...
+| | Show Packet Trace on All DUTs | ${nodes}
+| | Read plugin-ACL configuration from VAT | ${node}
+| | Clear plugin-ACL configuration | ${node} | ${dut_to_tg_if1}
+| | Honeycomb Removes All Bridge Domains
+| | ... | ${node} | ${dut_to_tg_if1} | ${dut_to_tg_if2}
+
+| Routed ACL test teardown - ipv4
+| | [Documentation] | Log packet trace and ACL settings,
+| | ... | then clean up IPv4 addresses and neighbors.
+| | ...
+| | Show Packet Trace on All DUTs | ${nodes}
+| | Read plugin-ACL configuration from VAT | ${node}
+| | Clear plugin-ACL configuration | ${node} | ${dut_to_tg_if1}
+| | Honeycomb removes interface IPv4 addresses | ${node} | ${dut_to_tg_if1}
+| | Honeycomb clears all interface IPv4 neighbors | ${node} | ${dut_to_tg_if1}
+
+| Routed ACL test teardown - ipv6
+| | [Documentation] | Log packet trace and ACL settings,
+| | ... | then clean up IPv6 addresses and neighbors.
+| | ...
+| | Show Packet Trace on All DUTs | ${nodes}
+| | Clear plugin-ACL configuration | ${node} | ${dut_to_tg_if1}
+| | Read plugin-ACL configuration from VAT | ${node}
+| | Honeycomb removes interface IPv6 addresses | ${node} | ${dut_to_tg_if1}
+| | Honeycomb clears all interface IPv6 neighbors | ${node} | ${dut_to_tg_if1}