forked from mirrors/nixpkgs
e2372502d3
The motivation for this change is the following: As gnu-netcat, e. g. does not support ipv6, it is not suitable as default netcat. This commit also fixes all obvious build issues caused by this change.
43 lines
1.3 KiB
Nix
43 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";
|
|
};
|
|
|
|
probe = { config, lib, 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->succeed("systemctl hibernate &");
|
|
$machine->waitForShutdown;
|
|
$machine->start;
|
|
$probe->waitForUnit("network.target");
|
|
$probe->waitUntilSucceeds("echo test | nc machine 4444");
|
|
'';
|
|
|
|
})
|