at 23.11-pre 2.0 kB view raw
1import ./make-test-python.nix ({ pkgs, lib, ... }: 2let 3 client_base = { 4 containers.test1 = { 5 autoStart = true; 6 config = { 7 environment.etc.check.text = "client_base"; 8 }; 9 }; 10 11 # prevent make-test-python.nix to change IP 12 networking.interfaces = { 13 eth1.ipv4.addresses = lib.mkOverride 0 [ ]; 14 }; 15 }; 16in { 17 name = "containers-reloadable"; 18 meta = { 19 maintainers = with lib.maintainers; [ danbst ]; 20 }; 21 22 nodes = { 23 client = { ... }: { 24 imports = [ client_base ]; 25 }; 26 27 client_c1 = { lib, ... }: { 28 imports = [ client_base ]; 29 30 containers.test1.config = { 31 environment.etc.check.text = lib.mkForce "client_c1"; 32 services.httpd.enable = true; 33 services.httpd.adminAddr = "nixos@example.com"; 34 }; 35 }; 36 client_c2 = { lib, ... }: { 37 imports = [ client_base ]; 38 39 containers.test1.config = { 40 environment.etc.check.text = lib.mkForce "client_c2"; 41 services.nginx.enable = true; 42 }; 43 }; 44 }; 45 46 testScript = {nodes, ...}: let 47 c1System = nodes.client_c1.config.system.build.toplevel; 48 c2System = nodes.client_c2.config.system.build.toplevel; 49 in '' 50 client.start() 51 client.wait_for_unit("default.target") 52 53 assert "client_base" in client.succeed("nixos-container run test1 cat /etc/check") 54 55 with subtest("httpd is available after activating config1"): 56 client.succeed( 57 "${c1System}/bin/switch-to-configuration test >&2", 58 "[[ $(nixos-container run test1 cat /etc/check) == client_c1 ]] >&2", 59 "systemctl status httpd -M test1 >&2", 60 ) 61 62 with subtest("httpd is not available any longer after switching to config2"): 63 client.succeed( 64 "${c2System}/bin/switch-to-configuration test >&2", 65 "[[ $(nixos-container run test1 cat /etc/check) == client_c2 ]] >&2", 66 "systemctl status nginx -M test1 >&2", 67 ) 68 client.fail("systemctl status httpd -M test1 >&2") 69 ''; 70 71})