X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FDUTSetup.py;h=6b2f5edb83492acaa820cef9f6b5a5b3134e8800;hp=78caeb79a46479ddad01d4043fc9b546ba0215a9;hb=440370de3fc66d5bb9754a55fa78ccce8c598f5d;hpb=efe5c162d2311ed470285a6f84af7c0f3a0c109c 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