Skip to content

Commit

Permalink
Merge pull request #237840 from lilyinstarlight/fix/systemd-initrd-vc…
Browse files Browse the repository at this point in the history
…onsole-test

nixos/tests/systemd-initrd-vconsole: fix test and improve reliability
  • Loading branch information
Mic92 authored Jun 15, 2023
2 parents cc3e519 + 9fb9774 commit 4f992e8
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 6 deletions.
4 changes: 2 additions & 2 deletions nixos/lib/test-driver/test_driver/machine.py
Original file line number Diff line number Diff line change
Expand Up @@ -868,7 +868,7 @@ def wait_for_console_text(self, regex: str, timeout: int | None = None) -> None:
# to match multiline regexes.
console = io.StringIO()

def console_matches() -> bool:
def console_matches(_: Any) -> bool:
nonlocal console
try:
# This will return as soon as possible and
Expand All @@ -884,7 +884,7 @@ def console_matches() -> bool:
if timeout is not None:
retry(console_matches, timeout)
else:
while not console_matches():
while not console_matches(False):
pass

def send_key(
Expand Down
17 changes: 13 additions & 4 deletions nixos/tests/systemd-initrd-vconsole.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import ./make-test-python.nix ({ lib, pkgs, ... }: {
name = "systemd-initrd-vconsole";

nodes.machine = { pkgs, ... }: {
boot.kernelParams = [ "rd.systemd.unit=rescue.target" ];
boot.kernelParams = lib.mkAfter [ "rd.systemd.unit=rescue.target" "loglevel=3" "udev.log_level=3" "systemd.log_level=warning" ];

boot.initrd.systemd = {
enable = true;
Expand All @@ -20,14 +20,23 @@ import ./make-test-python.nix ({ lib, pkgs, ... }: {
machine.start()
machine.wait_for_console_text("Press Enter for maintenance")
machine.send_console("\n")
machine.wait_for_console_text("Logging in with home")
# Wait for shell to become ready
for _ in range(300):
machine.send_console("printf '%s to receive commands:\\n' Ready\n")
try:
machine.wait_for_console_text("Ready to receive commands:", timeout=1)
break
except Exception:
continue
else:
raise RuntimeError("Rescue shell never became ready")
# Check keymap
machine.send_console("(printf '%s to receive text: \\n' Ready && read text && echo \"$text\") </dev/tty1\n")
machine.send_console("(printf '%s to receive text:\\n' Ready && read text && echo \"$text\") </dev/tty1\n")
machine.wait_for_console_text("Ready to receive text:")
for key in "asdfjkl;\n":
machine.send_key(key)
machine.wait_for_console_text("arstneio")
machine.send_console("systemctl poweroff\n")
'';
})

0 comments on commit 4f992e8

Please sign in to comment.