aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python
diff options
context:
space:
mode:
Diffstat (limited to 'resources/libraries/python')
-rw-r--r--resources/libraries/python/DUTSetup.py45
-rw-r--r--resources/libraries/python/VppCounters.py17
2 files changed, 62 insertions, 0 deletions
diff --git a/resources/libraries/python/DUTSetup.py b/resources/libraries/python/DUTSetup.py
index 78caeb79a4..6b2f5edb83 100644
--- a/resources/libraries/python/DUTSetup.py
+++ b/resources/libraries/python/DUTSetup.py
@@ -97,3 +97,48 @@ class DUTSetup(object):
format(node['host'], stdout + stderr))
raise Exception('DUT test setup script failed at node {}'.
format(node['host']))
+
+ @staticmethod
+ def get_vpp_pid(node):
+ """Get PID of running VPP process.
+
+ :param node: DUT node.
+ :type node: dict
+ :return: PID
+ :rtype: int
+ :raises RuntimeError if it is not possible to get the PID.
+ """
+
+ ssh = SSH()
+ ssh.connect(node)
+ ret_code, stdout, stderr = ssh.exec_command('pidof vpp')
+
+ logger.trace(stdout)
+ logger.trace(stderr)
+
+ if int(ret_code) != 0:
+ logger.debug('Not possible to get PID of VPP process on node: '
+ '"{1}"'.format(node['host'], stdout + stderr))
+ raise RuntimeError('Not possible to get PID of VPP process on node:'
+ ' {}'.format(node['host']))
+
+ if len(stdout.splitlines()) != 1:
+ raise RuntimeError("More then one VPP PID found on node {0}".
+ format(node['host']))
+ return int(stdout)
+
+ @staticmethod
+ def get_vpp_pids(nodes):
+ """Get PID of running VPP process on all DUTs.
+
+ :param nodes: DUT nodes.
+ :type nodes: dict
+ :return: PIDs
+ :rtype: dict
+ """
+
+ pids = dict()
+ for node in nodes.values():
+ if node['type'] == NodeType.DUT:
+ pids[node['host']] = DUTSetup.get_vpp_pid(node)
+ return pids
diff --git a/resources/libraries/python/VppCounters.py b/resources/libraries/python/VppCounters.py
index af3ea47560..e755c75673 100644
--- a/resources/libraries/python/VppCounters.py
+++ b/resources/libraries/python/VppCounters.py
@@ -58,6 +58,23 @@ class VppCounters(object):
vat.execute_script("show_errors_verbose.vat", node, json_out=False)
@staticmethod
+ def vpp_show_errors_on_all_duts(nodes, verbose=False):
+ """Show errors on all DUTs.
+
+ :param nodes: VPP nodes
+ :param verbose: If True show verbose output.
+ :type nodes: dict
+ :type verbose: bool
+ """
+
+ for node in nodes.values():
+ if node['type'] == NodeType.DUT:
+ if verbose:
+ VppCounters.vpp_show_errors_verbose(node)
+ else:
+ VppCounters.vpp_show_errors(node)
+
+ @staticmethod
def vpp_show_runtime(node):
"""Run "show runtime" CLI command.