diff --git a/cluster/services/wireguard/default.nix b/cluster/services/wireguard/default.nix index 54b893a..b3ba747 100644 --- a/cluster/services/wireguard/default.nix +++ b/cluster/services/wireguard/default.nix @@ -93,5 +93,9 @@ in nodes = config.services.wireguard.nodes.mesh; shared = false; }; + simulacrum = { + enable = true; + settings = ./test.nix; + }; }; } diff --git a/cluster/services/wireguard/test.nix b/cluster/services/wireguard/test.nix new file mode 100644 index 0000000..dfa7e92 --- /dev/null +++ b/cluster/services/wireguard/test.nix @@ -0,0 +1,26 @@ +{ cluster, lib, ... }: + +{ + testScript = '' + start_all() + ${lib.pipe cluster.config.services.wireguard.nodes.mesh [ + (map (node: /*python*/ '' + ${node}.wait_for_unit("wireguard-wgmesh.target") + '')) + (lib.concatStringsSep "\n") + ]} + + ${lib.pipe cluster.config.services.wireguard.nodes.mesh [ + (map (node: /*python*/ '' + with subtest("${node} can reach all other nodes"): + ${lib.pipe (cluster.config.services.wireguard.otherNodes.mesh node) [ + (map (peer: /*python*/ '' + ${node}.succeed("ping -c3 ${cluster.config.hostLinks.${peer}.mesh.extra.meshIp}") + '')) + (lib.concatStringsSep "\n ") + ]} + '')) + (lib.concatStringsSep "\n") + ]} + ''; +}