From affce1e2464f226afb6902c5185fee80d847d857 Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Sun, 2 Apr 2017 02:21:59 +0300 Subject: [PATCH] nixos hibernate test: Use waitForOpenPort There was one confusing recent failure of this: http://cache.nixos.org/log/myla8bc17j8spmifdxmrz9jswxwsf5w6-vm-test-run-hibernate.drv I don't have any real ideas on what could cause the problem but there is at least one theoretical one: the system starts hibernating before the listener process manages to open the TCP port for listening, and it can't open it after resuming because not enough pages from the netcat binary have been paged in (and as the 9p filesystem holding it is now toast, they can't be loaded anymore). --- nixos/tests/hibernate.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nixos/tests/hibernate.nix b/nixos/tests/hibernate.nix index 7616a75b021..db58a2f5c85 100644 --- a/nixos/tests/hibernate.nix +++ b/nixos/tests/hibernate.nix @@ -13,7 +13,7 @@ import ./make-test.nix (pkgs: { networking.firewall.allowedTCPPorts = [ 4444 ]; - systemd.services.listener.serviceConfig.ExecStart = "${pkgs.netcat}/bin/nc -l 4444"; + systemd.services.listener.serviceConfig.ExecStart = "${pkgs.netcat}/bin/nc -l 4444 -k"; }; probe = { config, lib, pkgs, ...}: { @@ -32,6 +32,7 @@ import ./make-test.nix (pkgs: { $machine->succeed("mkswap /dev/vdb"); $machine->succeed("swapon -a"); $machine->startJob("listener"); + $machine->waitForOpenPort(4444); $machine->succeed("systemctl hibernate &"); $machine->waitForShutdown; $machine->start;