parent
44099371b2
commit
c740f0d400
@ -0,0 +1,56 @@ |
||||
# 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"); |
||||
''; |
||||
}) |
Loading…
Reference in new issue