From: Christian Hopps Date: Wed, 19 Apr 2023 04:48:11 +0000 (-0400) Subject: tests: add --logd option X-Git-Tag: base_9.0~147^2~6 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=ff28990ee4312570c6e340b4421b6316d2c51a87;p=mirror%2Ffrr.git tests: add --logd option Signed-off-by: Christian Hopps --- diff --git a/tests/topotests/conftest.py b/tests/topotests/conftest.py index 87eee2e9f4..8e4d13df7d 100755 --- a/tests/topotests/conftest.py +++ b/tests/topotests/conftest.py @@ -61,6 +61,16 @@ def pytest_addoption(parser): help="Comma-separated list of routers to spawn gdb on, or 'all'", ) + parser.addoption( + "--logd", + action="append", + metavar="DAEMON[,ROUTER[,...]", + help=( + "Tail-F of DAEMON log file. Specify routers in comma-separated list after " + "daemon to limit to a subset of routers" + ), + ) + parser.addoption( "--pause", action="store_true", diff --git a/tests/topotests/lib/topotest.py b/tests/topotests/lib/topotest.py index c3d5f05f40..b034852de5 100644 --- a/tests/topotests/lib/topotest.py +++ b/tests/topotests/lib/topotest.py @@ -1747,6 +1747,16 @@ class Router(Node): os.path.join(self.daemondir, "bgpd") + " -v" ).split()[2] logger.info("{}: running version: {}".format(self.name, self.version)) + + logd_options = {} + for logd in g_pytest_config.get_option("--logd", []): + if "," in logd: + daemon, routers = logd.split(",", 1) + logd_options[daemon] = routers.split(",") + else: + daemon = logd + logd_options[daemon] = ["all"] + # If `daemons` was specified then some upper API called us with # specific daemons, otherwise just use our own configuration. daemons_list = [] @@ -1758,6 +1768,8 @@ class Router(Node): if self.daemons[daemon] == 1: daemons_list.append(daemon) + tail_log_files = [] + def start_daemon(daemon, extra_opts=None): daemon_opts = self.daemons_options.get(daemon, "") rediropt = " > {0}.out 2> {0}.err".format(daemon) @@ -1796,9 +1808,16 @@ class Router(Node): daemon, self.logdir, self.name ) - cmdopt = "{} --command-log-always --log file:{}.log --log-level debug".format( - daemon_opts, daemon - ) + cmdopt = "{} --command-log-always ".format(daemon_opts) + cmdopt += "--log file:{}.log --log-level debug".format(daemon) + + if daemon in logd_options: + logdopt = logd_options[daemon] + if "all" in logdopt or self.name in logdopt: + tail_log_files.append( + "{}/{}/{}.log".format(self.logdir, self.name, daemon) + ) + if extra_opts: cmdopt += " " + extra_opts @@ -1893,6 +1912,14 @@ class Router(Node): self.cmd("chown frr:frr -R {}/{}".format(self.logdir, self.name)) self.cmd("chmod ug+rwX,o+r -R {}/{}".format(self.logdir, self.name)) + if "frr" in logd_options: + logdopt = logd_options["frr"] + if "all" in logdopt or self.name in logdopt: + tail_log_files.append("{}/{}/frr.log".format(self.logdir, self.name)) + + for tailf in tail_log_files: + self.run_in_window("tail -f " + tailf, title=tailf, background=True) + return "" def killRouterDaemons(