committed by
Brian McGee
parent
43bd4403c6
commit
42b58910a9
138
checks/data-mesher/default.nix
Normal file
138
checks/data-mesher/default.nix
Normal file
@@ -0,0 +1,138 @@
|
||||
(import ../lib/test-base.nix) (
|
||||
{ self, lib, ... }:
|
||||
let
|
||||
|
||||
inherit (self.lib.inventory) buildInventory;
|
||||
|
||||
machines = [
|
||||
"signer"
|
||||
"admin"
|
||||
"peer"
|
||||
];
|
||||
|
||||
serviceConfigs = buildInventory {
|
||||
inventory = {
|
||||
machines = lib.genAttrs machines (_: { });
|
||||
services = {
|
||||
data-mesher.default = {
|
||||
roles.peer.machines = [ "peer" ];
|
||||
roles.admin.machines = [ "admin" ];
|
||||
roles.signer.machines = [ "signer" ];
|
||||
};
|
||||
};
|
||||
modules = {
|
||||
data-mesher = self.clanModules.data-mesher;
|
||||
};
|
||||
};
|
||||
directory = ./.;
|
||||
};
|
||||
|
||||
commonConfig =
|
||||
{ config, ... }:
|
||||
{
|
||||
|
||||
imports = [ self.nixosModules.clanCore ];
|
||||
|
||||
clan.core.settings.directory = builtins.toString ./.;
|
||||
|
||||
environment.systemPackages = [
|
||||
config.services.data-mesher.package
|
||||
];
|
||||
|
||||
clan.core.vars.settings.publicStore = "in_repo";
|
||||
clan.core.vars.settings.secretStore = "vm";
|
||||
|
||||
clan.data-mesher.network.interface = "eth1";
|
||||
clan.data-mesher.bootstrapNodes = [
|
||||
"[2001:db8:1::1]:7946" # peer1
|
||||
"[2001:db8:1::2]:7946" # peer2
|
||||
];
|
||||
|
||||
# speed up for testing
|
||||
services.data-mesher.settings = {
|
||||
cluster.join_interval = lib.mkForce "2s";
|
||||
cluster.push_pull_interval = lib.mkForce "5s";
|
||||
};
|
||||
|
||||
systemd.tmpfiles.settings."vmsecrets" = {
|
||||
"/etc/secrets" = {
|
||||
C.argument = "${./vars/secret/${config.clan.core.settings.machine.name}}";
|
||||
z = {
|
||||
mode = "0700";
|
||||
user = "data-mesher";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
adminConfig = {
|
||||
imports = serviceConfigs.machines.admin.machineImports;
|
||||
|
||||
config.clan.data-mesher.network.tld = "foo";
|
||||
config.clan.core.settings.machine.name = "admin";
|
||||
};
|
||||
|
||||
peerConfig = {
|
||||
imports = serviceConfigs.machines.peer.machineImports;
|
||||
config.clan.core.settings.machine.name = "peer";
|
||||
};
|
||||
|
||||
signerConfig = {
|
||||
imports = serviceConfigs.machines.signer.machineImports;
|
||||
clan.core.settings.machine.name = "signer";
|
||||
};
|
||||
|
||||
in
|
||||
{
|
||||
name = "data-mesher";
|
||||
|
||||
nodes = {
|
||||
peer = {
|
||||
imports = [
|
||||
peerConfig
|
||||
commonConfig
|
||||
];
|
||||
};
|
||||
|
||||
admin = {
|
||||
imports = [
|
||||
adminConfig
|
||||
commonConfig
|
||||
];
|
||||
};
|
||||
|
||||
signer = {
|
||||
imports = [
|
||||
signerConfig
|
||||
commonConfig
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# TODO Add better test script.
|
||||
testScript = ''
|
||||
|
||||
def resolve(node, success = {}, fail = [], timeout = 60):
|
||||
for hostname, ips in success.items():
|
||||
for ip in ips:
|
||||
node.wait_until_succeeds(f"getent ahosts {hostname} | grep {ip}", timeout)
|
||||
|
||||
for hostname in fail:
|
||||
node.wait_until_fails(f"getent ahosts {hostname}")
|
||||
|
||||
start_all()
|
||||
|
||||
admin.wait_for_unit("data-mesher")
|
||||
signer.wait_for_unit("data-mesher")
|
||||
peer.wait_for_unit("data-mesher")
|
||||
|
||||
# check dns resolution
|
||||
for node in [admin, signer, peer]:
|
||||
resolve(node, {
|
||||
"admin.foo": ["2001:db8:1::1", "192.168.1.1"],
|
||||
"peer.foo": ["2001:db8:1::2", "192.168.1.2"],
|
||||
"signer.foo": ["2001:db8:1::3", "192.168.1.3"]
|
||||
})
|
||||
'';
|
||||
}
|
||||
)
|
||||
@@ -0,0 +1,3 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MCowBQYDK2VwAyEAV/XZHv1UQEEzfD2YbJP1Q2jd1ZDG+CP5wvGf/1hcR+Q=
|
||||
-----END PUBLIC KEY-----
|
||||
@@ -0,0 +1,3 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MCowBQYDK2VwAyEAKSSUXJCftt5Vif6ek57CNKBcDRNfrWrxZUHjAIFW9HY=
|
||||
-----END PUBLIC KEY-----
|
||||
@@ -0,0 +1,3 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MCowBQYDK2VwAyEAvLD0mHQA+hf9ItlUHD0ml3i5XEArmmjwCC5rYEOmzWs=
|
||||
-----END PUBLIC KEY-----
|
||||
@@ -0,0 +1,3 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MC4CAQAwBQYDK2VwBCIEIFX+AzHy821hHqWLPeK3nzRuHod3FNrnPfaDoFvpz6LX
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1,3 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MC4CAQAwBQYDK2VwBCIEIMwuDntiLoC7cFFyttGDf7cQWlOXOR0q90Jz3lEiuLg+
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1,3 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MC4CAQAwBQYDK2VwBCIEIPmH2+vjYG6UOp+/g0Iqu7yZZKId5jffrfsySE36yO+D
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1,3 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MC4CAQAwBQYDK2VwBCIEINS0tSnjHPG8IfpzQAS3wzoJA+4mYM70DIpltN8O4YD7
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1,3 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MCowBQYDK2VwAyEA3P18+R5Gt+Jn7wYXpWNTXM5pyWn2WiOWekYCzXqWPwg=
|
||||
-----END PUBLIC KEY-----
|
||||
Reference in New Issue
Block a user