Merge pull request #114241 from sorki/tests/cntr

authored by

Doron Behar and committed by
GitHub
3d72b0b6 5f746317

+69 -1
+1
nixos/tests/all-tests.nix
··· 69 69 cjdns = handleTest ./cjdns.nix {}; 70 70 clickhouse = handleTest ./clickhouse.nix {}; 71 71 cloud-init = handleTest ./cloud-init.nix {}; 72 + cntr = handleTest ./cntr.nix {}; 72 73 cockroachdb = handleTestOn ["x86_64-linux"] ./cockroachdb.nix {}; 73 74 consul = handleTest ./consul.nix {}; 74 75 containers-bridge = handleTest ./containers-bridge.nix {};
+63
nixos/tests/cntr.nix
··· 1 + # Test for cntr tool 2 + { system ? builtins.currentSystem, config ? { } 3 + , pkgs ? import ../.. { inherit system config; }, lib ? pkgs.lib }: 4 + 5 + let 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; [ srk 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 + }; 60 + in { 61 + nixos-container = mkContainersTest; 62 + } // (lib.foldl' (attrs: backend: attrs // { ${backend} = mkOCITest backend; }) 63 + { } [ "docker" "podman" ])
+5 -1
pkgs/applications/virtualization/cntr/default.nix
··· 1 - { lib, rustPlatform, fetchFromGitHub }: 1 + { lib, rustPlatform, fetchFromGitHub, nixosTests }: 2 2 3 3 rustPlatform.buildRustPackage rec { 4 4 pname = "cntr"; ··· 12 12 }; 13 13 14 14 cargoSha256 = "sha256-3e5wDne6Idu+kDinHPcAKHfH/d4DrGg90GkiMbyF280="; 15 + 16 + passthru.tests = { 17 + nixos = nixosTests.cntr; 18 + }; 15 19 16 20 meta = with lib; { 17 21 description = "A container debugging tool based on FUSE";