diff options
Diffstat (limited to 'resources/libraries')
-rw-r--r-- | resources/libraries/python/DMM/SingleCliSer.py | 41 | ||||
-rw-r--r-- | resources/libraries/python/ssh.py | 11 |
2 files changed, 50 insertions, 2 deletions
diff --git a/resources/libraries/python/DMM/SingleCliSer.py b/resources/libraries/python/DMM/SingleCliSer.py index 89ac10f923..8d7b648ea4 100644 --- a/resources/libraries/python/DMM/SingleCliSer.py +++ b/resources/libraries/python/DMM/SingleCliSer.py @@ -20,6 +20,7 @@ import time import os import glob +from resources.libraries.python.ssh import SSH from resources.libraries.python.ssh import exec_cmd, exec_cmd_no_error from resources.libraries.python.DMM.DMMConstants import DMMConstants as con from resources.libraries.python.topology import Topology @@ -167,6 +168,12 @@ class SingleCliSer(object): cmd = 'cd {0}/{1} && ./{2} log 1'\ .format(con.REMOTE_FW_DIR, con.DMM_RUN_SCRIPTS, script_name) exec_cmd(dut2_node, cmd) + cmd = 'mv /var/log/nStack/running.log /var/log/nStack/{0}_ser.log'\ + .format(script_name) + exec_cmd(dut1_node, cmd, sudo=True) + cmd = 'mv /var/log/nStack/running.log /var/log/nStack/{0}_cli.log'\ + .format(script_name) + exec_cmd(dut2_node, cmd, sudo=True) @staticmethod def cleanup_dmm_dut(dut1_node, dut2_node, script_name): @@ -255,3 +262,37 @@ class SingleCliSer(object): (stdout, _) = exec_cmd_no_error(dut_node, cmd) interface_name = stdout.split(' ', 1)[0] return interface_name + + @staticmethod + def get_logs_from_node(dut_node): + """ + Get logs from node to the test executor machine. + + :param dut_node: Node to artifact the logs of. + :type dut_node: dict + """ + ssh = SSH() + ssh.connect(dut_node) + ssh.scp(".", '/var/log/nStack/*.log', + get=True, timeout=60, wildcard=True) + + (ret, _, _) = exec_cmd(dut_node, 'ls -l /var/log/app*.log') + if ret == 0: + ssh.scp(".", '/var/log/app*.log', + get=True, timeout=60, wildcard=True) + + exec_cmd(dut_node, 'rm -rf /var/log/nStack/*.log', sudo=True) + exec_cmd(dut_node, 'rm -rf /var/log/app*.log', sudo=True) + + @staticmethod + def archive_dmm_logs(dut1_node, dut2_node): + """ + Get logs from both DUT's to the test executor machine. + + :param dut1_node: DUT1 node. + :param dut2_node: DUT2 node. + :type dut1_node: dict + :type dut2_node: dict + """ + SingleCliSer.get_logs_from_node(dut1_node) + SingleCliSer.get_logs_from_node(dut2_node) diff --git a/resources/libraries/python/ssh.py b/resources/libraries/python/ssh.py index 4bcfe6591f..108c1e4e1e 100644 --- a/resources/libraries/python/ssh.py +++ b/resources/libraries/python/ssh.py @@ -324,7 +324,8 @@ class SSH(object): """ chan.close() - def scp(self, local_path, remote_path, get=False, timeout=30): + def scp(self, local_path, remote_path, get=False, timeout=30, + wildcard=False): """Copy files from local_path to remote_path or vice versa. connect() method has to be called first! @@ -335,10 +336,12 @@ class SSH(object): path to remote file which should be downloaded. :param get: scp operation to perform. Default is put. :param timeout: Timeout value in seconds. + :param wildcard: If path has wildcard characters. Default is false. :type local_path: str :type remote_path: str :type get: bool :type timeout: int + :type wildcard: bool """ if not get: logger.trace('SCP {0} to {1}:{2}'.format( @@ -349,7 +352,11 @@ class SSH(object): self._ssh.get_transport().getpeername(), remote_path, local_path)) # SCPCLient takes a paramiko transport as its only argument - scp = SCPClient(self._ssh.get_transport(), socket_timeout=timeout) + if not wildcard: + scp = SCPClient(self._ssh.get_transport(), socket_timeout=timeout) + else: + scp = SCPClient(self._ssh.get_transport(), sanitize=lambda x: x, + socket_timeout=timeout) start = time() if not get: scp.put(local_path, remote_path) |