aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python
diff options
context:
space:
mode:
authorTibor Frank <tifrank@cisco.com>2019-06-10 12:49:51 +0200
committerTibor Frank <tifrank@cisco.com>2019-06-19 06:17:30 +0000
commit92fbe3b8d880f9a3dd63e1309d76772b1685a037 (patch)
tree45fffdeac82afb4ad2484415f1a6d832ccb13335 /resources/libraries/python
parent5982882c045085b1656b14efc4e52bbb59c4b264 (diff)
VAT-to-PAPI: VPPUtils
Change-Id: If4eb592e2718c4564f1f7929ca6ff91c02f074a6 Signed-off-by: Tibor Frank <tifrank@cisco.com>
Diffstat (limited to 'resources/libraries/python')
-rw-r--r--resources/libraries/python/PapiExecutor.py28
-rw-r--r--resources/libraries/python/VPPUtil.py50
2 files changed, 50 insertions, 28 deletions
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']
@@ -218,27 +216,15 @@ class VPPUtil(object):
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.
: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