fix to get logfile 59/44559/1
authordongwenjuan <dong.wenjuan@zte.com.cn>
Mon, 9 Oct 2017 07:25:33 +0000 (15:25 +0800)
committerCarlos Goncalves <mail@cgoncalves.pt>
Mon, 9 Oct 2017 10:49:59 +0000 (10:49 +0000)
Change-Id: I44cc6c5108eb48191ca36cbcb44f787ea542f3ce
Signed-off-by: dongwenjuan <dong.wenjuan@zte.com.cn>
(cherry picked from commit b3dcaa337fa91b3123fa08e8b8dd2e81184a91dd)

doctor_tests/common/utils.py
doctor_tests/installer/apex.py
doctor_tests/logger.py
doctor_tests/main.py
doctor_tests/scenario/network_failure.py

index 2e823ac..d2962a8 100644 (file)
@@ -47,6 +47,11 @@ def match_rep_in_file(regex, full_path):
     return None
 
 
+def get_doctor_test_root_dir():
+    current_dir = os.path.split(os.path.realpath(__file__))[0]
+    return os.path.dirname(current_dir)
+
+
 class SSHClient(object):
     def __init__(self, ip, username, password=None, pkey=None,
                  key_filename=None, log=None, look_for_keys=False,
index 2a1ce94..b64a366 100644 (file)
@@ -13,6 +13,7 @@ import pwd
 import stat
 import subprocess
 
+from doctor_tests.common.utils import get_doctor_test_root_dir
 from doctor_tests.common.utils import SSHClient
 from doctor_tests.installer.base import BaseInstaller
 
@@ -31,6 +32,7 @@ class ApexInstaller(BaseInstaller):
         self.controllers = list()
         self.controller_clients = list()
         self.servers = list()
+        self.test_dir = get_doctor_test_root_dir()
 
     def setup(self):
         self.log.info('Setup Apex installer start......')
@@ -52,14 +54,14 @@ class ApexInstaller(BaseInstaller):
             self.log.info('Already have SSH keys from Apex installer......')
             return self.key_file
 
-        self.client.scp('/home/stack/.ssh/id_rsa', './instack_key', method='get')
+        ssh_key = '{0}/{1}'.format(self.test_dir, 'instack_key')
+        self.client.scp('/home/stack/.ssh/id_rsa', ssh_key, method='get')
         user = getpass.getuser()
         uid = pwd.getpwnam(user).pw_uid
         gid = grp.getgrnam(user).gr_gid
-        os.chown('./instack_key', uid, gid)
-        os.chmod('./instack_key', stat.S_IREAD)
-        current_dir = os.curdir
-        self.key_file = '{0}/{1}'.format(current_dir, 'instack_key')
+        os.chown(ssh_key, uid, gid)
+        os.chmod(ssh_key, stat.S_IREAD)
+        self.key_file = ssh_key
         return self.key_file
 
     def get_controller_ips(self):
index 2da2c0d..e668946 100644 (file)
@@ -15,6 +15,8 @@
 import logging
 import os
 
+from doctor_tests.common.utils import get_doctor_test_root_dir
+
 
 class Logger(object):
     def __init__(self, logger_name):
@@ -36,12 +38,15 @@ class Logger(object):
             ch.setLevel(logging.INFO)
         self.logger.addHandler(ch)
 
-        filename = '%s.log' % logger_name
-        file_handler = logging.FileHandler(filename, mode='w')
+        test_dir = get_doctor_test_root_dir()
+        self.filename = '{0}/{1}.log'.format(test_dir, logger_name)
+        file_handler = logging.FileHandler(self.filename, mode='w')
         file_handler.setFormatter(formatter)
         file_handler.setLevel(logging.DEBUG)
-        self.filename = file_handler.baseFilename
         self.logger.addHandler(file_handler)
 
     def getLogger(self):
         return self.logger
+
+    def getLogFilename(self):
+        return self.filename
index 111c93d..b9a3443 100644 (file)
@@ -33,7 +33,9 @@ from doctor_tests.scenario.network_failure import NetworkFault
 from doctor_tests.user import User
 
 
-LOG = doctor_log.Logger('doctor').getLogger()
+Logger = doctor_log.Logger('doctor')
+LOG = Logger.getLogger()
+LogFile = Logger.getLogFilename()
 
 
 class DoctorTest(object):
@@ -106,7 +108,7 @@ class DoctorTest(object):
             # NOTE (umar) copy remote monitor.log file when monitor=collectd
             self.check_host_status(self.down_host.name, 'down')
 
-            notification_time = calculate_notification_time(LOG.filename)
+            notification_time = calculate_notification_time(LogFile)
             if notification_time < 1 and notification_time > 0:
                 LOG.info('doctor test successfully, notification_time=%s' % notification_time)
             else:
@@ -156,22 +158,22 @@ class DoctorTest(object):
         self.fault.get_disable_network_log()
 
     def run_profiler(self):
-        test_dir = os.path.split(os.path.realpath(__file__))[0]
 
+        net_down_log_file = self.fault.get_disable_network_log()
         reg = '(?<=doctor set link down at )\d+.\d+'
-        linkdown = float(match_rep_in_file(reg, LOG.filename).group(0))
+        linkdown = float(match_rep_in_file(reg, net_down_log_file).group(0))
 
         reg = '(.* doctor mark vm.* error at )(\d+.\d+)'
-        vmdown = float(match_rep_in_file(reg, LOG.filename).group(2))
+        vmdown = float(match_rep_in_file(reg, LogFile).group(2))
 
         reg = '(.* doctor mark host.* down at )(\d+.\d+)'
-        hostdown = float(match_rep_in_file(reg, LOG.filename).group(2))
+        hostdown = float(match_rep_in_file(reg, LogFile).group(2))
 
         reg = '(?<=doctor monitor detected at )\d+.\d+'
-        detected = float(match_rep_in_file(reg, LOG.filename).group(0))
+        detected = float(match_rep_in_file(reg, LogFile).group(0))
 
         reg = '(?<=doctor consumer notified at )\d+.\d+'
-        notified = float(match_rep_in_file(reg, LOG.filename).group(0))
+        notified = float(match_rep_in_file(reg, LogFile).group(0))
 
         # TODO(yujunz) check the actual delay to verify time sync status
         # expected ~1s delay from $trigger to $linkdown
index b94a622..b230943 100644 (file)
@@ -8,6 +8,7 @@
 ##############################################################################
 from doctor_tests.identity_auth import get_session
 from doctor_tests.os_clients import nova_client
+from doctor_tests.common.utils import get_doctor_test_root_dir
 from doctor_tests.common.utils import SSHClient
 
 LINK_DOWN_SCRIPT = """
@@ -29,8 +30,10 @@ class NetworkFault(object):
         self.log = log
         self.installer = installer
         self.nova = nova_client(self.conf.nova_version, get_session())
+        self.test_dir = get_doctor_test_root_dir()
         self.host = None
         self.GetLog = False
+        self.disable_network_log = None
 
     def start(self, host):
         self.log.info('fault inject start......')
@@ -45,20 +48,23 @@ class NetworkFault(object):
     def get_disable_network_log(self):
         if self.GetLog:
             self.log.info('Already get the disable_netork.log from down_host......')
-            return
+            return self.disable_network_log
         if self.host is not None:
             client = SSHClient(self.host.ip,
                                self.installer.node_user_name,
                                key_filename=self.installer.get_ssh_key_from_installer(),
                                look_for_keys=True,
                                log=self.log)
-            client.scp('disable_network.log', './disable_network.log', method='get')
+
+            self.disable_network_log = '{0}/{1}'.format(self.test_dir, 'disable_network.log')
+            client.scp('disable_network.log', self.disable_network_log, method='get')
             self.log.info('Get the disable_netork.log from down_host(host_name:%s, host_ip:%s)'
                           % (self.host.name, self.host.ip))
         self.GetLog = True
+        return self.disable_network_log
 
     def _set_link_down(self, compute_ip):
-        file_name = './disable_network.sh'
+        file_name = '{0}/{1}'.format(self.test_dir, 'disable_network.sh')
         with open(file_name, 'w') as file:
             file.write(LINK_DOWN_SCRIPT.format(compute_ip=compute_ip))
         client = SSHClient(compute_ip,
@@ -66,6 +72,6 @@ class NetworkFault(object):
                            key_filename=self.installer.get_ssh_key_from_installer(),
                            look_for_keys=True,
                            log=self.log)
-        client.scp('./disable_network.sh', 'disable_network.sh')
+        client.scp(file_name, 'disable_network.sh')
         command = 'bash disable_network.sh > disable_network.log 2>&1 &'
         client.ssh(command)