aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python
diff options
context:
space:
mode:
authorTibor Frank <tifrank@cisco.com>2016-10-27 15:33:42 +0200
committerTibor Frank <tifrank@cisco.com>2016-11-07 17:07:12 +0100
commit440370de3fc66d5bb9754a55fa78ccce8c598f5d (patch)
treee5c9b88a6f854d9fc55d5e36e2897809b8fb1300 /resources/libraries/python
parentefe5c162d2311ed470285a6f84af7c0f3a0c109c (diff)
CSIT-465: Common test setup and teardown
This test setup and teardown is aimed to be used with all functional tests. It does not include functionality to manipulate VMs (qemu). Test setup includes: - Setup all DUTs before test - Save VPP PIDs - Setup all TGs before traffic script - Update All Interface Data On All Nodes Test teardown includes: - Show Packet Trace on All DUTs - Show vpp trace dump on all DUTs - Vpp Show Errors On All DUTs - Check VPP PID in Teardown Change-Id: Ifee0bd58b7865442c5b510852908fd8363e3c543 Signed-off-by: Tibor Frank <tifrank@cisco.com>
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.