From e63d30cd5b41ca7ad75648b08f9887b5563074c5 Mon Sep 17 00:00:00 2001 From: Pavel Shirshov Date: Mon, 18 Dec 2017 14:09:58 -0800 Subject: [PATCH] Improve conftest.py. Change orchagent debug level. Store logs after each test --- tests/conftest.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index d7388125bc..460f57d9d1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,4 +1,5 @@ import os +import os.path import re import time import docker @@ -9,6 +10,10 @@ def pytest_addoption(parser): parser.addoption("--dvsname", action="store", default=None, help="dvs name") + parser.addoption("--get_logs", action="store_true", + default=False, help="Get log files from the dvs test container") + parser.addoption("--orchagent_loglevel", action="store", default="NOTICE", + help="Log level for orchagent") class AsicDbValidator(object): def __init__(self, dvs): @@ -206,9 +211,28 @@ def init_asicdb_validator(self): def runcmd(self, cmd): return self.ctn.exec_run(cmd) + def get_file(self, docker_path, local_filename): + output = self.ctn.exec_run("cat %s" % docker_path) + with open(local_filename, "w") as fp: + fp.write(output) + @pytest.yield_fixture(scope="module") def dvs(request): name = request.config.getoption("--dvsname") + get_logs = request.config.getoption("--get_logs") + orch_log_level = request.config.getoption("--orchagent_loglevel") + dvs = DockerVirtualSwitch(name) + dvs.ctn.exec_run("swssloglevel -l %s -c orchagent" % orch_log_level) + yield dvs + + if get_logs: + path = "logs_%s/" % request.node.name + if not os.path.exists(path): + os.makedirs(path) + dvs.get_file("/var/log/syslog", "%s/syslog" % path) + dvs.get_file("/var/log/swss/sairedis.rec", "%s/sairedis.rec" % path) + dvs.get_file("/var/log/swss/swss.rec", "%s/swss.rec" % path) + dvs.destroy()