diff options
author | Richard Marko <srk@48.io> | 2021-02-24 14:10:22 +0100 |
---|---|---|
committer | Richard Marko <srk@48.io> | 2021-04-07 20:27:17 +0200 |
commit | b1672eee0cc014408bff056375436fb25d6235ab (patch) | |
tree | 77c7badb93c5385b45ea1abe1173802fd6430330 /nixos/tests/cntr.nix | |
parent | b132849daed0f3a4ad67551084eddb957a179de0 (diff) |
nixosTests.cntr: init
Diffstat (limited to 'nixos/tests/cntr.nix')
-rw-r--r-- | nixos/tests/cntr.nix | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/nixos/tests/cntr.nix b/nixos/tests/cntr.nix new file mode 100644 index 0000000000000..8cffd97459d00 --- /dev/null +++ b/nixos/tests/cntr.nix @@ -0,0 +1,63 @@ +# Test for cntr tool +{ system ? builtins.currentSystem, config ? { } +, pkgs ? import ../.. { inherit system config; }, lib ? pkgs.lib }: + +let + inherit (import ../lib/testing-python.nix { inherit system pkgs; }) makeTest; + + mkOCITest = backend: + makeTest { + name = "cntr-${backend}"; + + meta = { maintainers = with lib.maintainers; [ srk mic92 ]; }; + + nodes = { + ${backend} = { pkgs, ... }: { + environment.systemPackages = [ pkgs.cntr ]; + virtualisation.oci-containers = { + inherit backend; + containers.nginx = { + image = "nginx-container"; + imageFile = pkgs.dockerTools.examples.nginx; + ports = [ "8181:80" ]; + }; + }; + }; + }; + + testScript = '' + start_all() + ${backend}.wait_for_unit("${backend}-nginx.service") + result = ${backend}.wait_until_succeeds( + "cntr attach -t ${backend} nginx sh -- -c 'curl localhost | grep Hello'" + ) + assert "Hello" in result + ''; + }; + + mkContainersTest = makeTest { + name = "cntr-containers"; + + meta = with pkgs.lib.maintainers; { maintainers = [ sorki mic92 ]; }; + + machine = { lib, ... }: { + environment.systemPackages = [ pkgs.cntr ]; + containers.test = { + autoStart = true; + privateNetwork = true; + hostAddress = "172.16.0.1"; + localAddress = "172.16.0.2"; + config = { }; + }; + }; + + testScript = '' + machine.start() + machine.wait_for_unit("container@test.service") + machine.succeed("cntr attach test sh -- -c 'ping -c5 172.16.0.1'") + ''; + }; +in { + nixos-container = mkContainersTest; +} // (lib.foldl' (attrs: backend: attrs // { ${backend} = mkOCITest backend; }) + { } [ "docker" "podman" ]) |