57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
		
		
			
		
	
	
			57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
|   | # Test for NixOS' container support. | ||
|  | 
 | ||
|  | import ./make-test.nix ({ pkgs, ...} : { | ||
|  |   name = "containers-ephemeral"; | ||
|  | 
 | ||
|  |   machine = { pkgs, ... }: { | ||
|  |     virtualisation.memorySize = 768; | ||
|  |     virtualisation.writableStore = true; | ||
|  | 
 | ||
|  |     containers.webserver = { | ||
|  |       ephemeral = true; | ||
|  |       privateNetwork = true; | ||
|  |       hostAddress = "10.231.136.1"; | ||
|  |       localAddress = "10.231.136.2"; | ||
|  |       config = { | ||
|  |         services.nginx = { | ||
|  |           enable = true; | ||
|  |           virtualHosts.localhost = { | ||
|  |             root = (pkgs.runCommand "localhost" {} ''
 | ||
|  |               mkdir "$out" | ||
|  |               echo hello world > "$out/index.html" | ||
|  |             '');
 | ||
|  |           }; | ||
|  |         }; | ||
|  |         networking.firewall.allowedTCPPorts = [ 80 ]; | ||
|  |       }; | ||
|  |     }; | ||
|  |   }; | ||
|  | 
 | ||
|  |   testScript = ''
 | ||
|  |     $machine->succeed("nixos-container list") =~ /webserver/ or die; | ||
|  | 
 | ||
|  |     # Start the webserver container. | ||
|  |     $machine->succeed("nixos-container start webserver"); | ||
|  | 
 | ||
|  |     # Check that container got its own root folder | ||
|  |     $machine->succeed("ls /run/containers/webserver"); | ||
|  | 
 | ||
|  |     # Check that container persistent directory is not created | ||
|  |     $machine->fail("ls /var/lib/containers/webserver"); | ||
|  | 
 | ||
|  |     # Since "start" returns after the container has reached | ||
|  |     # multi-user.target, we should now be able to access it. | ||
|  |     my $ip = $machine->succeed("nixos-container show-ip webserver"); | ||
|  |     chomp $ip; | ||
|  |     $machine->succeed("ping -n -c1 $ip"); | ||
|  |     $machine->succeed("curl --fail http://$ip/ > /dev/null"); | ||
|  | 
 | ||
|  |     # Stop the container. | ||
|  |     $machine->succeed("nixos-container stop webserver"); | ||
|  |     $machine->fail("curl --fail --connect-timeout 2 http://$ip/ > /dev/null"); | ||
|  | 
 | ||
|  |     # Check that container's root folder was removed | ||
|  |     $machine->fail("ls /run/containers/webserver"); | ||
|  |   '';
 | ||
|  | }) |