From: Tibor Frank Date: Mon, 10 Jun 2019 10:49:51 +0000 (+0200) Subject: VAT-to-PAPI: VPPUtils X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=commitdiff_plain;h=92fbe3b8d880f9a3dd63e1309d76772b1685a037 VAT-to-PAPI: VPPUtils Change-Id: If4eb592e2718c4564f1f7929ca6ff91c02f074a6 Signed-off-by: Tibor Frank --- diff --git a/resources/libraries/python/PapiExecutor.py b/resources/libraries/python/PapiExecutor.py index e296e23c1f..c2f966fb6d 100644 --- a/resources/libraries/python/PapiExecutor.py +++ b/resources/libraries/python/PapiExecutor.py @@ -365,6 +365,34 @@ class PapiExecutor(object): method='dump', process_reply=process_reply, ignore_errors=ignore_errors, err_msg=err_msg, timeout=timeout) + @staticmethod + def run_cli_cmd(node, cmd, log=True): + """Run a CLI command. + + :param node: Node to run command on. + :param cmd: The CLI command to be run on the node. + :param log: If True, the response is logged. + :type node: dict + :type cmd: str + :type log: bool + :returns: Verified data from PAPI response. + :rtype: dict + """ + + cli = 'cli_inband' + args = dict(cmd=cmd) + err_msg = "Failed to run 'cli_inband {cmd}' PAPI command on host " \ + "{host}".format(host=node['host'], cmd=cmd) + + with PapiExecutor(node) as papi_exec: + data = papi_exec.add(cli, **args).get_replies(err_msg). \ + verify_reply(err_msg=err_msg) + + if log: + logger.info("{cmd}:\n{data}".format(cmd=cmd, data=data["reply"])) + + return data + def execute_should_pass(self, err_msg="Failed to execute PAPI command.", process_reply=True, ignore_errors=False, timeout=120): diff --git a/resources/libraries/python/VPPUtil.py b/resources/libraries/python/VPPUtil.py index 6268e369be..c20912eec5 100644 --- a/resources/libraries/python/VPPUtil.py +++ b/resources/libraries/python/VPPUtil.py @@ -22,7 +22,6 @@ from resources.libraries.python.DUTSetup import DUTSetup from resources.libraries.python.PapiExecutor import PapiExecutor from resources.libraries.python.ssh import exec_cmd_no_error from resources.libraries.python.topology import NodeType -from resources.libraries.python.VatExecutor import VatExecutor class VPPUtil(object): @@ -163,8 +162,7 @@ class VPPUtil(object): :rtype: str """ with PapiExecutor(node) as papi_exec: - data = papi_exec.add('show_version').execute_should_pass().\ - verify_reply() + data = papi_exec.add('show_version').get_replies().verify_reply() version = ('VPP version: {ver}\n'. format(ver=data['version'].rstrip('\0x00'))) if verbose: @@ -200,7 +198,7 @@ class VPPUtil(object): err_msg = 'Failed to get interface dump on host {host}'.format( host=node['host']) with PapiExecutor(node) as papi_exec: - papi_resp = papi_exec.add(cmd, **args).execute_should_pass(err_msg) + papi_resp = papi_exec.add(cmd, **args).get_replies(err_msg) papi_if_dump = papi_resp.reply[0]['api_reply'] @@ -217,17 +215,6 @@ class VPPUtil(object): logger.trace('Interface data of host {host}:\n{if_data}'.format( host=node['host'], if_data=if_data)) - @staticmethod - def vpp_show_crypto_device_mapping(node): - """Run "show crypto device mapping" CLI command. - - :param node: Node to run command on. - :type node: dict - """ - vat = VatExecutor() - vat.execute_script("show_crypto_device_mapping.vat", node, - json_out=False) - @staticmethod def vpp_enable_traces_on_dut(node): """Enable vpp packet traces on the DUT node. @@ -235,10 +222,9 @@ class VPPUtil(object): :param node: DUT node to set up. :type node: dict """ - vat = VatExecutor() - vat.execute_script("enable_dpdk_traces.vat", node, json_out=False) - vat.execute_script("enable_vhost_user_traces.vat", node, json_out=False) - vat.execute_script("enable_memif_traces.vat", node, json_out=False) + PapiExecutor.run_cli_cmd(node, "trace add dpdk-input 50") + PapiExecutor.run_cli_cmd(node, "trace add vhost-user-input 50") + PapiExecutor.run_cli_cmd(node, "trace add memif-input 50") @staticmethod def vpp_enable_traces_on_all_duts(nodes): @@ -258,9 +244,7 @@ class VPPUtil(object): :param node: DUT node to set up. :type node: dict """ - vat = VatExecutor() - vat.execute_script("elog_trace_api_cli_barrier.vat", node, - json_out=False) + PapiExecutor.run_cli_cmd(node, "elog trace api cli barrier") @staticmethod def vpp_enable_elog_traces_on_all_duts(nodes): @@ -280,8 +264,7 @@ class VPPUtil(object): :param node: DUT node to show traces on. :type node: dict """ - vat = VatExecutor() - vat.execute_script("show_event_logger.vat", node, json_out=False) + PapiExecutor.run_cli_cmd(node, "show event-logger") @staticmethod def show_event_logger_on_all_duts(nodes): @@ -303,9 +286,7 @@ class VPPUtil(object): :returns: VPP log data. :rtype: list """ - with PapiExecutor(node) as papi_exec: - return papi_exec.add('cli_inband', cmd='show log').get_replies().\ - verify_reply()["reply"] + return PapiExecutor.run_cli_cmd(node, "show log")["reply"] @staticmethod def vpp_show_threads(node): @@ -317,5 +298,18 @@ class VPPUtil(object): :rtype: list """ with PapiExecutor(node) as papi_exec: - return papi_exec.add('show_threads').execute_should_pass().\ + data = papi_exec.add('show_threads').get_replies().\ verify_reply()["thread_data"] + + threads_data = list() + for thread in data: + thread_data = list() + for item in thread: + if isinstance(item, unicode): + item = item.rstrip('\x00') + thread_data.append(item) + threads_data.append(thread_data) + + logger.info("show threads:\n{threads}".format(threads=threads_data)) + + return threads_data diff --git a/resources/libraries/robot/performance/performance_configuration.robot b/resources/libraries/robot/performance/performance_configuration.robot index 967ef443fd..2aa2dc4898 100644 --- a/resources/libraries/robot/performance/performance_configuration.robot +++ b/resources/libraries/robot/performance/performance_configuration.robot @@ -145,8 +145,6 @@ | | ... | address. | | ... | | Set interfaces in path up -| | VPP Show Crypto Device Mapping | ${dut1} -| | VPP Show Crypto Device Mapping | ${dut2} | | ${tg_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} | | ${tg_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} | | ${dut1_if1_mac}= | Get Interface MAC | ${dut1} | ${dut1_if1}