at 22.05-pre 1.8 kB view raw
1# Test for cntr tool 2{ system ? builtins.currentSystem, config ? { } 3, pkgs ? import ../.. { inherit system config; }, lib ? pkgs.lib }: 4 5let 6 inherit (import ../lib/testing-python.nix { inherit system pkgs; }) makeTest; 7 8 mkOCITest = backend: 9 makeTest { 10 name = "cntr-${backend}"; 11 12 meta = { maintainers = with lib.maintainers; [ sorki mic92 ]; }; 13 14 nodes = { 15 ${backend} = { pkgs, ... }: { 16 environment.systemPackages = [ pkgs.cntr ]; 17 virtualisation.oci-containers = { 18 inherit backend; 19 containers.nginx = { 20 image = "nginx-container"; 21 imageFile = pkgs.dockerTools.examples.nginx; 22 ports = [ "8181:80" ]; 23 }; 24 }; 25 }; 26 }; 27 28 testScript = '' 29 start_all() 30 ${backend}.wait_for_unit("${backend}-nginx.service") 31 result = ${backend}.wait_until_succeeds( 32 "cntr attach -t ${backend} nginx sh -- -c 'curl localhost | grep Hello'" 33 ) 34 assert "Hello" in result 35 ''; 36 }; 37 38 mkContainersTest = makeTest { 39 name = "cntr-containers"; 40 41 meta = with pkgs.lib.maintainers; { maintainers = [ sorki mic92 ]; }; 42 43 machine = { lib, ... }: { 44 environment.systemPackages = [ pkgs.cntr ]; 45 containers.test = { 46 autoStart = true; 47 privateNetwork = true; 48 hostAddress = "172.16.0.1"; 49 localAddress = "172.16.0.2"; 50 config = { }; 51 }; 52 }; 53 54 testScript = '' 55 machine.start() 56 machine.wait_for_unit("container@test.service") 57 machine.succeed("cntr attach test sh -- -c 'ping -c5 172.16.0.1'") 58 ''; 59 }; 60in { 61 nixos-container = mkContainersTest; 62} // (lib.foldl' (attrs: backend: attrs // { ${backend} = mkOCITest backend; }) 63 { } [ "docker" "podman" ])