diff options
Diffstat (limited to 'labernix/tests')
-rw-r--r-- | labernix/tests/heinrich.nix | 51 | ||||
-rw-r--r-- | labernix/tests/make-test.nix | 28 |
2 files changed, 79 insertions, 0 deletions
diff --git a/labernix/tests/heinrich.nix b/labernix/tests/heinrich.nix new file mode 100644 index 00000000..c524835e --- /dev/null +++ b/labernix/tests/heinrich.nix @@ -0,0 +1,51 @@ +import ./make-test.nix { + name = "heinrich"; + + nodes = let + common = { lib, ... }: { + networking.useNetworkd = true; + systemd.network.netdevs."40-eth0".netdevConfig = { + Name = "eth0"; + Kind = "dummy"; + }; + }; + in { + heinrich = { + imports = [ common ../machines/heinrich.nix ]; + virtualisation.vlans = [ 1 8 14 ]; + heinrich.internalInterface = "eth1"; + heinrich.externalInterface = "eth2"; + }; + hotelturm = { lib, ... }: { + imports = [ common ]; + virtualisation.vlans = [ 8 ]; + networking.useDHCP = false; + networking.interfaces.eth1.ip4 = lib.singleton { + address = "10.11.77.16"; + prefixLength = 24; + }; + }; + moritz = { lib, ... }: { + imports = [ common ]; + virtualisation.vlans = [ 14 ]; + networking.useDHCP = false; + networking.interfaces.eth1.ip4 = lib.singleton { + address = "192.168.0.1"; + prefixLength = 24; + }; + }; + client = { + imports = [ common ]; + virtualisation.vlans = [ 1 ]; + }; + }; + + testScript = '' + startAll; + $heinrich->waitForUnit("dnsmasq.service"); + $client->waitForUnit("network-interfaces.target"); + $client->waitForUnit("network.target"); + + $client->succeed("ip addr >&2"); + ''; +} diff --git a/labernix/tests/make-test.nix b/labernix/tests/make-test.nix new file mode 100644 index 00000000..10381afd --- /dev/null +++ b/labernix/tests/make-test.nix @@ -0,0 +1,28 @@ +f: { system ? builtins.currentSystem, ... } @ args: let + lib = import <nixpkgs/lib>; + + testLib = import <nixpkgs/nixos/lib/testing.nix> { + inherit system; + }; + + pkgs = import <nixpkgs> { inherit system; }; + + testArgs = if builtins.isFunction f then f (args // { + pkgs = pkgs // { + labernix = import ../pkgs { inherit pkgs; }; + }; + }) else f; + + nodes = testArgs.nodes or (if testArgs ? machine then { + inherit (testArgs) machine; + } else {}); + + injectCommon = name: conf: { + imports = [ ../common.nix conf ]; + }; + + testArgsWithCommon = removeAttrs testArgs [ "machine" ] // { + nodes = lib.mapAttrs injectCommon nodes; + }; + +in testLib.makeTest testArgsWithCommon |