 beb8ca2887
			
		
	
	
		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");
 | |
|     '';
 | |
| 
 | |
| })
 |