diff options
author | selias <samelias@cisco.com> | 2017-06-21 18:52:10 +0200 |
---|---|---|
committer | Tibor Frank <tifrank@cisco.com> | 2017-06-26 12:39:32 +0000 |
commit | b7f0c133f672b39b49e0480f71dd0629986bcf72 (patch) | |
tree | 5a8504f5cb2c3b2bddbbf3a8289ea5ce120bc1f4 /resources | |
parent | 41bded220766aad6f805a9864ef677abe9ff9004 (diff) |
HC Test: improve functional suite setup and teardown
Restart the whole stack (VPP+Honeycomb+-ODL) in between test suites.
Add generic suite setup and suite teardown keywords for all func suites
Re-enable NSH_SFC suite, cleanup test failures
Change-Id: I71025b4ed3a7c4912dcd7b62aedef6082357990c
Signed-off-by: selias <samelias@cisco.com>
Diffstat (limited to 'resources')
18 files changed, 379 insertions, 227 deletions
diff --git a/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py b/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py index 1e0b1a5d14..6f0bdda9fe 100644 --- a/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py +++ b/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py @@ -252,7 +252,7 @@ class InterfaceKeywords(object): return InterfaceKeywords._configure_interface(node, interface, new_data) @staticmethod - def set_interface_state(node, interface, state="up"): + def honeycomb_set_interface_state(node, interface, state="up"): """Set VPP interface state. The keyword changes the administration state of interface to up or down @@ -310,7 +310,8 @@ class InterfaceKeywords(object): :rtype: bytearray """ - return InterfaceKeywords.set_interface_state(node, interface, "up") + return InterfaceKeywords.honeycomb_set_interface_state( + node, interface, "up") @staticmethod def set_interface_down(node, interface): @@ -324,7 +325,8 @@ class InterfaceKeywords(object): :rtype: bytearray """ - return InterfaceKeywords.set_interface_state(node, interface, "down") + return InterfaceKeywords.honeycomb_set_interface_state( + node, interface, "down") @staticmethod def add_bridge_domain_to_interface(node, interface, bd_name, @@ -796,7 +798,7 @@ class InterfaceKeywords(object): node, interface, path, value) @staticmethod - def create_vxlan_interface(node, interface, **kwargs): + def honeycomb_create_vxlan_interface(node, interface, **kwargs): """Create a new VxLAN interface. :param node: Honeycomb node. @@ -860,7 +862,7 @@ class InterfaceKeywords(object): return resp @staticmethod - def configure_interface_vxlan(node, interface, **kwargs): + def honeycomb_configure_interface_vxlan(node, interface, **kwargs): """Configure VxLAN on the interface. The keyword configures VxLAN parameters on the given interface. The type @@ -1052,7 +1054,8 @@ class InterfaceKeywords(object): node, interface, path, new_vhost_structure) @staticmethod - def create_sub_interface(node, super_interface, match, tags=None, **kwargs): + def honeycomb_create_sub_interface(node, super_interface, match, tags=None, + **kwargs): """Create a new sub-interface. :param node: Honeycomb node. diff --git a/resources/libraries/python/honeycomb/HoneycombSetup.py b/resources/libraries/python/honeycomb/HoneycombSetup.py index 5026cb4868..53130f405b 100644 --- a/resources/libraries/python/honeycomb/HoneycombSetup.py +++ b/resources/libraries/python/honeycomb/HoneycombSetup.py @@ -59,7 +59,7 @@ class HoneycombSetup(object): HoneycombSetup.print_environment(nodes) - logger.console("\nStarting Honeycomb service ...") + logger.console("\n(re)Starting Honeycomb service ...") cmd = "sudo service honeycomb start" @@ -107,41 +107,6 @@ class HoneycombSetup(object): format(errors)) @staticmethod - def restart_honeycomb_and_vpp_on_duts(*nodes): - """Restart the Honeycomb service on specified DUT nodes. - - Use the keyword "Check Honeycomb Startup State" to check when Honeycomb - is fully restarted. - :param nodes: List of nodes to restart Honeycomb on. - :type nodes: list - :raises HoneycombError: If Honeycomb failed to restart. - """ - logger.console("\nRestarting Honeycomb service ...") - - cmd = "sudo service honeycomb restart " - errors = [] - - for node in nodes: - if node['type'] == NodeType.DUT: - ssh = SSH() - ssh.connect(node) - (ret_code, _, _) = ssh.exec_command_sudo(cmd) - if int(ret_code) != 0: - errors.append(node['host']) - try: - DUTSetup.setup_dut(node) - except Exception as err: - logger.debug(err) - errors.append(node['host']) - continue - logger.info("Restart of Honeycomb and VPP on node {0} is " - "in progress ...".format(node['host'])) - if errors: - raise HoneycombError('Node(s) {0} failed to restart Honeycomb' - ' and/or VPP.'. - format(errors)) - - @staticmethod def check_honeycomb_startup_state(*nodes): """Check state of Honeycomb service during startup on specified nodes. @@ -362,16 +327,19 @@ class HoneycombSetup(object): "node {0}, {1}".format(node, stderr)) @staticmethod - def enable_module_features(node, *features): - """Configure Honeycomb to use VPP modules that are disabled by default. + def manage_honeycomb_features(node, feature, disable=False): + """Configure Honeycomb to use features that are disabled by default, or + disable previously enabled features. ..Note:: If the module is not enabled in VPP, Honeycomb will be unable to establish VPP connection. :param node: Honeycomb node. - :param features: Features to enable. + :param feature: Feature to enable. + :param disable: Disable the specified feature instead of enabling it. :type node: dict - :type features: string + :type feature: string + :type disable: bool :raises HoneycombError: If the configuration could not be changed. """ @@ -382,23 +350,24 @@ class HoneycombSetup(object): ssh = SSH() ssh.connect(node) - for feature in features: - if feature in disabled_features.keys(): - # uncomment by replacing the entire line - find = replace = "{0}".format(disabled_features[feature]) - - argument = '"/{0}/c\\ {1}"'.format(find, replace) - path = "{0}/modules/*module-config"\ - .format(Const.REMOTE_HC_DIR) - command = "sed -i {0} {1}".format(argument, path) - - (ret_code, _, stderr) = ssh.exec_command_sudo(command) - if ret_code != 0: - raise HoneycombError("Failed to modify configuration on " - "node {0}, {1}".format(node, stderr)) - else: - raise HoneycombError( - "Unrecognized feature {0}.".format(feature)) + if feature in disabled_features.keys(): + # uncomment by replacing the entire line + find = replace = "{0}".format(disabled_features[feature]) + if disable: + replace = "// {0}".format(find) + + argument = '"/{0}/c\\ {1}"'.format(find, replace) + path = "{0}/modules/*module-config"\ + .format(Const.REMOTE_HC_DIR) + command = "sed -i {0} {1}".format(argument, path) + + (ret_code, _, stderr) = ssh.exec_command_sudo(command) + if ret_code != 0: + raise HoneycombError("Failed to modify configuration on " + "node {0}, {1}".format(node, stderr)) + else: + raise HoneycombError( + "Unrecognized feature {0}.".format(feature)) @staticmethod def copy_java_libraries(node): @@ -438,37 +407,51 @@ class HoneycombSetup(object): "node {0}, {1}".format(node, stderr)) @staticmethod - def configure_odl_client(node, odl_name): - """Start ODL client on the specified node. + def copy_odl_client(node, odl_name, src_path, dst_path): + """Copy ODL Client from source path to destination path. - Karaf should be located in /mnt/common, and VPP and Honeycomb should - already be running, otherwise the start will fail. - :param node: Node to start ODL client on. + :param node: Honeycomb node. :param odl_name: Name of ODL client version to use. + :param src_path: Source Path where to find ODl client. + :param dst_path: Destination path. :type node: dict :type odl_name: str - :raises HoneycombError: If Honeycomb fails to start. + :type src_path: str + :type dst_path: str + :raises HoneycombError: If the operation fails. """ - logger.debug("Copying ODL Client to home dir.") - ssh = SSH() ssh.connect(node) - cmd = "cp -r /mnt/common/*karaf_{name}* ~/karaf".format(name=odl_name) + cmd = "cp -r {src}/*karaf_{odl_name}* {dst}".format( + src=src_path, odl_name=odl_name, dst=dst_path) - (ret_code, _, _) = ssh.exec_command_sudo(cmd) + ret_code, _, _ = ssh.exec_command(cmd, timeout=30) if int(ret_code) != 0: raise HoneycombError( "Failed to copy ODL client on node {0}".format(node["host"])) - logger.console("\nStarting ODL client ...") + @staticmethod + def setup_odl_client(node, path): + """Start ODL client on the specified node. - cmd = "~/*karaf*/bin/start" + Karaf should be located in the provided path, and VPP and Honeycomb + should already be running, otherwise the start will fail. + :param node: Node to start ODL client on. + :param path: Path to ODL client on node. + :type node: dict + :type path: str + :raises HoneycombError: If Honeycomb fails to start. + """ + logger.console("\nStarting ODL client ...") ssh = SSH() ssh.connect(node) - (ret_code, _, _) = ssh.exec_command_sudo(cmd) + + cmd = "{path}/*karaf*/bin/start clean".format(path=path) + ret_code, _, _ = ssh.exec_command_sudo(cmd) + if int(ret_code) != 0: raise HoneycombError('Node {0} failed to start ODL.'. format(node['host'])) @@ -477,6 +460,31 @@ class HoneycombSetup(object): "in progress ...".format(node['host'])) @staticmethod + def install_odl_features(node, path, *features): + """Install required features on a running ODL client. + + :param node: Honeycomb node. + :param path: Path to ODL client on node. + :param features: Optional, list of additional features to install. + :type node: dict + :type path: str + :type features: list + """ + + ssh = SSH() + ssh.connect(node) + + cmd = "{path}/*karaf*/bin/client -u karaf feature:install " \ + "odl-restconf-all odl-netconf-connector-all".format(path=path) + for feature in features: + cmd += " {0}".format(feature) + + ret_code, _, stderr = ssh.exec_command_sudo(cmd, timeout=120) + + if int(ret_code) != 0: + raise HoneycombError("Feature install did not succeed.") + + @staticmethod def check_odl_startup_state(node): """Check the status of ODL client startup. @@ -537,6 +545,52 @@ class HoneycombSetup(object): if status_code == HTTPCodes.OK: logger.info("ODL mount point configured successfully.") elif status_code == HTTPCodes.CONFLICT: - logger.warn("ODL mount point was already configured.") + logger.info("ODL mount point was already configured.") else: raise HoneycombError('Mount point configuration not successful') + + @staticmethod + def stop_odl_client(node, path): + """Stop ODL client service on the specified node. + + :param node: Node to start ODL client on. + :param path: Path to ODL client. + :type node: dict + :type path: str + :raises HoneycombError: If ODL client fails to stop. + """ + + ssh = SSH() + ssh.connect(node) + + cmd = "{0}/*karaf*/bin/stop".format(path) + + ssh = SSH() + ssh.connect(node) + ret_code, _, _ = ssh.exec_command_sudo(cmd) + if int(ret_code) != 0: + logger.warn("ODL Client refused to shut down.") + cmd = "pkill -f 'karaf'" + (ret_code, _, _) = ssh.exec_command_sudo(cmd) + if int(ret_code) != 0: + raise HoneycombError('Node {0} failed to stop ODL.'. + format(node['host'])) + + logger.info("ODL client service stopped.") + + @staticmethod + def stop_vpp_service(node): + """Stop VPP service on the specified node. + + :param node: VPP node. + :type node: dict + :raises RuntimeError: If VPP fails to stop. + """ + + ssh = SSH() + ssh.connect(node) + cmd = "service vpp stop" + ret_code, _, _ = ssh.exec_command_sudo(cmd) + if int(ret_code) != 0: + raise RuntimeError("Could not stop VPP service on node {0}".format( + node['host'])) diff --git a/resources/libraries/robot/honeycomb/access_control_lists.robot b/resources/libraries/robot/honeycomb/access_control_lists.robot index 1d42cf186a..3f0b3d0592 100644 --- a/resources/libraries/robot/honeycomb/access_control_lists.robot +++ b/resources/libraries/robot/honeycomb/access_control_lists.robot @@ -18,7 +18,6 @@ | Library | resources.libraries.python.InterfaceUtil | Library | resources.libraries.python.honeycomb.HcAPIKwACL.ACLKeywords | Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords -| ... | WITH NAME | InterfaceAPI | Documentation | Keywords used to manage ACLs. *** Keywords *** @@ -92,7 +91,7 @@ | | ... | \| Honeycomb enables ACL on interface \| ${nodes['DUT1']} \ | | ... | \| GigabithEthernet0/8/0 \| table0 \| | | [Arguments] | ${node} | ${interface} | ${table_name} -| | InterfaceAPI.Enable ACL on interface +| | Enable ACL on interface | | ... | ${node} | ${interface} | ${table_name} | Honeycomb disables ACL on interface @@ -107,7 +106,7 @@ | | ... | \| Honeycomb disables ACL on interface \| ${nodes['DUT1']} \ | | ... | \| GigabithEthernet0/8/0 \| | | [Arguments] | ${node} | ${interface} -| | InterfaceAPI.Disable ACL on interface | ${node} | ${interface} +| | Disable ACL on interface | ${node} | ${interface} | ACL table from Honeycomb should be | | [Documentation] | Retrieves ACL table information from Honeycomb\ @@ -268,7 +267,7 @@ | | ... | \| Interface ACL configuration from Honeycomb should be \ | | ... | \| ${nodes['DUT1']} \| GigabithEthernet0/8/0 \| table0 \| | | [Arguments] | ${node} | ${interface} | ${table_name} -| | ${data}= | InterfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${data}= | Get interface oper data | ${node} | ${interface} | | Should be equal | | ... | ${table_name} | | ... | ${data['vpp-interface-acl:acl']['ingress']['l2-acl']['classify-table']} @@ -306,7 +305,7 @@ | | ... | \| Interface ACL configuration from Honeycomb should be empty \ | | ... | \| ${nodes['DUT1']} \| GigabithEthernet0/8/0 \| | | [Arguments] | ${node} | ${interface} -| | ${data}= | InterfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${data}= | Get interface oper data | ${node} | ${interface} | | Run keyword and expect error | *KeyError: 'vpp-interface-acl:acl' | | ... | Set Variable | | ... | ${data['vpp-interface-acl:acl']['l2-acl']['classify-table']} diff --git a/resources/libraries/robot/honeycomb/bridge_domain.robot b/resources/libraries/robot/honeycomb/bridge_domain.robot index e680e82ad4..e26c18d019 100644 --- a/resources/libraries/robot/honeycomb/bridge_domain.robot +++ b/resources/libraries/robot/honeycomb/bridge_domain.robot @@ -15,9 +15,7 @@ | Library | resources.libraries.python.L2Util | Library | resources.libraries.python.honeycomb.HcAPIKwBridgeDomain.BridgeDomainKeywords | Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords -| ... | WITH NAME | InterfaceAPI | Library | resources.libraries.python.InterfaceUtil -| ... | WITH NAME | interfaceCLI *** Keywords *** | Honeycomb creates first L2 bridge domain @@ -109,9 +107,9 @@ | | ... | \| ${{split_horizon_group:2, bvi:False}} \| | | [Arguments] | ${node} | ${interface1} | ${interface2} | ${bd_name} | | ... | ${settings} -| | interfaceAPI.Add bridge domain to interface +| | Add bridge domain to interface | | ... | ${node} | ${interface1} | ${bd_name} | &{settings} -| | interfaceAPI.Add bridge domain to interface +| | Add bridge domain to interface | | ... | ${node} | ${interface2} | ${bd_name} | &{settings} | Honeycomb should show interfaces assigned to bridge domain @@ -133,9 +131,9 @@ | | ... | \| bd-04 \| ${{split_horizon_group:2, bvi:False}} \| | | [Arguments] | ${node} | ${interface1} | ${interface2} | ${bd_name} | | ... | ${settings} -| | ${if1_data}= | interfaceAPI.Get interface oper data +| | ${if1_data}= | Get interface oper data | | ... | ${node} | ${interface1} -| | ${if2_data}= | interfaceAPI.Get interface oper data +| | ${if2_data}= | Get interface oper data | | ... | ${node} | ${interface2} | | Should be equal | ${if1_data['v3po:l2']['bridge-domain']} | | ... | ${if2_data['v3po:l2']['bridge-domain']} | ${bd_name} @@ -240,7 +238,7 @@ | | ... | | [Arguments] | ${node} | ${interface} | ${bd_name} | ${settings} | | ... -| | interfaceAPI.Add bridge domain to interface +| | Add bridge domain to interface | | ... | ${node} | ${interface} | ${bd_name} | | ... | ${settings['split-horizon-group']} | | ... | ${settings['bridged-virtual-interface']} @@ -260,7 +258,7 @@ | | ... | | [Arguments] | ${node} | ${interface} | | ... -| | ${if_data}= | interfaceAPI.Get BD Oper Data From Interface +| | ${if_data}= | Get BD Oper Data From Interface | | ... | ${node} | ${interface} | | Should be empty | ${if_data} @@ -280,6 +278,6 @@ | | ... | | [Arguments] | ${node} | ${interface} | ${bd_settings} | | ... -| | ${if_data}= | interfaceAPI.Get BD Oper Data From Interface +| | ${if_data}= | Get BD Oper Data From Interface | | ... | ${node} | ${interface} -| | interfaceAPI.Compare Data Structures | ${if_data} | ${bd_settings} +| | Compare Data Structures | ${if_data} | ${bd_settings} diff --git a/resources/libraries/robot/honeycomb/honeycomb.robot b/resources/libraries/robot/honeycomb/honeycomb.robot index d14dd2d722..603fbfa72f 100644 --- a/resources/libraries/robot/honeycomb/honeycomb.robot +++ b/resources/libraries/robot/honeycomb/honeycomb.robot @@ -12,9 +12,11 @@ # limitations under the License. *** Settings *** -| Library | resources/libraries/python/honeycomb/HoneycombSetup.py -| Library | resources/libraries/python/honeycomb/HoneycombUtil.py -| Library | resources/libraries/python/honeycomb/HcPersistence.py +| Library | resources.libraries.python.honeycomb.HoneycombSetup +| Library | resources.libraries.python.honeycomb.HoneycombUtil +| Library | resources.libraries.python.honeycomb.HcPersistence +| Library | resources.libraries.python.DUTSetup +| Library | resources.libraries.python.InterfaceUtil *** Keywords *** | Configure Honeycomb service on DUTs @@ -85,7 +87,6 @@ | | ... | \| Restart Honeycomb and VPP and clear persisted configuration \ | | ... | \| ${nodes['DUT1']} \| | | [Arguments] | ${node} -| | Log | Performing clean restart of Honeycomb and VPP. | console=True | | Stop Honeycomb service on DUTs | ${node} | | Clear persisted Honeycomb configuration | ${node} | | Setup DUT | ${node} @@ -101,14 +102,14 @@ | | ... | | ... | \| Restart Honeycomb and VPP \| ${nodes['DUT1']} \| | | [Arguments] | ${node} -| | Log | Performing clean restart of Honeycomb and VPP. | console=True -| | Restart Honeycomb and VPP on DUTs | ${node} -| | Wait until keyword succeeds | 4min | 16sec -| | ... | Check honeycomb startup state | ${node} +| | Stop Honeycomb service on DUTs | ${node} +| | Setup DUT | ${node} +| | Configure Honeycomb service on DUTs | ${node} | Archive Honeycomb log file | | [Documentation] | Copy honeycomb.log file from Honeycomb node\ | | ... | to test executor. +| | ... | | ... | *Arguments:* | | ... | - node - information about a DUT node. Type: dictionary | | ... @@ -119,11 +120,126 @@ | | Archive Honeycomb log | ${node} | Configure ODL Client Service On DUT +| | [Documentation] | Configure and start ODL client, then repeatedly check if +| | ... | it is running. +| | ... +| | ... | *Arguments:* +| | ... | - node - information about a DUT node. Type: dictionary +| | ... | - odl_name - Name of ODL client version. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Configure ODL Client Service on DUT \| ${nodes['DUT1']} \ +| | ... | \| carbon-SR1 \| | | [Arguments] | ${node} | ${odl_name} -| | Configure ODL client | ${node} | ${odl_name} +| | Copy ODL Client | ${node} | ${odl_name} | /mnt/common | /tmp +| | Setup ODL Client | ${node} | /tmp +| | Wait until keyword succeeds | 2min | 30sec +| | ... | Install ODL Features | ${node} | /tmp | | Wait until keyword succeeds | 4min | 16sec | | ... | Mount Honeycomb on ODL | ${node} | | Wait until keyword succeeds | 2min | 16sec | | ... | Check ODL startup state | ${node} | | Wait until keyword succeeds | 2min | 16sec | | ... | Check honeycomb startup state | ${node} + +| Configure Honeycomb for functional testing +| | [Documentation] | Configure Honeycomb with parameters for functional +| | ... | testing, then start Honeycomb and repeatedly check startup status. +| | ... +| | ... | *Arguments:* +| | ... | - node - information about a DUT node. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Configure Honeycomb for functional testing \| ${nodes['DUT1']} \| +| | [Arguments] | ${node} +| | Configure Restconf binding address | ${node} +| | Configure Log Level | ${node} | TRACE +| | Configure Persistence | ${node} | disable +| | Configure jVPP timeout | ${node} | ${14} +| | Clear Persisted Honeycomb Configuration | ${node} +| | Configure Honeycomb service on DUTs | ${node} + +| Configure ODL Client for functional testing +| | [Documentation] | Read external variable HC_ODL. Depending on its +| | ... | value either: do nothing, or setup ODL client for testing and +| | ... | create a global variable that modifies Restconf requests to use ODL. +| | ... +| | ... | *Arguments:* +| | ... | - node - information about a DUT node. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Configure ODL Client for functional testing \| ${nodes['DUT1']} \| +| | [Arguments] | ${node} +| | ${use_odl_client}= | Get Variable Value | ${HC_ODL} +| | Run Keyword If | '${use_odl_client}' != '${NONE}' +| | ... | Run Keywords +| | ... | Set Global Variable | ${use_odl_client} | AND +| | ... | Configure ODL Client Service On DUT | ${node} | ${use_odl_client} +| | ... | ELSE | Log | Variable HC_ODL is not present. Not using ODL. +| | ... | level=INFO + +| Set Up Honeycomb Functional Test Suite +| | [Documentation] | Generic test suite setup for Honeycomb functional tests. +| | ... | Restarts VPP, then enables Honeycomb and optionally ODL, based +| | ... | on external variable. +| | ... +| | ... | *Arguments:* +| | ... | - node - information about a DUT node. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Set Up Honeycomb Functional Test Suite \| ${nodes['DUT1']} \| +| | [Arguments] | ${node} +| | Setup DUT | ${node} +| | Configure all TGs for traffic script +| | Configure Honeycomb for functional testing | ${node} +| | Configure ODL Client for functional testing | ${node} + +| Tear Down Honeycomb Functional Test Suite +| | [Documentation] | Generic test suite teardown for Honeycomb functional +| | ... | tests. Stops ODL client (if used), then stops Honeycomb and verifies +| | ... | that they are both stopped. +| | ... +| | ... | *Arguments:* +| | ... | - node - information about a DUT node. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Tear Down Honeycomb Functional Test Suite \| ${nodes['DUT1']} \| +| | [Arguments] | ${node} +| | ${use_odl_client}= | Get Variable Value | ${HC_ODL} +| | Run Keyword If | '${use_odl_client}' != '${NONE}' +| | ... | Run Keywords +| | ... | Stop ODL Client | ${node} | /tmp +| | ... | ${use_odl_client}= | Set Variable | ${NONE} +| | ... | Set Global Variable | ${use_odl_client} +| | Stop Honeycomb service on DUTs | ${node} + +| Enable Honeycomb Feature +| | [Documentation] | Enable the specified feature in Honeycomb configuration. +| | ... | Requires a restart of Honeycomb to take effect. +| | ... +| | ... | *Arguments:* +| | ... | - node - information about a DUT node. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Enable Honeycomb Feature \| ${nodes['DUT1']} \| NSH \| +| | [arguments] | ${node} | ${feature} +| | Manage Honeycomb Features | ${node} | ${feature} + +| Disable Honeycomb Feature +| | [Documentation] | Disable the specified feature in Honeycomb configuration. +| | ... | Requires a restart of Honeycomb to take effect. +| | ... +| | ... | *Arguments:* +| | ... | - node - information about a DUT node. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Disable Honeycomb Feature \| ${nodes['DUT1']} \| NSH \| +| | [arguments] | ${node} | ${feature} +| | Manage Honeycomb Features | ${node} | ${feature} | disable=${True}
\ No newline at end of file diff --git a/resources/libraries/robot/honeycomb/interfaces.robot b/resources/libraries/robot/honeycomb/interfaces.robot index 95c6ece277..461a49557e 100644 --- a/resources/libraries/robot/honeycomb/interfaces.robot +++ b/resources/libraries/robot/honeycomb/interfaces.robot @@ -13,9 +13,7 @@ *** Settings *** | Library | resources.libraries.python.InterfaceUtil -| ... | WITH NAME | interfaceCLI | Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords -| ... | WITH NAME | InterfaceAPI | Library | resources.libraries.python.IPv4Util | Library | resources.libraries.python.TrafficScriptExecutor @@ -34,7 +32,7 @@ | | ... | \| Honeycomb configures interface state \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| up \| | | [Arguments] | ${node} | ${interface} | ${state} -| | interfaceAPI.Set interface state | ${node} | ${interface} | ${state} +| | Honeycomb Set Interface State | ${node} | ${interface} | ${state} | Interface state from Honeycomb should be | | [Documentation] | Retrieves interface admin state through Honeycomb and\ @@ -50,7 +48,7 @@ | | ... | \| Interface state from Honeycomb should be \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| up \| | | [Arguments] | ${node} | ${interface} | ${state} -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | ${api_state}= | Set Variable | ${api_data['admin-status']} | | Should be equal | ${api_state} | ${state} @@ -71,7 +69,7 @@ | | ... | \| Interface state from VAT should be \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| up \| | | [Arguments] | ${node} | ${interface} | ${state} -| | ${vat_data}= | InterfaceCLI.VPP get interface data | ${node} | ${interface} +| | ${vat_data}= | VPP get interface data | ${node} | ${interface} | | ${vat_state}= | Set Variable if | | ... | ${vat_data['admin_up_down']} == 1 | up | down | | Should be equal | ${vat_state} | ${state} @@ -91,7 +89,7 @@ | | ... | \| Honeycomb sets interface IPv4 address \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| 192.168.0.2 \| 255.255.255.0 \| | | [Arguments] | ${node} | ${interface} | ${address} | ${netmask} -| | interfaceAPI.Add first ipv4 address +| | Add first ipv4 address | | ... | ${node} | ${interface} | ${address} | ${netmask} | Honeycomb sets interface IPv4 address with prefix @@ -109,7 +107,7 @@ | | ... | \| Honeycomb sets interface IPv4 address with prefix \ | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 192.168.0.2 \| 24 \| | | [Arguments] | ${node} | ${interface} | ${address} | ${prefix} -| | interfaceAPI.Add first ipv4 address +| | Add first ipv4 address | | ... | ${node} | ${interface} | ${address} | ${prefix} | Honeycomb adds interface IPv4 address @@ -127,7 +125,7 @@ | | ... | \| Honeycomb adds interface IPv4 address \ | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 192.168.0.2 \| 24 \| | | [Arguments] | ${node} | ${interface} | ${address} | ${prefix} -| | interfaceAPI.Add ipv4 address +| | Add ipv4 address | | ... | ${node} | ${interface} | ${address} | ${prefix} | Honeycomb fails to add interface IPv4 address @@ -164,7 +162,7 @@ | | ... | \| IPv4 address from Honeycomb should be \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| 192.168.0.2 \| ${24} \| | | [Arguments] | ${node} | ${interface} | ${address} | ${prefix} -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | ${settings}= | Create Dictionary | | ... | ip=${address} | prefix-length=${prefix} | | Should contain | ${api_data['ietf-ip:ipv4']['address']} | ${settings} @@ -185,7 +183,7 @@ | | ... | \| IPv4 address from VAT should be \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| 192.168.0.2 \| ${24} \| 255.255.255.0 \| | | [Arguments] | ${node} | ${interface} | ${address} | ${prefix} | ${netmask} -| | ${vpp_data}= | interfaceCLI.VPP get interface ip addresses +| | ${vpp_data}= | VPP get interface ip addresses | | ... | ${node} | ${interface} | ipv4 | | ${settings}= | Create Dictionary | | ... | ip=${address} | netmask=${netmask} | prefix_length=${prefix} @@ -219,7 +217,7 @@ | | ... | \| IPv4 address from Honeycomb should be empty\| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| | | [Arguments] | ${node} | ${interface} -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | Run keyword and expect error | *KeyError:* | | ... | Set Variable | ${api_data['ietf-ip:ipv4']['address']} @@ -237,7 +235,7 @@ | | ... | \| GigabitEthernet0/8/0 \| | | [Arguments] | ${node} | ${interface} | | Run keyword and expect error | *No JSON object could be decoded* -| | ... | InterfaceCLI.VPP get interface ip addresses +| | ... | VPP get interface ip addresses | | ... | ${node} | ${interface} | ipv4 | Honeycomb adds interface IPv4 neighbor @@ -255,7 +253,7 @@ | | ... | \| Honeycomb adds interface IPv4 neighbor \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| 192.168.0.3 \| 08:00:27:c0:5d:37 \ | | [Arguments] | ${node} | ${interface} | ${fib_address} | ${fib_mac} -| | interfaceAPI.Add ipv4 neighbor +| | Add ipv4 neighbor | | ... | ${node} | ${interface} | ${fib_address} | ${fib_mac} | IPv4 neighbor from Honeycomb should be @@ -273,7 +271,7 @@ | | ... | \| IPv4 neighbor from Honeycomb should be \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| 192.168.0.4 \| 08:00:27:60:26:ab \| | | [Arguments] | ${node} | ${interface} | ${ip_address} | ${mac_address} -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | ${settings}= | Create Dictionary | | ... | ip=${ip_address} | link-layer-address=${mac_address} | origin=static | | Should contain | ${api_data['ietf-ip:ipv4']['neighbor']} | ${settings} @@ -291,7 +289,7 @@ | | ... | \| Honeycomb clears all interface IPv4 neighbors \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| | | [Arguments] | ${node} | ${interface} -| | interfaceAPI.Remove all ipv4 neighbors | ${node} | ${interface} +| | Remove all ipv4 neighbors | ${node} | ${interface} | IPv4 neighbor from Honeycomb should be empty | | [Documentation] | Retrieves ipv4 neighbor list through Honeycomb\ @@ -306,7 +304,7 @@ | | ... | \| IPv4 neighbor from Honeycomb should be empty \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| | | [Arguments] | ${node} | ${interface} -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | Run keyword and expect error | *KeyError:* | | ... | Set Variable | ${api_data['ietf-ip:ipv4']['neighbor'][0]['ip']} @@ -326,7 +324,7 @@ | | ... | \| Honeycomb sets interface IPv6 address \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| 10::10 \| 64 \| | | [Arguments] | ${node} | ${interface} | ${address} | ${prefix} -| | interfaceAPI.Add first ipv6 address +| | Add first ipv6 address | | ... | ${node} | ${interface} | ${address} | ${prefix} | Honeycomb adds interface IPv6 address @@ -344,7 +342,7 @@ | | ... | \| Honeycomb adds interface IPv6 address \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| 10::10 \| 64 \| | | [Arguments] | ${node} | ${interface} | ${address} | ${prefix} -| | interfaceAPI.Add ipv6 address +| | Add ipv6 address | | ... | ${node} | ${interface} | ${address} | ${prefix} | Honeycomb fails to add interface IPv6 address @@ -381,7 +379,7 @@ | | ... | \| IPv6 address from Honeycomb should contain \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| 10::10 \| 64 \| | | [Arguments] | ${node} | ${interface} | ${address} | ${prefix} -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | ${settings}= | Create Dictionary | | ... | ip=${address} | prefix-length=${prefix} | | Should contain | ${api_data['ietf-ip:ipv6']['address']} | ${settings} @@ -401,7 +399,7 @@ | | ... | \| IPv6 address from VAT should contain \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| 10::10 \| 64 \| | | [Arguments] | ${node} | ${interface} | ${address} | ${prefix} -| | ${vpp_data}= | interfaceCLI.VPP get interface ip addresses +| | ${vpp_data}= | VPP get interface ip addresses | | ... | ${node} | ${interface} | ipv6 | | ${settings}= | Create Dictionary | | ... | ip=${address} | prefix_length=${prefix} @@ -435,7 +433,7 @@ | | ... | \| IPv6 address from Honeycomb should be empty\| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| | | [Arguments] | ${node} | ${interface} -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | Run keyword and expect error | *KeyError:* | | ... | Set Variable | ${api_data['ietf-ip:ipv6']['address']} @@ -453,7 +451,7 @@ | | ... | \| GigabitEthernet0/8/0 \| | | [Arguments] | ${node} | ${interface} | | Run keyword and expect error | *No JSON object could be decoded* -| | ... | InterfaceCLI.VPP get interface ip addresses +| | ... | VPP get interface ip addresses | | ... | ${node} | ${interface} | ipv6 | Honeycomb adds interface IPv6 neighbor @@ -471,7 +469,7 @@ | | ... | \| Honeycomb adds interface IPv6 neighbor \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| 192.168.0.3 \| 08:00:27:c0:5d:37 \| | | [Arguments] | ${node} | ${interface} | ${fib_address} | ${fib_mac} -| | InterfaceAPI.Add ipv6 neighbor +| | Add ipv6 neighbor | | ... | ${node} | ${interface} | ${fib_address} | ${fib_mac} | IPv6 neighbor from Honeycomb should be @@ -489,7 +487,7 @@ | | ... | \| IPv6 neighbor from Honeycomb should be \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| 192.168.0.4 \| 08:00:27:60:26:ab \| | | [Arguments] | ${node} | ${interface} | ${ip_address} | ${mac_address} -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | ${settings}= | Create Dictionary | | ... | ip=${ip_address} | link-layer-address=${mac_address} | origin=static | | Should contain | ${api_data['ietf-ip:ipv6']['neighbor']} | ${settings} @@ -507,7 +505,7 @@ | | ... | \| Honeycomb clears all interface IPv6 neighbors \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| | | [Arguments] | ${node} | ${interface} -| | interfaceAPI.Remove all ipv6 neighbors | ${node} | ${interface} +| | Remove all ipv6 neighbors | ${node} | ${interface} | IPv6 neighbor from Honeycomb should be empty | | [Documentation] | Retrieves ipv6 neighbor list through Honeycomb\ @@ -522,7 +520,7 @@ | | ... | \| IPv6 neighbor from Honeycomb should be empty \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| | | [Arguments] | ${node} | ${interface} -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | Run keyword and expect error | *KeyError:* | | ... | Set Variable | ${api_data['ietf-ip:ipv6']['neighbor'][0]['ip']} @@ -541,7 +539,7 @@ | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| ${{'mtu': 1500}} \ | | [Arguments] | ${node} | ${interface} | ${ethernet} | | :FOR | ${key} | IN | @{ethernet.keys()} -| | | interfaceAPI.Configure interface ethernet +| | | Configure interface ethernet | | | ... | ${node} | ${interface} | ${key} | ${ethernet['${key}']} | Interface ethernet Operational Data From Honeycomb Should Be @@ -559,7 +557,7 @@ | | ... | should be \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \ | | ... | \| ${{'mtu': 1500}} \| | | [Arguments] | ${node} | ${interface} | ${ethernet} -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | :FOR | ${key} | IN | @{ethernet.keys()} | | | Should be equal | | | ... | ${api_data['v3po:ethernet']['${key}']} | ${ethernet['${key}']} @@ -578,7 +576,7 @@ | | ... | \| Interface ethernet Operational Data From VAT Should Be \ | | ... | should be \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| ${1500} \| | | [Arguments] | ${node} | ${interface} | ${mtu} -| | ${vat_data}= | InterfaceCLI.VPP get interface data | ${node} | ${interface} +| | ${vat_data}= | VPP get interface data | ${node} | ${interface} | | Should be equal | ${vat_data['mtu']} | ${mtu} | Honeycomb sets interface VRF ID @@ -595,7 +593,7 @@ | | ... | \| Honeycomb sets interface VRF ID \ | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| ${1} \| ipv4 \| | | [Arguments] | ${node} | ${interface} | ${vrf_id} | ${ip_version} -| | interfaceAPI.Configure interface routing +| | Configure interface routing | | ... | ${node} | ${interface} | ${ip_version}-vrf-id | ${vrf_id} | Interface VRF ID from Honeycomb should be @@ -614,7 +612,7 @@ | | ... | should be \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| ${1} \ | | ... | \| ipv4 \| | | [Arguments] | ${node} | ${interface} | ${vrf_id} | ${ip_version} -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} | +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | | Should be equal | | ... | ${api_data['v3po:routing']['${ip_version}-vrf-id']} | ${vrf_id} @@ -632,7 +630,7 @@ | | ... | \| Interface VRF ID from VAT should be \ | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| ${1} \| | | [Arguments] | ${node} | ${interface} | ${vrf_id} -| | ${vat_data}= | InterfaceCLI.get interface vrf table +| | ${vat_data}= | get interface vrf table | | ... | ${node} | ${interface} | | Should be equal | ${vat_data} | ${vrf_id} @@ -650,7 +648,7 @@ | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| | | ... | | [Arguments] | ${node} | ${interface} -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | Should be empty | ${api_data} | Interface Operational Data From VAT Should Be empty @@ -667,7 +665,7 @@ | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| | | ... | | [Arguments] | ${node} | ${interface} | -| | ${vat_data}= | InterfaceCLI.VPP get interface data | ${node} | ${interface} +| | ${vat_data}= | VPP get interface data | ${node} | ${interface} | | Should be empty | ${vat_data} | Interface indices from Honeycomb and VAT should correspond @@ -686,8 +684,8 @@ | | ... | | [Arguments] | ${node} | ${interface} | | ... -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} -| | ${vat_data}= | InterfaceCLI.VPP get interface data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} +| | ${vat_data}= | VPP get interface data | ${node} | ${interface} | | ${sw_if_index}= | EVALUATE | ${vat_data['sw_if_index']} + 1 | | Should be equal as strings | | ... | ${api_data['if-index']} | ${sw_if_index} @@ -704,7 +702,7 @@ | | ... | | ... | \| Get interface index from oper data \| ${nodes['DUT1']} \| local0 \| | | [Arguments] | ${node} | ${interface} -| | ${data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${data}= | Get interface oper data | ${node} | ${interface} | | Return from keyword | ${data['if-index']} | Honeycomb should show disabled interface in oper data @@ -720,7 +718,7 @@ | | ... | \| Honeycomb should show disabled interface in oper data \ | | ... | \| ${nodes['DUT1']} \| ${vx_interface} \| | | [Arguments] | ${node} | ${index} -| | interfaceAPI.check disabled interface | ${node} | ${index} +| | check disabled interface | ${node} | ${index} | Honeycomb should not show disabled interface in oper data | | [Documentation] | Retrieves list of disabled interfaces\ diff --git a/resources/libraries/robot/honeycomb/l2_fib.robot b/resources/libraries/robot/honeycomb/l2_fib.robot index e63f299d11..f90cbffb20 100644 --- a/resources/libraries/robot/honeycomb/l2_fib.robot +++ b/resources/libraries/robot/honeycomb/l2_fib.robot @@ -15,7 +15,6 @@ | Library | resources.libraries.python.L2Util | Library | resources.libraries.python.honeycomb.HcAPIKwBridgeDomain.BridgeDomainKeywords | Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords -| ... | WITH NAME | InterfaceAPI *** Keywords *** | Honeycomb adds L2 FIB entry to bridge domain @@ -70,7 +69,7 @@ | | ... | | ${l2_fib_data}= | Get L2 FIB Entry | ${node} | ${bd_name} | | ... | ${l2_fib_ref_data['phys-address']} -| | interfaceAPI.Compare Data Structures | ${l2_fib_data} | ${l2_fib_ref_data} +| | Compare Data Structures | ${l2_fib_data} | ${l2_fib_ref_data} | Honeycomb removes L2 FIB entry | | [Documentation] | Remove the specified L2 FIB entry from the bridge \ @@ -167,7 +166,7 @@ | | ... | | ${l2_fib_data}= | Get L2 FIB entry VAT | ${node} | ${bd_index} | | ... | ${l2_fib_ref_data['mac']} -| | interfaceAPI.Compare Data Structures | ${l2_fib_data} | ${l2_fib_ref_data} +| | Compare Data Structures | ${l2_fib_data} | ${l2_fib_ref_data} | L2 FIB Table from VAT should be empty | | [Documentation] | Check if the L2 FIB table in the specified bridge domain \ diff --git a/resources/libraries/robot/honeycomb/nsh.robot b/resources/libraries/robot/honeycomb/nsh.robot index fbb5b89567..dfb0c989f6 100644 --- a/resources/libraries/robot/honeycomb/nsh.robot +++ b/resources/libraries/robot/honeycomb/nsh.robot @@ -15,7 +15,6 @@ | Library | resources.libraries.python.InterfaceUtil | Library | resources.libraries.python.honeycomb.HcAPIKwNSH.NSHKeywords | Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords -| ... | WITH NAME | InterfaceAPI | Documentation | Keywords used to test Honeycomb NSH node. *** Keywords *** diff --git a/resources/libraries/robot/honeycomb/persistence.robot b/resources/libraries/robot/honeycomb/persistence.robot index 6fe439a759..17bacd17b1 100644 --- a/resources/libraries/robot/honeycomb/persistence.robot +++ b/resources/libraries/robot/honeycomb/persistence.robot @@ -13,8 +13,7 @@ *** Settings *** | Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords -| ... | WITH NAME | InterfaceAPI -| Library | resources/libraries/python/honeycomb/HcPersistence.py +| Library | resources.libraries.python.honeycomb.HcPersistence | Resource | resources/libraries/robot/honeycomb/honeycomb.robot | Resource | resources/libraries/robot/honeycomb/interfaces.robot | Resource | resources/libraries/robot/honeycomb/vxlan.robot @@ -163,8 +162,8 @@ | | ... | ${node} | ${interface} | ${sub_if_id} | ${tag_rewrite_pop_1_oper} | | Rewrite tag from VAT should be | | ... | ${node} | ${sub_if_name} | ${tag_rewrite_pop_1_VAT} -| | ${data_conf}= | InterfaceAPI.Get all interfaces cfg data | ${node} -| | ${data_oper}= | InterfaceAPI.Get all interfaces oper data | ${node} +| | ${data_conf}= | Get all interfaces cfg data | ${node} +| | ${data_oper}= | Get all interfaces oper data | ${node} | | Compare interface lists | ${data_conf} | ${data_oper} | Honeycomb and VPP should have default configuration diff --git a/resources/libraries/robot/honeycomb/policer.robot b/resources/libraries/robot/honeycomb/policer.robot index 4319b27a21..17191c5b37 100644 --- a/resources/libraries/robot/honeycomb/policer.robot +++ b/resources/libraries/robot/honeycomb/policer.robot @@ -14,7 +14,6 @@ *** Settings *** | Resource | resources/libraries/robot/traffic.robot | Library | resources.libraries.python.honeycomb.Routing.RoutingKeywords -| ... | WITH NAME | RoutingKeywordsAPI | Variables | resources/test_data/honeycomb/policer_variables.py | Documentation | Keywords used to test Policer using Honeycomb. diff --git a/resources/libraries/robot/honeycomb/port_mirroring.robot b/resources/libraries/robot/honeycomb/port_mirroring.robot index 63fbcea7a0..64faa5e233 100644 --- a/resources/libraries/robot/honeycomb/port_mirroring.robot +++ b/resources/libraries/robot/honeycomb/port_mirroring.robot @@ -13,7 +13,6 @@ *** Settings *** | Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords -| ... | WITH NAME | InterfaceAPI | Library | resources.libraries.python.telemetry.SPAN | Library | resources.libraries.python.InterfaceUtil | Library | resources.libraries.python.IPv4Util @@ -39,7 +38,7 @@ | | ... | \| {'iface-ref': 'local0', 'state': 'both'}] \| | | ... | | [Arguments] | ${node} | ${dst_interface} | @{src_interfaces} -| | InterfaceAPI.Configure interface SPAN +| | Configure interface SPAN | | ... | ${node} | ${dst_interface} | ${src_interfaces} | Interface SPAN Operational Data From Honeycomb Should Be @@ -58,7 +57,7 @@ | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| GigabitEthernet0/9/0 \| | | ... | | [Arguments] | ${node} | ${dst_interface} | @{src_interfaces} -| | ${data}= | InterfaceAPI.Get interface oper data | ${node} | ${dst_interface} +| | ${data}= | Get interface oper data | ${node} | ${dst_interface} | | ${data}= | Set Variable | | ... | ${data['v3po:span']['mirrored-interfaces']['mirrored-interface']} | | Sort list | ${data} @@ -118,7 +117,7 @@ | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| | | ... | | [Arguments] | ${node} | ${dst_interface} -| | InterfaceAPI.Configure interface SPAN | ${node} | ${dst_interface} +| | Configure interface SPAN | ${node} | ${dst_interface} | Interface SPAN Operational Data from Honeycomb should not exist | | [Documentation] | Retrieves interface operational data and verifies that\ @@ -132,7 +131,7 @@ | | ... | | ... | \| | | [Arguments] | ${node} | ${dst_interface} -| | ${data}= | InterfaceAPI.Get interface oper data | ${node} | ${dst_interface} +| | ${data}= | Get interface oper data | ${node} | ${dst_interface} | | Run keyword and expect error | *KeyError* | Set Variable | | ... | ${data['span']['mirrored-interfaces']['mirrored-interface']} @@ -169,7 +168,7 @@ | | ... | \| {'iface-ref': 'local0', 'state': 'both'}] \| | | ... | | [Arguments] | ${node} | ${dst_interface} | ${index} | @{src_interfaces} -| | InterfaceAPI.Configure sub interface SPAN +| | Configure sub interface SPAN | | ... | ${node} | ${dst_interface} | ${index} | ${src_interfaces} | Sub-Interface SPAN Operational Data from Honeycomb should be @@ -190,7 +189,7 @@ | | ... | \| GigabitEthernet0/9/0 \| | | ... | | [Arguments] | ${node} | ${dst_interface} | ${index} | @{src_interfaces} -| | ${data}= | InterfaceAPI.Get sub interface oper data +| | ${data}= | Get sub interface oper data | | ... | ${node} | ${dst_interface} | ${index} | | ${data}= | Set Variable | | ... | ${data['subinterface-span:span-state']['mirrored-interfaces']['mirrored-interface']} @@ -232,7 +231,7 @@ | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| ${1} \| | | ... | | [Arguments] | ${node} | ${dst_interface} | ${index} -| | InterfaceAPI.Configure sub interface SPAN +| | Configure sub interface SPAN | | ... | ${node} | ${dst_interface} | ${index} | Sub-Interface SPAN Operational Data from Honeycomb should not exist @@ -250,7 +249,7 @@ | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| ${1} \| | | .... | | [Arguments] | ${node} | ${dst_interface} | ${index} -| | ${data}= | InterfaceAPI.Get sub interface oper data +| | ${data}= | Get sub interface oper data | | ... | ${node} | ${dst_interface} | ${index} | | Run keyword and expect error | *KeyError* | Set Variable | | ... | ${data['subinterface-span:span-state']['mirrored-interfaces']['mirrored-interface']}
\ No newline at end of file diff --git a/resources/libraries/robot/honeycomb/provider_backbone_bridge.robot b/resources/libraries/robot/honeycomb/provider_backbone_bridge.robot index 92145f82fa..130e184d9c 100644 --- a/resources/libraries/robot/honeycomb/provider_backbone_bridge.robot +++ b/resources/libraries/robot/honeycomb/provider_backbone_bridge.robot @@ -13,7 +13,6 @@ *** Settings *** | Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords -| ... | WITH NAME | IfAPI *** Keywords *** | Honeycomb creates PBB sub-interface @@ -33,8 +32,8 @@ | | ... | | [Arguments] | ${node} | ${super_if} | ${params} | | ... -| | IfAPI.Set Interface Up | ${node} | ${super_if} -| | IfAPI.Create PBB Sub Interface +| | Set Interface Up | ${node} | ${super_if} +| | Create PBB Sub Interface | | ... | ${node} | ${super_if} | ${params} | Honeycomb removes PBB sub-interface @@ -71,7 +70,7 @@ | | ... | | [Arguments] | ${node} | ${super_if} | ${params} | | ... -| | IfAPI.Set Interface Up | ${node} | ${super_if} +| | Set Interface Up | ${node} | ${super_if} | | Run keyword and expect error | *HoneycombError*not successful*. -| | ... | IfAPI.Create PBB Sub Interface +| | ... | Create PBB Sub Interface | | ... | ${node} | ${super_if} | ${params} diff --git a/resources/libraries/robot/honeycomb/slaac.robot b/resources/libraries/robot/honeycomb/slaac.robot index 966f95fa42..1304c2b8ec 100644 --- a/resources/libraries/robot/honeycomb/slaac.robot +++ b/resources/libraries/robot/honeycomb/slaac.robot @@ -102,5 +102,5 @@ | | ... | | [Arguments] | ${node} | ${interface} | | Honeycomb removes SLAAC configuration | ${node} | ${interface} -| | And InterfaceAPI.Set Interface State | ${node} | ${interface} | down +| | And Honeycomb configures interface state | ${node} | ${interface} | down | | Honeycomb removes interface IPv6 addresses | ${node} | ${interface} diff --git a/resources/libraries/robot/honeycomb/sub_interface.robot b/resources/libraries/robot/honeycomb/sub_interface.robot index 4b93de9b8c..69eb9003d1 100644 --- a/resources/libraries/robot/honeycomb/sub_interface.robot +++ b/resources/libraries/robot/honeycomb/sub_interface.robot @@ -13,10 +13,8 @@ *** Settings *** | Library | resources.libraries.python.InterfaceUtil -| ... | WITH NAME | interfaceCLI | Library | resources.libraries.python.L2Util | Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords -| ... | WITH NAME | InterfaceAPI | Resource | resources/libraries/robot/honeycomb/bridge_domain.robot | Documentation | Keywords used to manipulate sub-interfaces. @@ -43,7 +41,7 @@ | | [Arguments] | ${node} | ${super_interface} | | ... | ${match} | ${tags} | ${sub_interface_settings} | | ... -| | interfaceAPI.Create sub interface | ${node} | ${super_interface} +| | Honeycomb Create sub interface | ${node} | ${super_interface} | | ... | ${match} | ${tags} | &{sub_interface_settings} | Sub-interface Operational Data From Honeycomb Should Be @@ -65,9 +63,9 @@ | | [Arguments] | ${node} | ${super_interface} | ${identifier} | | ... | ${sub_if_settings} | | ... -| | ${api_data}= | interfaceAPI.Get sub interface oper data +| | ${api_data}= | Get sub interface oper data | | ... | ${node} | ${super_interface} | ${identifier} -| | interfaceAPI.Compare Data Structures | ${api_data} | ${sub_if_settings} +| | Compare Data Structures | ${api_data} | ${sub_if_settings} | Sub-interface Operational Data From Honeycomb Should Be empty | | [Documentation] | Retrieves sub-interface configuration through Honeycomb \ @@ -85,7 +83,7 @@ | | [Arguments] | ${node} | ${super_interface} | ${identifier} | | ... | | Run keyword and expect error | *KeyError: 'vpp-vlan:sub-interfaces'* -| | ... | interfaceAPI.Get sub interface oper data +| | ... | Get sub interface oper data | | ... | ${node} | ${super_interface} | ${identifier} | Sub-interface state from Honeycomb should be @@ -107,7 +105,7 @@ | | [Arguments] | ${node} | ${super_interface} | ${identifier} | | ... | ${admin_state} | ${oper_state} | | ... -| | ${api_data}= | interfaceAPI.Get sub interface oper data +| | ${api_data}= | Get sub interface oper data | | ... | ${node} | ${super_interface} | ${identifier} | | Should be equal | ${api_data['admin-status']} | ${admin_state} | | Should be equal | ${api_data['oper-status']} | ${oper_state} @@ -129,7 +127,7 @@ | | ... | | [Arguments] | ${node} | ${sub_interface} | ${sub_interface_settings} | | ... -| | ${vat_data}= | InterfaceCLI.VPP get interface data +| | ${vat_data}= | VPP get interface data | | ... | ${node} | ${sub_interface} | | Should be equal as strings | ${vat_data['sub_id']} | | ... | ${sub_interface_settings['identifier']} @@ -160,7 +158,7 @@ | | ... | | [Arguments] | ${node} | ${sub_interface} | ${admin_state} | ${oper_state} | | ... -| | ${vat_data}= | InterfaceCLI.VPP get interface data +| | ${vat_data}= | VPP get interface data | | ... | ${node} | ${sub_interface} | | Run keyword if | '${admin_state}' == 'down' | | ... | Should be equal as strings | ${vat_data['admin_up_down']} | 0 @@ -189,9 +187,9 @@ | | ... | | [Arguments] | ${node} | ${super_interface} | ${identifier} | | ... -| | ${api_data}= | interfaceAPI.Get sub interface oper data +| | ${api_data}= | Get sub interface oper data | | ... | ${node} | ${super_interface} | ${identifier} -| | ${vat_data}= | InterfaceCLI.VPP get interface data +| | ${vat_data}= | VPP get interface data | | ... | ${node} | ${super_interface}.${identifier} | | ${sw_if_index}= | EVALUATE | ${vat_data['sw_if_index']} + 1 | | Should be equal as strings @@ -211,7 +209,7 @@ | | ... | | [Arguments] | ${node} | ${super_interface} | ${identifier} | | ... -| | interfaceAPI.Set sub interface state +| | Set sub interface state | | ... | ${node} | ${super_interface} | ${identifier} | up | Honeycomb sets the sub-interface down @@ -228,7 +226,7 @@ | | ... | | [Arguments] | ${node} | ${super_interface} | ${identifier} | | ... -| | interfaceAPI.Set sub interface state +| | Set sub interface state | | ... | ${node} | ${super_interface} | ${identifier} | down | Honeycomb fails to set sub-interface up @@ -246,7 +244,7 @@ | | [Arguments] | ${node} | ${super_interface} | ${identifier} | | ... | | Run keyword and expect error | *HoneycombError: * was not successful. * 500. -| | ... | interfaceAPI.Set sub interface state +| | ... | Set sub interface state | | ... | ${node} | ${super_interface} | ${identifier} | up | Honeycomb adds sub-interface to bridge domain @@ -265,7 +263,7 @@ | | ... | | [Arguments] | ${node} | ${super_if} | ${identifier} | ${sub_bd_setings} | | ... -| | interfaceAPI.Add bridge domain to sub interface +| | Add bridge domain to sub interface | | ... | ${node} | ${super_if} | ${identifier} | ${sub_bd_setings} | Sub-interface bridge domain Operational Data From Honeycomb Should Be @@ -284,7 +282,7 @@ | | ... | | [Arguments] | ${node} | ${super_if} | ${identifier} | ${settings} | | ... -| | ${if_data}= | interfaceAPI.Get BD data from sub interface +| | ${if_data}= | Get BD data from sub interface | | ... | ${node} | ${super_if} | ${identifier} | | Should be equal | ${if_data['bridge-domain']} | | ... | ${settings['bridge-domain']} @@ -330,7 +328,7 @@ | | [Arguments] | ${node} | ${super_if} | | ... | | Run keyword and expect error | *HoneycombError:*not successful. * code: 500. -| | ... | interfaceAPI.Remove all sub interfaces +| | ... | Remove all sub interfaces | | ... | ${node} | ${super_if} | Honeycomb configures tag rewrite @@ -349,7 +347,7 @@ | | ... | | [Arguments] | ${node} | ${super_if} | ${identifier} | ${settings} | | ... -| | interfaceAPI.Configure tag rewrite +| | Configure tag rewrite | | ... | ${node} | ${super_if} | ${identifier} | ${settings} | Rewrite tag from Honeycomb should be empty @@ -367,7 +365,7 @@ | | [Arguments] | ${node} | ${super_if} | ${identifier} | | ... | | Run keyword and expect error | *Hon*Error*oper*does not contain*tag-rewrite* -| | ... | interfaceAPI.Get tag rewrite oper data +| | ... | Get tag rewrite oper data | | ... | ${node} | ${super_if} | ${identifier} | Rewrite tag from Honeycomb should be @@ -387,9 +385,9 @@ | | ... | \| ${tag_rewrite_push_oper} \| | | ... | | [Arguments] | ${node} | ${super_if} | ${identifier} | ${settings} -| | ${api_data}= | interfaceAPI.Get tag rewrite oper data +| | ${api_data}= | Get tag rewrite oper data | | ... | ${node} | ${super_if} | ${identifier} -| | interfaceAPI.Compare Data Structures +| | Compare Data Structures | | ... | ${api_data} | ${settings} | Rewrite tag from VAT should be @@ -409,8 +407,8 @@ | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0.1 \| ${rw_params} \| | | ... | | [Arguments] | ${node} | ${interface} | ${rw_settings} -| | ${vat_data}= | InterfaceCLI.VPP get interface data | ${node} | ${interface} -| | interfaceAPI.Compare Data Structures | ${vat_data} | ${rw_settings} +| | ${vat_data}= | VPP get interface data | ${node} | ${interface} +| | Compare Data Structures | ${vat_data} | ${rw_settings} | Honeycomb fails to set wrong rewrite tag | | [Documentation] | Honeycomb tries to set wrong rewrite tag and expects\ @@ -429,7 +427,7 @@ | | ... | | [Arguments] | ${node} | ${super_if} | ${identifier} | ${settings} | | Run keyword and expect error | *HoneycombError: * was not successful. *00. -| | ... | interfaceAPI.Configure tag rewrite +| | ... | Configure tag rewrite | | ... | ${node} | ${super_if} | ${identifier} | ${settings} | Honeycomb sets sub-interface ipv4 address @@ -469,7 +467,7 @@ | | ... | \| 192.168.0.2 \| ${24} \| | | ... | | [Arguments] | ${node} | ${super_if} | ${identifier} | ${address} | ${prefix} -| | ${if_data}= | interfaceAPI.Get sub interface oper data +| | ${if_data}= | Get sub interface oper data | | ... | ${node} | ${super_if} | ${identifier} | | Should be equal | | ... | ${if_data['ipv4']['address'][0]['ip']} | ${address} @@ -492,7 +490,7 @@ | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0.1 \| | | ... | | [Arguments] | ${node} | ${sub_interface} | ${address} | ${prefix} -| | ${data}= | interfaceCLI.VPP get interface ip addresses +| | ${data}= | VPP get interface ip addresses | | ... | ${node} | ${sub_interface} | ipv4 | | Should be equal | ${data[0]['ip']} | ${address} | | Should be equal | ${data[0]['prefix_length']} | ${prefix} @@ -528,7 +526,7 @@ | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| ${1} \| | | ... | | [Arguments] | ${node} | ${super_if} | ${identifier} -| | ${if_data}= | interfaceAPI.Get sub interface oper data +| | ${if_data}= | Get sub interface oper data | | ... | ${node} | ${super_if} | ${identifier} | | Run keyword and expect error | *KeyError: 'ipv4'* | | ... | Set Variable | ${if_data['ipv4']['address'][0]['ip']} @@ -548,7 +546,7 @@ | | ... | | [Arguments] | ${node} | ${sub_interface} | | Run keyword and expect error | *No JSON object could be decoded* -| | ... | interfaceCLI.VPP get interface ip addresses +| | ... | VPP get interface ip addresses | | ... | ${node} | ${sub_interface} | ipv4 | Honeycomb sets sub-interface ipv6 address @@ -588,7 +586,7 @@ | | ... | \| 10::10 \| ${64} \| | | ... | | [Arguments] | ${node} | ${super_if} | ${identifier} | ${address} | ${prefix} -| | ${if_data}= | interfaceAPI.Get sub interface oper data +| | ${if_data}= | Get sub interface oper data | | ... | ${node} | ${super_if} | ${identifier} | | ${settings}= | Create Dictionary | | ... | ip=${address} | prefix-length=${prefix} @@ -610,7 +608,7 @@ | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0.1 \| | | ... | | [Arguments] | ${node} | ${sub_interface} | ${address} | ${prefix} -| | ${data}= | interfaceCLI.VPP get interface ip addresses +| | ${data}= | VPP get interface ip addresses | | ... | ${node} | ${sub_interface} | ipv6 | | Should be equal | ${data[0]['ip']} | ${address} | | Should be equal | ${data[0]['prefix_length']} | ${prefix} @@ -646,7 +644,7 @@ | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| ${1} \| | | ... | | [Arguments] | ${node} | ${super_if} | ${identifier} -| | ${if_data}= | interfaceAPI.Get sub interface oper data +| | ${if_data}= | Get sub interface oper data | | ... | ${node} | ${super_if} | ${identifier} | | Run keyword and expect error | *KeyError: 'ipv6'* | | ... | Set Variable | ${if_data['ipv6']['address'][0]['ip']} @@ -666,5 +664,5 @@ | | ... | | [Arguments] | ${node} | ${sub_interface} | | Run keyword and expect error | *No JSON object could be decoded* -| | ... | interfaceCLI.VPP get interface ip addresses +| | ... | VPP get interface ip addresses | | ... | ${node} | ${sub_interface} | ipv6 diff --git a/resources/libraries/robot/honeycomb/tap.robot b/resources/libraries/robot/honeycomb/tap.robot index 1a045d1909..0d5585b4bf 100644 --- a/resources/libraries/robot/honeycomb/tap.robot +++ b/resources/libraries/robot/honeycomb/tap.robot @@ -13,9 +13,7 @@ *** Settings *** | Library | resources.libraries.python.InterfaceUtil -| ... | WITH NAME | interfaceCLI | Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords -| ... | WITH NAME | InterfaceAPI | Documentation | Keywords used to manipulate TAP interfaces. *** Keywords *** @@ -33,7 +31,7 @@ | | ... | 'mac':'08:00:27:60:26:ab', 'device-instance':3}} \| | | ... | | [Arguments] | ${node} | ${interface} | ${settings} -| | interfaceAPI.Create TAP interface | ${node} | ${interface} +| | Create TAP interface | ${node} | ${interface} | | ... | &{settings} | Honeycomb configures TAP interface @@ -50,7 +48,7 @@ | | ... | 'mac':'08:00:27:60:26:ab', 'device-instance':3}} \| | | ... | | [Arguments] | ${node} | ${interface} | ${settings} -| | interfaceAPI.Configure interface TAP | ${node} | ${interface} +| | Configure interface TAP | ${node} | ${interface} | | ... | &{settings} | Honeycomb removes TAP interface @@ -65,7 +63,7 @@ | | ... | \| Honeycomb removes TAP interface \ | | ... | \| ${nodes['DUT1']} \| tap_int1 \| | | [Arguments] | ${node} | ${interface} -| | interfaceAPI.Delete interface | ${node} | ${interface} +| | Delete interface | ${node} | ${interface} | TAP Operational Data From Honeycomb Should Be | | [Documentation] | Retrieves interface TAP configuration through Honeycomb\ @@ -83,7 +81,7 @@ | | ... | 'mac':'08:00:27:60:26:ab', 'device-instance':3}} \| | | ... | | [Arguments] | ${node} | ${interface} | ${settings} -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | ${api_tap}= | Set Variable | ${api_data['v3po:tap']} | | Should be equal | ${api_tap['tap-name']} | ${settings['tap-name']} | | ${api_mac}= | Set Variable | ${api_data['phys-address']} @@ -122,7 +120,7 @@ | | ... | \| ${nodes['DUT1']} \| tap_int1 \| | | ... | | [Arguments] | ${node} | ${interface} -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | Run keyword and expect error | *KeyError: 'v3po:tap' | Set Variable | | ... | ${api_data['v3po:tap']} diff --git a/resources/libraries/robot/honeycomb/vhost_user.robot b/resources/libraries/robot/honeycomb/vhost_user.robot index b0941ed1d3..0c662993b4 100644 --- a/resources/libraries/robot/honeycomb/vhost_user.robot +++ b/resources/libraries/robot/honeycomb/vhost_user.robot @@ -13,9 +13,7 @@ *** Settings *** | Library | resources.libraries.python.InterfaceUtil -| ... | WITH NAME | interfaceCLI | Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords -| ... | WITH NAME | InterfaceAPI | Documentation | Keywords used to manipulate vhost-user unterfaces. *** Keywords *** @@ -33,7 +31,7 @@ | | ... | \| ${nodes['DUT1']} \| vhost_test \| ${vhost_user_settings} \| | | ... | | [Arguments] | ${node} | ${interface} | ${settings} -| | interfaceAPI.Create vhost user interface | ${node} | ${interface} +| | Create vhost user interface | ${node} | ${interface} | | ... | &{settings} | Honeycomb removes vhost-user interface @@ -48,7 +46,7 @@ | | ... | \| ${nodes['DUT1']} \| vhost_test \| | | ... | | [Arguments] | ${node} | ${interface} -| | interfaceAPI.Delete interface | ${node} | ${interface} +| | Delete interface | ${node} | ${interface} | Honeycomb configures vhost-user interface | | [Documentation] | Configure a vhost-user interface using Honeycomb API. @@ -64,7 +62,7 @@ | | ... | \| ${nodes['DUT1']} \| vhost_test \| ${new_vhost_user_settings} \| | | ... | | [Arguments] | ${node} | ${interface} | ${settings} -| | interfaceAPI.Configure interface vhost user | ${node} | ${interface} +| | Configure interface vhost user | ${node} | ${interface} | | ... | &{settings} | Vhost-user Operational Data From Honeycomb Should Be @@ -82,7 +80,7 @@ | | ... | \| ${nodes['DUT1']} \| vhost_test \| ${vhost_user_settings} \| | | ... | | [Arguments] | ${node} | ${interface} | ${settings} -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | ${api_vhost}= | Set Variable | ${api_data['v3po:vhost-user']} | | :FOR | ${key} | IN | @{settings.keys()} | | | Should be equal | ${api_vhost['${key}']} | ${settings['${key}']} @@ -126,7 +124,7 @@ | | ... | \| ${nodes['DUT1']} \| vhost_test \| | | ... | | [Arguments] | ${node} | ${interface} -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | Run keyword and expect error | *KeyError: 'v3po:vhost-user' | | ... | Should be empty | ${api_data['v3po:vhost-user']} @@ -160,7 +158,7 @@ | | ... | | [Arguments] | ${node} | ${interface} | ${settings} | | Run Keyword And Expect Error | HoneycombError: * Status code: 500. -| | ... | interfaceAPI.Configure interface vhost user | ${node} | ${interface} +| | ... | Configure interface vhost user | ${node} | ${interface} | | ... | &{settings} | Honeycomb fails setting invalid vhost-user configuration @@ -178,5 +176,5 @@ | | ... | | [Arguments] | ${node} | ${interface} | ${settings} | | Run Keyword And Expect Error | HoneycombError: * Status code: 400. -| | ... | interfaceAPI.Configure interface vhost user | ${node} | ${interface} +| | ... | Configure interface vhost user | ${node} | ${interface} | | ... | &{settings} diff --git a/resources/libraries/robot/honeycomb/vxlan.robot b/resources/libraries/robot/honeycomb/vxlan.robot index b3bf083587..ed21d192c8 100644 --- a/resources/libraries/robot/honeycomb/vxlan.robot +++ b/resources/libraries/robot/honeycomb/vxlan.robot @@ -13,9 +13,7 @@ *** Settings *** | Library | resources.libraries.python.InterfaceUtil -| ... | WITH NAME | interfaceCLI | Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords -| ... | WITH NAME | InterfaceAPI *** Keywords *** | Honeycomb sets interface VxLAN configuration @@ -32,7 +30,7 @@ | | ... | 'dst':'192.168.0.3', 'vni':5, 'encap-vrf-id':0}} \| | | ... | | [Arguments] | ${node} | ${interface} | ${settings} -| | interfaceAPI.Create VxLAN interface | ${node} | ${interface} +| | Honeycomb Create VxLAN interface | ${node} | ${interface} | | ... | &{settings} | Honeycomb removes VxLAN tunnel settings @@ -47,7 +45,7 @@ | | ... | | ... | \| Honeycomb removes VxLAN tunnel \| ${nodes['DUT1']} \| vxlan_01 \| | | [Arguments] | ${node} | ${interface} -| | interfaceAPI.Delete interface | ${node} | ${interface} +| | Delete interface | ${node} | ${interface} | VxLAN Operational Data From Honeycomb Should Be | | [Documentation] | Retrieves interface VxLAN configuration through Honeycomb\ @@ -65,7 +63,7 @@ | | ... | 'dst':'192.168.0.3', 'vni':5, 'encap-vrf-id':0}} \| | | ... | | [Arguments] | ${node} | ${interface} | ${settings} -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | ${api_vxlan}= | Set Variable | ${api_data['v3po:vxlan']} | | :FOR | ${key} | IN | @{settings.keys()} | | | Should be equal | ${api_vxlan['${key}']} | ${settings['${key}']} @@ -111,7 +109,7 @@ | | ... | \|${nodes['DUT1']} \| vxlan_01 \| | | ... | | [Arguments] | ${node} | ${interface} -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | Run keyword and expect error | *KeyError: 'v3po:vxlan' | Set Variable | | ... | ${api_data['v3po:vxlan']} @@ -149,7 +147,7 @@ | | ... | | [Arguments] | ${node} | ${interface} | ${settings} | | Run Keyword And Expect Error | HoneycombError: * Status code: 500. -| | ... | interfaceAPI.Configure interface vxlan +| | ... | Honeycomb Configure interface vxlan | | ... | ${node} | ${interface} | &{settings} | Honeycomb fails setting invalid VxLAN configuration @@ -169,5 +167,5 @@ | | [Arguments] | ${node} | ${interface} | ${settings_list} | | :FOR | ${settings} | IN | @{settings_list} | | | Run Keyword And Expect Error | HoneycombError: * Status code: 500. -| | | ... | interfaceAPI.Create VxLAN interface +| | | ... | Honeycomb Create VxLAN interface | | | ... | ${node} | ${interface} | &{settings} diff --git a/resources/libraries/robot/honeycomb/vxlan_gpe.robot b/resources/libraries/robot/honeycomb/vxlan_gpe.robot index 6384061edd..2f2cfc50b4 100644 --- a/resources/libraries/robot/honeycomb/vxlan_gpe.robot +++ b/resources/libraries/robot/honeycomb/vxlan_gpe.robot @@ -13,9 +13,7 @@ *** Settings *** | Library | resources.libraries.python.InterfaceUtil -| ... | WITH NAME | interfaceCLI | Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords -| ... | WITH NAME | InterfaceAPI *** Variables *** # Translation table used to convert values received from Honeycomb to values @@ -46,7 +44,7 @@ | | [Arguments] | ${node} | ${interface} | | ... | ${base_settings} | ${vxlan_gpe_settings} | | ... -| | interfaceAPI.Create VxLAN GPE interface +| | Create VxLAN GPE interface | | ... | ${node} | ${interface} | &{base_settings} | &{vxlan_gpe_settings} | Honeycomb removes VxLAN GPE interface @@ -64,7 +62,7 @@ | | ... | | [Arguments] | ${node} | ${interface} | | ... -| | interfaceAPI.Delete interface | ${node} | ${interface} +| | Delete interface | ${node} | ${interface} | VxLAN GPE Operational Data From Honeycomb Should Be | | [Documentation] | Uses Honeycomb API to get operational data about the\ @@ -85,7 +83,7 @@ | | [Arguments] | ${node} | ${interface} | | ... | ${base_settings} | ${vxlan_gpe_settings} | | ... -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | Should be equal as strings | | ... | ${api_data['name']} | ${base_settings['name']} | | Should be equal as strings @@ -148,7 +146,7 @@ | | ... | | [Arguments] | ${node} | ${interface} | | ... -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | ${vat_data}= | VxLAN GPE Dump | ${node} | ${interface} | | ${sw_if_index}= | EVALUATE | ${vat_data['sw_if_index']} + 1 | | Should be equal as strings @@ -167,7 +165,7 @@ | | ... | | [Arguments] | ${node} | ${interface} | | ... -| | ${api_data}= | interfaceAPI.Get interface oper data | ${node} | ${interface} +| | ${api_data}= | Get interface oper data | ${node} | ${interface} | | Should be empty | ${api_data} | VxLAN GPE Operational Data From VAT Should Be empty @@ -206,5 +204,5 @@ | | ... | ${base_settings} | ${vxlan_gpe_settings} | | ... | | Run keyword and expect error | *HoneycombError*not successful. * code: *00. -| | ... | interfaceAPI.Create VxLAN GPE interface +| | ... | Create VxLAN GPE interface | | ... | ${node} | ${interface} | &{base_settings} | &{vxlan_gpe_settings} |