diff options
author | Alyssa Ross <hi@alyssa.is> | 2023-09-22 19:21:26 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2023-09-22 19:21:26 +0000 |
commit | ea2acbed493e218f696673a004a95829392c5e33 (patch) | |
tree | c5716552f205bbf4d4addfa4675ea5073786bd06 /nixpkgs/nixos/lib | |
parent | 06ba6c84f858b011fb1132721e5d5e28fcda4a8a (diff) | |
parent | 8aa8cd68f4745eb92f003666bfd300f3e67cd9c1 (diff) | |
download | nixlib-ea2acbed493e218f696673a004a95829392c5e33.tar nixlib-ea2acbed493e218f696673a004a95829392c5e33.tar.gz nixlib-ea2acbed493e218f696673a004a95829392c5e33.tar.bz2 nixlib-ea2acbed493e218f696673a004a95829392c5e33.tar.lz nixlib-ea2acbed493e218f696673a004a95829392c5e33.tar.xz nixlib-ea2acbed493e218f696673a004a95829392c5e33.tar.zst nixlib-ea2acbed493e218f696673a004a95829392c5e33.zip |
Merge branch 'staging' of https://github.com/NixOS/nixpkgs
Diffstat (limited to 'nixpkgs/nixos/lib')
-rw-r--r-- | nixpkgs/nixos/lib/systemd-lib.nix | 6 | ||||
-rw-r--r-- | nixpkgs/nixos/lib/test-driver/test_driver/machine.py | 36 |
2 files changed, 22 insertions, 20 deletions
diff --git a/nixpkgs/nixos/lib/systemd-lib.nix b/nixpkgs/nixos/lib/systemd-lib.nix index 641b47def039..f6535b514065 100644 --- a/nixpkgs/nixos/lib/systemd-lib.nix +++ b/nixpkgs/nixos/lib/systemd-lib.nix @@ -274,7 +274,7 @@ in rec { }); in "${out}/bin/${scriptName}"; - unitConfig = { config, options, ... }: { + unitConfig = { config, name, options, ... }: { config = { unitConfig = optionalAttrs (config.requires != []) @@ -294,9 +294,9 @@ in rec { // optionalAttrs (config.requisite != []) { Requisite = toString config.requisite; } // optionalAttrs (config ? restartTriggers && config.restartTriggers != []) - { X-Restart-Triggers = "${pkgs.writeText "X-Restart-Triggers" (toString config.restartTriggers)}"; } + { X-Restart-Triggers = "${pkgs.writeText "X-Restart-Triggers-${name}" (toString config.restartTriggers)}"; } // optionalAttrs (config ? reloadTriggers && config.reloadTriggers != []) - { X-Reload-Triggers = "${pkgs.writeText "X-Reload-Triggers" (toString config.reloadTriggers)}"; } + { X-Reload-Triggers = "${pkgs.writeText "X-Reload-Triggers-${name}" (toString config.reloadTriggers)}"; } // optionalAttrs (config.description != "") { Description = config.description; } // optionalAttrs (config.documentation != []) { diff --git a/nixpkgs/nixos/lib/test-driver/test_driver/machine.py b/nixpkgs/nixos/lib/test-driver/test_driver/machine.py index 809fd690d717..06d952d64f4d 100644 --- a/nixpkgs/nixos/lib/test-driver/test_driver/machine.py +++ b/nixpkgs/nixos/lib/test-driver/test_driver/machine.py @@ -582,9 +582,7 @@ class Machine: # While sh is bash on NixOS, this is not the case for every distro. # We explicitly call bash here to allow for the driver to boot other distros as well. - out_command = ( - f"{timeout_str} bash -c {shlex.quote(command)} | (base64 -w 0; echo)\n" - ) + out_command = f"{timeout_str} bash -c {shlex.quote(command)} 2>/dev/null | (base64 -w 0; echo)\n" assert self.shell self.shell.send(out_command.encode()) @@ -736,7 +734,7 @@ class Machine: ) return output - def wait_until_tty_matches(self, tty: str, regexp: str) -> None: + def wait_until_tty_matches(self, tty: str, regexp: str, timeout: int = 900) -> None: """Wait until the visible output on the chosen TTY matches regular expression. Throws an exception on timeout. """ @@ -752,7 +750,7 @@ class Machine: return len(matcher.findall(text)) > 0 with self.nested(f"waiting for {regexp} to appear on tty {tty}"): - retry(tty_matches) + retry(tty_matches, timeout) def send_chars(self, chars: str, delay: Optional[float] = 0.01) -> None: """ @@ -764,7 +762,7 @@ class Machine: for char in chars: self.send_key(char, delay, log=False) - def wait_for_file(self, filename: str) -> None: + def wait_for_file(self, filename: str, timeout: int = 900) -> None: """ Waits until the file exists in the machine's file system. """ @@ -774,9 +772,11 @@ class Machine: return status == 0 with self.nested(f"waiting for file '{filename}'"): - retry(check_file) + retry(check_file, timeout) - def wait_for_open_port(self, port: int, addr: str = "localhost") -> None: + def wait_for_open_port( + self, port: int, addr: str = "localhost", timeout: int = 900 + ) -> None: """ Wait until a process is listening on the given TCP port and IP address (default `localhost`). @@ -787,9 +787,11 @@ class Machine: return status == 0 with self.nested(f"waiting for TCP port {port} on {addr}"): - retry(port_is_open) + retry(port_is_open, timeout) - def wait_for_closed_port(self, port: int, addr: str = "localhost") -> None: + def wait_for_closed_port( + self, port: int, addr: str = "localhost", timeout: int = 900 + ) -> None: """ Wait until nobody is listening on the given TCP port and IP address (default `localhost`). @@ -800,7 +802,7 @@ class Machine: return status != 0 with self.nested(f"waiting for TCP port {port} on {addr} to be closed"): - retry(port_is_closed) + retry(port_is_closed, timeout) def start_job(self, jobname: str, user: Optional[str] = None) -> Tuple[int, str]: return self.systemctl(f"start {jobname}", user) @@ -974,7 +976,7 @@ class Machine: """ return self._get_screen_text_variants([2])[0] - def wait_for_text(self, regex: str) -> None: + def wait_for_text(self, regex: str, timeout: int = 900) -> None: """ Wait until the supplied regular expressions matches the textual contents of the screen by using optical character recognition (see @@ -997,7 +999,7 @@ class Machine: return False with self.nested(f"waiting for {regex} to appear on screen"): - retry(screen_matches) + retry(screen_matches, timeout) def wait_for_console_text(self, regex: str, timeout: int | None = None) -> None: """ @@ -1148,7 +1150,7 @@ class Machine: self.send_key("ctrl-alt-delete") self.connected = False - def wait_for_x(self) -> None: + def wait_for_x(self, timeout: int = 900) -> None: """ Wait until it is possible to connect to the X server. """ @@ -1165,14 +1167,14 @@ class Machine: return status == 0 with self.nested("waiting for the X11 server"): - retry(check_x) + retry(check_x, timeout) def get_window_names(self) -> List[str]: return self.succeed( r"xwininfo -root -tree | sed 's/.*0x[0-9a-f]* \"\([^\"]*\)\".*/\1/; t; d'" ).splitlines() - def wait_for_window(self, regexp: str) -> None: + def wait_for_window(self, regexp: str, timeout: int = 900) -> None: """ Wait until an X11 window has appeared whose name matches the given regular expression, e.g., `wait_for_window("Terminal")`. @@ -1190,7 +1192,7 @@ class Machine: return any(pattern.search(name) for name in names) with self.nested("waiting for a window to appear"): - retry(window_is_visible) + retry(window_is_visible, timeout) def sleep(self, secs: int) -> None: # We want to sleep in *guest* time, not *host* time. |