From 8c1bb6ac0c8253ee203d120c1a8f035c47293d9e Mon Sep 17 00:00:00 2001 From: selias Date: Fri, 24 Mar 2017 17:35:30 +0100 Subject: [PATCH] HC Test: address and cleanup test failures Change-Id: If3c570dbc5036915fdc68ade7a9ccc45ad21299e Signed-off-by: selias --- resources/libraries/python/InterfaceUtil.py | 4 +- resources/libraries/python/honeycomb/HcAPIKwACL.py | 79 +++++++++------------- .../python/honeycomb/HcAPIKwInterfaces.py | 13 ++++ .../robot/honeycomb/access_control_lists.robot | 2 +- resources/libraries/robot/honeycomb/lisp.robot | 7 +- resources/test_data/honeycomb/netconf/triggers.py | 8 +-- resources/test_data/honeycomb/persistence.py | 4 +- resources/test_data/honeycomb/plugin_acl.py | 1 + resources/tools/download_hc_build_pkgs.sh | 4 +- .../honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot | 5 +- .../mgmt-cfg-intip4-intip6-apihc-apivat-func.robot | 37 +++++----- .../mgmt-cfg-pluginacl-apihc-apivat-func.robot | 30 +------- .../honeycomb/mgmt-cfg-proxyarp-apihc-func.robot | 2 +- .../mgmt-cfg-routing-apihc-apivat-func.robot | 20 +++--- .../mgmt-cfg-snat44-apihc-apivat-func.robot | 7 -- 15 files changed, 97 insertions(+), 126 deletions(-) diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py index 558e99b4e7..793f908a7a 100644 --- a/resources/libraries/python/InterfaceUtil.py +++ b/resources/libraries/python/InterfaceUtil.py @@ -260,7 +260,9 @@ class InterfaceUtil(object): Note: A single interface may have multiple IP addresses assigned. :rtype: list """ - sw_if_index = InterfaceUtil.get_sw_if_index(node, interface) + + sw_if_index = Topology.convert_interface_reference( + node, interface, "sw_if_index") with VatTerminal(node) as vat: response = vat.vat_terminal_exec_cmd_from_template( diff --git a/resources/libraries/python/honeycomb/HcAPIKwACL.py b/resources/libraries/python/honeycomb/HcAPIKwACL.py index 565ed486d8..556c39644f 100644 --- a/resources/libraries/python/honeycomb/HcAPIKwACL.py +++ b/resources/libraries/python/honeycomb/HcAPIKwACL.py @@ -47,7 +47,7 @@ class ACLKeywords(object): :type node: dict :type path: str :type data: dict - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the status code in response to PUT is not 200 = OK. @@ -79,7 +79,7 @@ class ACLKeywords(object): :param table: Classify table to be added. :type node: dict :type table: dict - :return: Content of response. + :returns: Content of response. :rtype: bytearray """ @@ -93,7 +93,7 @@ class ACLKeywords(object): :param node: Honeycomb node. :type node: dict - :return: Content of response. + :returns: Content of response. :rtype: bytearray """ @@ -107,7 +107,7 @@ class ACLKeywords(object): :param table_name: Name of the classify table to be removed. :type node: dict :type table_name: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray """ @@ -120,7 +120,7 @@ class ACLKeywords(object): :param node: Honeycomb node. :type node: dict - :return: List of classify tables. + :returns: List of classify tables. :rtype: list """ @@ -131,10 +131,8 @@ class ACLKeywords(object): raise HoneycombError( "Not possible to get operational information about the " "classify tables. Status code: {0}.".format(status_code)) - try: - return resp["vpp-classifier"]["classify-table"] - except (KeyError, TypeError): - return [] + + return resp["vpp-classifier-state"]["classify-table"] @staticmethod def get_classify_table_oper_data(node, table_name): @@ -144,22 +142,16 @@ class ACLKeywords(object): :param table_name: Name of the classify table. :type node: dict :type table_name: str - :return: Operational data about the given classify table. + :returns: Operational data about the given classify table. :rtype: dict """ - path = "/classify-table/" + table_name - status_code, resp = HcUtil.\ - get_honeycomb_data(node, "oper_classify_table", path) - - if status_code != HTTPCodes.OK: - raise HoneycombError( - "Not possible to get operational information about the " - "classify tables. Status code: {0}.".format(status_code)) - try: - return resp["classify-table"][0] - except (KeyError, TypeError): - return [] + tables = ACLKeywords.get_all_classify_tables_oper_data(node) + for table in tables: + if table["name"] == table_name: + return table + raise HoneycombError("Table {0} not found in ACL table list.".format( + table_name)) @staticmethod def get_all_classify_tables_cfg_data(node): @@ -167,7 +159,7 @@ class ACLKeywords(object): :param node: Honeycomb node. :type node: dict - :return: List of classify tables. + :returns: List of classify tables. :rtype: list """ @@ -193,7 +185,7 @@ class ACLKeywords(object): :type node: dict :type table_name: str :type session: dict - :return: Content of response. + :returns: Content of response. :rtype: bytearray """ @@ -212,7 +204,7 @@ class ACLKeywords(object): :type node: dict :type table_name: str :type session_match: str - :return: Content of response. + :returns: Content of response. :rtype: bytearray """ @@ -229,15 +221,13 @@ class ACLKeywords(object): :param table_name: Name of the classify table. :type node: dict :type table_name: str - :return: List of classify sessions present in the classify table. + :returns: List of classify sessions present in the classify table. :rtype: list """ table_data = ACLKeywords.get_classify_table_oper_data(node, table_name) - try: - return table_data["classify-table"][0]["classify-session"] - except (KeyError, TypeError): - return [] + + return table_data["classify-session"] @staticmethod def get_classify_session_oper_data(node, table_name, session_match): @@ -250,23 +240,19 @@ class ACLKeywords(object): :type node: dict :type table_name: str :type session_match: str - :return: Classify session operational data. + :returns: Classify session operational data. :rtype: dict + :raises HoneycombError: If no session the specified match Id is found. """ - path = "/classify-table/" + table_name + \ - "/classify-session/" + session_match - status_code, resp = HcUtil.\ - get_honeycomb_data(node, "oper_classify_table", path) - - if status_code != HTTPCodes.OK: - raise HoneycombError( - "Not possible to get operational information about the " - "classify tables. Status code: {0}.".format(status_code)) - try: - return resp["classify-session"][0] - except (KeyError, TypeError): - return {} + sessions = ACLKeywords.get_all_classify_sessions_oper_data( + node, table_name) + for session in sessions: + if session["match"] == session_match: + return session + raise HoneycombError( + "Session with match value \"{0}\" not found" + " under ACL table {1}.".format(session_match, table_name)) @staticmethod def create_acl_plugin_classify_chain(node, list_name, data, macip=False): @@ -281,7 +267,7 @@ class ACLKeywords(object): :type data: dict :type macip: bool - :return: Content of response. + :returns: Content of response. :rtype: bytearray :raises HoneycombError: If the operation fails. """ @@ -318,8 +304,9 @@ class ACLKeywords(object): :type direction: str :type macip: bool - :return: Content of response. + :returns: Content of response. :rtype: bytearray + :raises ValueError: If the direction argument is incorrect. :raises HoneycombError: If the operation fails. """ diff --git a/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py b/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py index b4746e2118..f317d06a69 100644 --- a/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py +++ b/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py @@ -201,6 +201,16 @@ class InterfaceKeywords(object): :rtype: dict """ + try: + interface = Topology.convert_interface_reference( + node, interface, "name") + except RuntimeError: + if isinstance(interface, basestring): + # Probably name of a custom interface (TAP, VxLAN, Vhost, ...) + pass + else: + raise + intfs = InterfaceKeywords.get_all_interfaces_oper_data(node) for intf in intfs: if intf["name"] == interface: @@ -653,6 +663,9 @@ class InterfaceKeywords(object): :rtype: bytearray """ + interface = Topology.convert_interface_reference( + node, interface, "name") + path = ("interfaces", ("interface", "name", interface), "ietf-ip:ipv6", "address") address = [{"ip": ip_addr, "prefix-length": prefix_len}, ] diff --git a/resources/libraries/robot/honeycomb/access_control_lists.robot b/resources/libraries/robot/honeycomb/access_control_lists.robot index a62ea0f2e8..e35cc92952 100644 --- a/resources/libraries/robot/honeycomb/access_control_lists.robot +++ b/resources/libraries/robot/honeycomb/access_control_lists.robot @@ -225,7 +225,7 @@ | | ... | \| ACL session from Honeycomb should not exist \| ${nodes['DUT1']} \ | | ... | \| table0 \| 00:00:00:00:00:00:01:02:03:04:05:06:00:00:00:00 \| | | [Arguments] | ${node} | ${table_name} | ${session_match} -| | Run keyword and expect error | *HoneycombError: *Status code: 404. +| | Run keyword and expect error | *KeyError:* | | ... | Get classify session oper data | | ... | ${node} | ${table_name} | ${session_match} diff --git a/resources/libraries/robot/honeycomb/lisp.robot b/resources/libraries/robot/honeycomb/lisp.robot index f490769c6f..e1d69ed316 100644 --- a/resources/libraries/robot/honeycomb/lisp.robot +++ b/resources/libraries/robot/honeycomb/lisp.robot @@ -77,11 +77,8 @@ | | ... | \| Lisp should not be configured \| ${nodes['DUT1']} \| | | [Arguments] | ${node} | | ... -| | ${data}= | Get Lisp operational data | ${node} -| | Should be equal as strings | ${data['lisp-state']['enable']} | False -| | ${data}= | Set Variable | ${data['lisp-state']['lisp-feature-data']} -| | Should match | ${data['pitr-cfg']['locator-set']} | N/A -| | Variable should not exist | ${data['eid-table']['vni-table'][0]} +| | Run keyword and Expect Error | KeyError: 'lisp-feature-data' +| | ... | Get Lisp operational data | ${node} | Lisp state From Honeycomb Should Be | | [Documentation] | Retrieves Lisp state from Honeycomb operational\ diff --git a/resources/test_data/honeycomb/netconf/triggers.py b/resources/test_data/honeycomb/netconf/triggers.py index 51a6ab6967..5d47853352 100644 --- a/resources/test_data/honeycomb/netconf/triggers.py +++ b/resources/test_data/honeycomb/netconf/triggers.py @@ -285,10 +285,9 @@ a:operation="replace"> none - - - + + e86740a2-042c-4e64-a43b-cc224e0d5240 true true @@ -297,7 +296,6 @@ a:operation="replace"> false - diff --git a/resources/test_data/honeycomb/persistence.py b/resources/test_data/honeycomb/persistence.py index 216d4facef..131a3ef54f 100644 --- a/resources/test_data/honeycomb/persistence.py +++ b/resources/test_data/honeycomb/persistence.py @@ -102,7 +102,7 @@ def get_variables(interface): }, "match": { "vlan-tagged": { - "match-exact-tags": False + "match-exact-tags": True } } }, @@ -123,7 +123,7 @@ def get_variables(interface): 'tag_rewrite_pop_1_VAT': { 'sub_default': 0, 'sub_dot1ad': 0, - 'sub_exact_match': 0, + 'sub_exact_match': 1, 'sub_inner_vlan_id': 0, 'sub_inner_vlan_id_any': 1, 'sub_number_of_tags': 2, diff --git a/resources/test_data/honeycomb/plugin_acl.py b/resources/test_data/honeycomb/plugin_acl.py index d9d2ecd90f..6bd673d8b0 100644 --- a/resources/test_data/honeycomb/plugin_acl.py +++ b/resources/test_data/honeycomb/plugin_acl.py @@ -34,6 +34,7 @@ def get_variables(test_case, name): # Variables for control packet "src_ip": "16.0.0.1", "dst_ip": "16.0.1.1", + "src_net": "16.0.0.0", "dst_net": "16.0.1.0", "src_port": "1234", "dst_port": "1234", diff --git a/resources/tools/download_hc_build_pkgs.sh b/resources/tools/download_hc_build_pkgs.sh index c83badaead..9bcaefb8d0 100755 --- a/resources/tools/download_hc_build_pkgs.sh +++ b/resources/tools/download_hc_build_pkgs.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (c) 2016 Cisco and/or its affiliates. +# Copyright (c) 2017 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -22,7 +22,7 @@ OS=$2 # Download the latest VPP and VPP plugin .deb packages URL="https://nexus.fd.io/service/local/artifact/maven/content" -VER="LATEST" +VER="RELEASE" VPP_GROUP="io.fd.vpp" NSH_GROUP="io.fd.nsh_sfc" VPP_ARTIFACTS="vpp vpp-dbg vpp-dev vpp-dpdk-dev vpp-dpdk-dkms vpp-lib vpp-plugins vpp-api-java" diff --git a/tests/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot index b50a48f9a1..4dad038fde 100644 --- a/tests/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot +++ b/tests/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot @@ -20,10 +20,7 @@ | Resource | resources/libraries/robot/honeycomb/honeycomb.robot | Resource | resources/libraries/robot/honeycomb/access_control_lists.robot | Variables | resources/test_data/honeycomb/acl.py -| Suite Teardown | Run keywords -| ... | Run Keyword If Any Tests Failed -| ... | Restart Honeycomb and VPP | ${node} -| ... | AND | Clear all ACL settings | ${node} +| Suite Teardown | Restart Honeycomb and VPP | ${node} | Documentation | *Honeycomb access control lists test suite.* | Force Tags | honeycomb_sanity | honeycomb_odl diff --git a/tests/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot index fc5069fee3..1a8d4008b3 100644 --- a/tests/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot +++ b/tests/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot @@ -40,7 +40,6 @@ | Resource | resources/libraries/robot/testing_path.robot | Resource | resources/libraries/robot/ipv6.robot | Force Tags | honeycomb_sanity | honeycomb_odl -| Suite Setup | Vpp nodes ra suppress link layer | ${nodes} | Suite Teardown | | ... | Restart Honeycomb and VPP | ${node} | Documentation | *Honeycomb interface management test suite.* @@ -166,33 +165,35 @@ | | ... | [Ver] Send ICMP packets from TG to DUT, using different sets\ | | ... | of source and destination IP addresses. Receive an ICMP reply\ | | ... | for every packet sent. +| | ... +| | Given Path for 2-node testing is set +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} | | When Honeycomb sets interface ipv4 address with prefix -| | ... | ${node} | ${interface} | @{ipv4_address} +| | ... | ${dut_node} | ${dut_to_tg_if1} | @{ipv4_address} | | And Honeycomb adds interface ipv4 address -| | ... | ${node} | ${interface} | @{ipv4_address2} +| | ... | ${dut_node} | ${dut_to_tg_if1} | @{ipv4_address2} | | And Honeycomb sets interface ipv6 address -| | ... | ${node} | ${interface} | @{ipv6_address} +| | ... | ${dut_node} | ${dut_to_tg_if1} | @{ipv6_address} | | And Honeycomb adds interface ipv6 address -| | ... | ${node} | ${interface} | @{ipv6_address2} +| | ... | ${dut_node} | ${dut_to_tg_if1} | @{ipv6_address2} | | Then IPv4 address from Honeycomb should be -| | ... | ${node} | ${interface} | @{ipv4_address} +| | ... | ${dut_node} | ${dut_to_tg_if1} | @{ipv4_address} | | And IPv4 address from VAT should be -| | ... | ${node} | ${interface} | @{ipv4_address} | ${ipv4_mask} +| | ... | ${dut_node} | ${dut_to_tg_if1} | @{ipv4_address} | ${ipv4_mask} | | And IPv6 address from Honeycomb should contain -| | ... | ${node} | ${interface} | @{ipv6_address} +| | ... | ${dut_node} | ${dut_to_tg_if1} | @{ipv6_address} | | And IPv6 address from VAT should contain -| | ... | ${node} | ${interface} | @{ipv6_address} -| | When Path for 2-node testing is set -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Honeycomb sets interface state | ${dut_node} | ${interface} | up -| | And Honeycomb adds interface ipv4 neighbor | ${dut_node} | ${interface} +| | ... | ${dut_node} | ${dut_to_tg_if1} | @{ipv6_address} +| | And Honeycomb sets interface state | ${dut_node} | ${dut_to_tg_if1} | up +| | And Honeycomb adds interface ipv4 neighbor | ${dut_node} | ${dut_to_tg_if1} | | ... | @{ipv4_neighbor} -| | And Honeycomb adds interface ipv4 neighbor | ${dut_node} | ${interface} +| | And Honeycomb adds interface ipv4 neighbor | ${dut_node} | ${dut_to_tg_if1} | | ... | @{ipv4_neighbor2} -| | And Honeycomb adds interface ipv6 neighbor | ${dut_node} | ${interface} +| | And Honeycomb adds interface ipv6 neighbor | ${dut_node} | ${dut_to_tg_if1} | | ... | @{ipv6_neighbor} -| | And Honeycomb adds interface ipv6 neighbor | ${dut_node} | ${interface} +| | And Honeycomb adds interface ipv6 neighbor | ${dut_node} | ${dut_to_tg_if1} | | ... | @{ipv6_neighbor2} +| | And Vpp nodes ra suppress link layer | ${nodes} | | Then Ping and Verify IP address | ${nodes['TG']} | | ... | ${ipv4_neighbor[0]} | ${ipv4_address[0]} | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} @@ -215,6 +216,8 @@ TC11: Honeycomb fails to configure two IPv4 addresses from the same subnet | | ... | the same subnet onto a single interface. It should not be possible. | | [Teardown] | Honeycomb removes interface ipv4 addresses | ${node} | | ... | ${interface} +| | [Tags] | EXPECTED_FAILING +# VPP API does not configure the second address, but returns success. VPP-649 | | When Honeycomb sets interface ipv4 address with prefix | | ... | ${node} | ${interface} | 192.168.0.1 | ${9} | | Then Honeycomb fails to add interface ipv4 address @@ -226,7 +229,7 @@ TC12: Honeycomb fails to configure two IPv6 addresses from the same subnet | | [Documentation] | Check if Honeycomb can configure two IPv6 addresses in\ | | ... | the same subnet onto a single interface. It should not be possible. | | [Tags] | EXPECTED_FAILING -# Subnet validation on IPv6 not supported. +# VPP API does not configure the second address, but returns success. VPP-649 | | [Teardown] | Honeycomb removes interface ipv6 addresses | ${node} | | ... | ${interface} | | When Honeycomb sets interface ipv6 address diff --git a/tests/func/honeycomb/mgmt-cfg-pluginacl-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-pluginacl-apihc-apivat-func.robot index ba63cf6dd4..74480baa24 100644 --- a/tests/func/honeycomb/mgmt-cfg-pluginacl-apihc-apivat-func.robot +++ b/tests/func/honeycomb/mgmt-cfg-pluginacl-apihc-apivat-func.robot @@ -46,7 +46,6 @@ | 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} | Documentation | *Honeycomb access control lists test suite for ACL plugin.* @@ -254,8 +253,6 @@ | | ... | [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 @@ -294,8 +291,6 @@ | | ... | [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 @@ -336,8 +331,6 @@ | | ... | 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 @@ -386,8 +379,6 @@ | | ... | [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) | | 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 @@ -421,8 +412,6 @@ | | ... | [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 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} | | And Import Variables | resources/test_data/honeycomb/plugin_acl.py @@ -473,8 +462,6 @@ | | ... | [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) | | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test | | ... | L4 | ${acl_name_l4} | | When Honeycomb Creates ACL Chain Through ACL plugin @@ -509,8 +496,6 @@ | | ... | [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) | | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test | | ... | mixed | ${acl_name_mixed} | | When Honeycomb Creates ACL Chain Through ACL plugin @@ -543,9 +528,6 @@ | | ... | [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) | | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test | | ... | icmp | ${acl_name_icmp} | | When Honeycomb Creates ACL Chain Through ACL plugin @@ -562,7 +544,7 @@ | | ... | ${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 +| | And Run Keyword And Expect Error | ICMP echo Rx timeout | | ... | Send ICMP packet with type and code | ${tg_node} | | ... | ${src_ip} | ${dst_ip} | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} @@ -579,9 +561,6 @@ | | ... | [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 | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} | | And Import Variables | resources/test_data/honeycomb/plugin_acl.py @@ -615,14 +594,14 @@ | | ... | ${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 +| | And Run Keyword And Expect Error | ICMP echo Rx timeout | | ... | Send ICMP packet with type and code | ${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. @@ -634,9 +613,6 @@ | | ... | 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 | | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test | | ... | reflex | ${acl_name_reflex} | | And Add ARP on DUT diff --git a/tests/func/honeycomb/mgmt-cfg-proxyarp-apihc-func.robot b/tests/func/honeycomb/mgmt-cfg-proxyarp-apihc-func.robot index aea7f2d2c8..d850cc94ce 100644 --- a/tests/func/honeycomb/mgmt-cfg-proxyarp-apihc-func.robot +++ b/tests/func/honeycomb/mgmt-cfg-proxyarp-apihc-func.robot @@ -33,7 +33,7 @@ | Suite Teardown | ... | Run Keyword If Any Tests Failed | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| Force Tags | honeycomb_sanity +| Force Tags | honeycomb_sanity | honeycomb_odl | Documentation | *Honeycomb proxyARP management test suite.* *** Test Cases *** diff --git a/tests/func/honeycomb/mgmt-cfg-routing-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-routing-apihc-apivat-func.robot index 6651cd7fa2..93c842010b 100644 --- a/tests/func/honeycomb/mgmt-cfg-routing-apihc-apivat-func.robot +++ b/tests/func/honeycomb/mgmt-cfg-routing-apihc-apivat-func.robot @@ -21,14 +21,12 @@ | Resource | resources/libraries/robot/honeycomb/honeycomb.robot | Resource | resources/libraries/robot/honeycomb/interfaces.robot | Resource | resources/libraries/robot/honeycomb/routing.robot -| Suite Setup | Vpp nodes ra suppress link layer | ${nodes} | Test Setup | Clear Packet Trace on All DUTs | ${nodes} -| Suite Teardown | Run Keyword If Any Tests Failed -| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| Suite Teardown | Restart Honeycomb And VPP | ${node} | Test Teardown | Honeycomb routing test teardown | ... | ${node} | ${table} | Documentation | *Honeycomb routing test suite.* -| Force Tags | Honeycomb_sanity +| Force Tags | Honeycomb_sanity | honeycomb_odl *** Test Cases *** | TC01: Single hop IPv4 route @@ -169,10 +167,8 @@ | | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} | | Import Variables | resources/test_data/honeycomb/routing.py | | ... | ${nodes['DUT1']} | ipv4 | ${dut_to_tg_if2} -| | Honeycomb sets interface vrf ID -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${1} | ipv4 -| | Honeycomb sets interface vrf ID -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${1} | ipv4 +| | Setup vrf IDs | ${dut_node} | ${dut_to_tg_if1} | ${1} +| | Setup vrf IDs | ${dut_node} | ${dut_to_tg_if2} | ${1} | | 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} @@ -203,9 +199,17 @@ | | ... | ${src_ip} | ${tg_to_dut_if1_mac} | | Honeycomb adds interface ipv6 neighbor | ${dut_node} | ${dut_to_tg_if2} | | ... | ${next_hop} | ${tg_to_dut_if2_mac} +| | Vpp all ra suppress link layer | ${nodes} | Honeycomb routing test teardown | | [arguments] | ${node} | ${routing_table} | | Show Packet Trace on All DUTs | ${nodes} | | Log routing configuration from VAT | ${node} | | Honeycomb removes routing configuration | ${node} | ${routing_table} + +| Setup vrf IDs +| | [Arguments] | ${node} | ${interface} | ${vrf} +| | Honeycomb sets interface vrf ID +| | ... | ${node} | ${interface} | ${vrf} | ipv4 +| | Honeycomb sets interface vrf ID +| | ... | ${node} | ${interface} | ${vrf} | ipv6 \ No newline at end of file diff --git a/tests/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot index f15a632f29..c4e929574f 100644 --- a/tests/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot +++ b/tests/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot @@ -31,12 +31,10 @@ | | ... | ${node} | ${nat_empty} | | When Honeycomb Configures NAT Entry | ${node} | ${entry1} | | Then NAT Entries From Honeycomb Should Be | ${node} | ${entry1} -| | And NAT Entries From VAT Should Be | ${node} | ${entry1_vat} | TC02: Honeycomb removes NAT entry | | [Documentation] | Honeycomb removes a configured static NAT entry. | | Given NAT Entries From Honeycomb Should Be | ${node} | ${entry1} -| | And NAT Entries From VAT Should Be | ${node} | ${entry1_vat} | | When Honeycomb Configures NAT Entry | ${node} | ${NONE} | | Then NAT configuration from Honeycomb should be empty | | ... | ${node} | ${nat_empty} @@ -50,7 +48,6 @@ | | And Honeycomb Configures NAT Entry | ${node} | ${entry2} | ${0} | ${2} | | Then NAT Entries From Honeycomb Should Be | | ... | ${node} | ${entry1_2_oper} | ${0} -| | And NAT Entries From VAT Should Be | ${node} | ${entry1_2_vat} | TC04: Honeycomb enables NAT on interface - inbound | | [Documentation] | Honeycomb configures NAT on an interface\ @@ -63,8 +60,6 @@ | | ... | ${node} | ${interface} | inbound | | Then NAT Interface Configuration From Honeycomb Should Be | | ... | ${node} | ${interface} | inbound -| | And NAT Interface Configuration From VAT Should Be -| | ... | ${node} | ${nat_interface_vat_in} | | And NAT Interface Configuration From Honeycomb Should be empty | | ... | ${node} | ${interface} | outbound @@ -96,5 +91,3 @@ | | ... | ${node} | ${interface} | inbound | | And NAT Interface Configuration From Honeycomb Should Be | | ... | ${node} | ${interface} | outbound -| | And NAT Interface Configuration From VAT Should Be -| | ... | ${node} | ${nat_interface_vat_out} -- 2.16.6