telemetry: linux telemetry with perf-stat
[csit.git] / resources / libraries / python / TelemetryUtil.py
index 3031647..f8c7d8c 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2021 Cisco and/or its affiliates.
+# Copyright (c) 2022 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:
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-"""Linux perf utility."""
+"""Telemetry utility."""
+
+from robot.api import logger
+from time import sleep
 
 from resources.libraries.python.Constants import Constants
+from resources.libraries.python.VppCounters import VppCounters
 from resources.libraries.python.OptionString import OptionString
 from resources.libraries.python.ssh import exec_cmd, exec_cmd_no_error
 from resources.libraries.python.topology import NodeType
@@ -104,9 +108,22 @@ class TelemetryUtil:
         cd_cmd += f"{Constants.RESOURCES_TOOLS}"
 
         bin_cmd = f"python3 -m telemetry --config {config} --hook {hook}\""
+        hostname = node[u"host"]
 
         exec_cmd_no_error(node, f"{cd_cmd} && {bin_cmd}", sudo=True)
-        exec_cmd_no_error(node, f"cat /tmp/metric.prom", sudo=True)
+        stdout, _ = exec_cmd_no_error(
+            node, u"cat /tmp/metric.prom", sudo=True, log_stdout_err=False
+        )
+        logger.info(
+            u"# TYPE target info\n"
+            u"# HELP target Target metadata\n"
+            f"target_info{{hostname=\"{hostname}\",hook=\"{hook}\"}} 1\n"
+            f"{stdout}"
+        )
+
+        VppCounters.vpp_clear_runtime(node)
+        sleep(1)
+        VppCounters.vpp_show_runtime(node)
 
     @staticmethod
     def run_telemetry_on_all_duts(nodes, profile):
@@ -122,7 +139,7 @@ class TelemetryUtil:
         for node in nodes.values():
             if node[u"type"] == NodeType.DUT:
                 try:
-                    for socket in node[u"sockets"][u"PAPI"].values():
+                    for socket in node[u"sockets"][u"CLI"].values():
                         TelemetryUtil.run_telemetry(
                             node, profile=profile, hook=socket
                         )