summary refs log tree commit diff
diff options
context:
space:
mode:
authorMartin Weinelt <hexa@darmstadt.ccc.de>2021-07-14 00:43:17 +0200
committerMartin Weinelt <hexa@darmstadt.ccc.de>2021-07-14 01:36:04 +0200
commit2a93d57ebb8eea14720deca90f9b6860ae70dfa2 (patch)
tree05ec0bd5c9d7fd713728bcc7ad470e6ac047b275
parentc34384db1c3266c7f87fe49aebb5501609c3a2f4 (diff)
downloadnixpkgs-2a93d57ebb8eea14720deca90f9b6860ae70dfa2.tar
nixpkgs-2a93d57ebb8eea14720deca90f9b6860ae70dfa2.tar.gz
nixpkgs-2a93d57ebb8eea14720deca90f9b6860ae70dfa2.tar.bz2
nixpkgs-2a93d57ebb8eea14720deca90f9b6860ae70dfa2.tar.lz
nixpkgs-2a93d57ebb8eea14720deca90f9b6860ae70dfa2.tar.xz
nixpkgs-2a93d57ebb8eea14720deca90f9b6860ae70dfa2.tar.zst
nixpkgs-2a93d57ebb8eea14720deca90f9b6860ae70dfa2.zip
nixos/tests/kea: init
A simple DHCPv4 test case, with borrowed structure from the
systemd-networkd-dhcpserver test.
-rw-r--r--nixos/tests/all-tests.nix1
-rw-r--r--nixos/tests/kea.nix73
2 files changed, 74 insertions, 0 deletions
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index 2e4913dca47..e364bbe1bfa 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -203,6 +203,7 @@ in
   k3s = handleTest ./k3s.nix {};
   kafka = handleTest ./kafka.nix {};
   kbd-setfont-decompress = handleTest ./kbd-setfont-decompress.nix {};
+  kea = handleTest ./kea.nix {};
   keepalived = handleTest ./keepalived.nix {};
   keepassxc = handleTest ./keepassxc.nix {};
   kerberos = handleTest ./kerberos/default.nix {};
diff --git a/nixos/tests/kea.nix b/nixos/tests/kea.nix
new file mode 100644
index 00000000000..6b345893108
--- /dev/null
+++ b/nixos/tests/kea.nix
@@ -0,0 +1,73 @@
+import ./make-test-python.nix ({ pkgs, lib, ...}: {
+  meta.maintainers = with lib.maintainers; [ hexa ];
+
+  nodes = {
+    router = { config, pkgs, ... }: {
+      virtualisation.vlans = [ 1 ];
+
+      networking = {
+        useNetworkd = true;
+        useDHCP = false;
+        firewall.allowedUDPPorts = [ 67 ];
+      };
+
+      systemd.network = {
+        networks = {
+          "01-eth1" = {
+            name = "eth1";
+            networkConfig = {
+              Address = "10.0.0.1/30";
+            };
+          };
+        };
+      };
+
+      services.kea.dhcp4 = {
+        enable = true;
+        settings = {
+          valid-lifetime = 3600;
+          renew-timer = 900;
+          rebind-timer = 1800;
+
+          lease-database = {
+            type = "memfile";
+            persist = true;
+            name = "/var/lib/kea/dhcp4.leases";
+          };
+
+          interfaces-config = {
+            dhcp-socket-type = "raw";
+            interfaces = [
+              "eth1"
+            ];
+          };
+
+          subnet4 = [ {
+            subnet = "10.0.0.0/30";
+            pools = [ {
+              pool = "10.0.0.2 - 10.0.0.2";
+            } ];
+          } ];
+        };
+      };
+    };
+
+    client = { config, pkgs, ... }: {
+      virtualisation.vlans = [ 1 ];
+      systemd.services.systemd-networkd.environment.SYSTEMD_LOG_LEVEL = "debug";
+      networking = {
+        useNetworkd = true;
+        useDHCP = false;
+        firewall.enable = false;
+        interfaces.eth1.useDHCP = true;
+      };
+    };
+  };
+  testScript = { ... }: ''
+    start_all()
+    router.wait_for_unit("kea-dhcp4-server.service")
+    client.wait_for_unit("systemd-networkd-wait-online.service")
+    client.wait_until_succeeds("ping -c 5 10.0.0.1")
+    router.wait_until_succeeds("ping -c 5 10.0.0.2")
+  '';
+})