]> git.puffer.fish Git - matthieu/frr.git/commitdiff
tests: update munet 0.14.13
authorChristian Hopps <chopps@labn.net>
Sat, 14 Sep 2024 00:04:13 +0000 (20:04 -0400)
committerChristian Hopps <chopps@labn.net>
Sat, 14 Sep 2024 01:21:13 +0000 (21:21 -0400)
- Improve remote CLI operation [improves xdist mode]

Signed-off-by: Christian Hopps <chopps@labn.net>
tests/topotests/munet/cli.py

index 01a7091512c7116a6e0919b49a0a7475b392bf40..cd642d423a6505ef3be4c337285f6df164701c59 100644 (file)
@@ -756,6 +756,8 @@ async def remote_cli(unet, prompt, title, background):
             unet.cli_sockpath = sockpath
             logging.info("server created on :\n%s\n", sockpath)
 
+        wait_tmux = bool(os.getenv("TMUX", "")) and not sys.stdin.isatty()
+
         # Open a new window with a new CLI
         python_path = await unet.async_get_exec_path(["python3", "python"])
         us = os.path.realpath(__file__)
@@ -765,7 +767,25 @@ async def remote_cli(unet, prompt, title, background):
         if prompt:
             cmd += f" --prompt='{prompt}'"
         cmd += " " + unet.cli_sockpath
-        unet.run_in_window(cmd, title=title, background=False)
+
+        channel = None
+        if wait_tmux:
+            from .base import Commander  # pylint: disable=import-outside-toplevel
+
+            channel = "{}-{}".format(os.getpid(), Commander.tmux_wait_gen)
+            logger.info("XXX channel is %s", channel)
+            # If we don't have a tty to pause on pause for tmux windows to exit
+            if channel is not None:
+                Commander.tmux_wait_gen += 1
+
+        unet.run_in_window(cmd, title=title, background=False, wait_for=channel)
+
+        if wait_tmux and channel:
+            from .base import commander  # pylint: disable=import-outside-toplevel
+
+            await commander.async_cmd_raises(
+                [commander.get_exec_path("tmux"), "wait", channel]
+            )
     except Exception as error:
         logging.error("cli server: unexpected exception: %s", error)