VAT-to-PAPI: VPPUtils 57/20057/12
authorTibor Frank <tifrank@cisco.com>
Mon, 10 Jun 2019 10:49:51 +0000 (12:49 +0200)
committerTibor Frank <tifrank@cisco.com>
Wed, 19 Jun 2019 06:17:30 +0000 (06:17 +0000)
Change-Id: If4eb592e2718c4564f1f7929ca6ff91c02f074a6
Signed-off-by: Tibor Frank <tifrank@cisco.com>
resources/libraries/python/PapiExecutor.py
resources/libraries/python/VPPUtil.py
resources/libraries/robot/performance/performance_configuration.robot

index e296e23..c2f966f 100644 (file)
@@ -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):
index 6268e36..c20912e 100644 (file)
@@ -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
index 967ef44..2aa2dc4 100644 (file)
 | | ... | 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}