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