forked from mirrors/nixpkgs
beb8ca2887
... that occurred mostly on i686. Improve timing. With this, the failures are no longer reproducible on my machine.
44 lines
1.3 KiB
Nix
44 lines
1.3 KiB
Nix
# Test whether hibernation from partition works.
|
|
|
|
import ./make-test.nix (pkgs: {
|
|
name = "hibernate";
|
|
|
|
nodes = {
|
|
machine = { config, lib, pkgs, ... }: with lib; {
|
|
virtualisation.emptyDiskImages = [ config.virtualisation.memorySize ];
|
|
|
|
systemd.services.backdoor.conflicts = [ "sleep.target" ];
|
|
|
|
swapDevices = mkOverride 0 [ { device = "/dev/vdb"; } ];
|
|
|
|
networking.firewall.allowedTCPPorts = [ 4444 ];
|
|
|
|
systemd.services.listener.serviceConfig.ExecStart = "${pkgs.netcat}/bin/nc -l 4444 -k";
|
|
};
|
|
|
|
probe = { pkgs, ...}: {
|
|
environment.systemPackages = [ pkgs.netcat ];
|
|
};
|
|
};
|
|
|
|
# 9P doesn't support reconnection to virtio transport after a hibernation.
|
|
# Therefore, machine just hangs on any Nix store access.
|
|
# To work around it we run a daemon which listens to a TCP connection and
|
|
# try to connect to it as a test.
|
|
|
|
testScript =
|
|
''
|
|
$machine->waitForUnit("multi-user.target");
|
|
$machine->succeed("mkswap /dev/vdb");
|
|
$machine->succeed("swapon -a");
|
|
$machine->startJob("listener");
|
|
$machine->waitForOpenPort(4444);
|
|
$machine->succeed("systemctl hibernate &");
|
|
$machine->waitForShutdown;
|
|
$probe->waitForUnit("multi-user.target");
|
|
$machine->start;
|
|
$probe->waitUntilSucceeds("echo test | nc machine 4444 -N");
|
|
'';
|
|
|
|
})
|