diff options
Diffstat (limited to 'nixos/tests/containers-portforward.nix')
-rw-r--r-- | nixos/tests/containers-portforward.nix | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/nixos/tests/containers-portforward.nix b/nixos/tests/containers-portforward.nix new file mode 100644 index 00000000000..6cecd72f1bd --- /dev/null +++ b/nixos/tests/containers-portforward.nix @@ -0,0 +1,59 @@ +let + hostIp = "192.168.0.1"; + hostPort = 10080; + containerIp = "192.168.0.100"; + containerPort = 80; +in + +import ./make-test-python.nix ({ pkgs, lib, ... }: { + name = "containers-portforward"; + meta = { + maintainers = with lib.maintainers; [ aristid aszlig eelco kampfschlaefer ianwookim ]; + }; + + machine = + { pkgs, ... }: + { imports = [ ../modules/installer/cd-dvd/channel.nix ]; + virtualisation.writableStore = true; + + containers.webserver = + { privateNetwork = true; + hostAddress = hostIp; + localAddress = containerIp; + forwardPorts = [ { protocol = "tcp"; hostPort = hostPort; containerPort = containerPort; } ]; + config = + { services.httpd.enable = true; + services.httpd.adminAddr = "foo@example.org"; + networking.firewall.allowedTCPPorts = [ 80 ]; + }; + }; + + virtualisation.additionalPaths = [ pkgs.stdenv ]; + }; + + testScript = + '' + container_list = machine.succeed("nixos-container list") + assert "webserver" in container_list + + # Start the webserver container. + machine.succeed("nixos-container start webserver") + + # wait two seconds for the container to start and the network to be up + machine.sleep(2) + + # Since "start" returns after the container has reached + # multi-user.target, we should now be able to access it. + # ip = machine.succeed("nixos-container show-ip webserver").strip() + machine.succeed("ping -n -c1 ${hostIp}") + machine.succeed("curl --fail http://${hostIp}:${toString hostPort}/ > /dev/null") + + # Stop the container. + machine.succeed("nixos-container stop webserver") + machine.fail("curl --fail --connect-timeout 2 http://${hostIp}:${toString hostPort}/ > /dev/null") + + # Destroying a declarative container should fail. + machine.fail("nixos-container destroy webserver") + ''; + +}) |