garage: migrate to clan.nixosTests module

This commit is contained in:
Jörg Thalheim
2025-06-17 19:26:25 +02:00
parent b91cf851f9
commit 68808ca792
2 changed files with 69 additions and 79 deletions

View File

@@ -1,18 +1,19 @@
{ lib, self, ... }: { lib, ... }:
let
module = lib.modules.importApply ./default.nix { };
in
{ {
clan.modules = { clan.modules = {
garage = lib.modules.importApply ./default.nix { }; garage = module;
}; };
perSystem = perSystem =
{ pkgs, ... }: { ... }:
{ {
checks = lib.optionalAttrs (pkgs.stdenv.isLinux) { clan.nixosTests.garage = {
garage = import ./tests/vm/default.nix { imports = [ ./tests/vm/default.nix ];
inherit pkgs;
clan-core = self; clan.modules."@clan/garage" = module;
nixosLib = import (self.inputs.nixpkgs + "/nixos/lib") { };
};
}; };
}; };
} }

View File

@@ -1,87 +1,76 @@
{ {
module,
pkgs, pkgs,
nixosLib,
clan-core,
... ...
}: }:
nixosLib.runTest ( {
{ ... }: name = "garage";
{
imports = [
clan-core.modules.nixosVmTest.clanTest
];
hostPkgs = pkgs; clan = {
directory = ./.;
inventory = {
machines.server = { };
name = "garage"; instances = {
garage-test = {
module.name = "@clan/garage";
roles.default.machines."server".settings = { };
};
};
};
};
clan = { nodes = {
directory = ./.; server = {
modules."@clan/garage" = ../../default.nix; services.garage = {
inventory = { enable = true;
machines.server = { }; package = pkgs.garage;
settings = {
instances = { metadata_dir = "/var/lib/garage/meta";
garage-test = { data_dir = "/var/lib/garage/data";
module.name = "@clan/garage"; db_engine = "sqlite";
roles.default.machines."server".settings = { };
replication_factor = 1;
rpc_bind_addr = "127.0.0.1:3901";
s3_api = {
api_bind_addr = "127.0.0.1:3900";
s3_region = "garage";
root_domain = ".s3.garage";
};
s3_web = {
bind_addr = "127.0.0.1:3902";
root_domain = ".web.garage";
};
admin = {
api_bind_addr = "127.0.0.1:3903";
}; };
}; };
}; };
}; };
};
nodes = { testScript = ''
server = { start_all()
services.garage = {
enable = true;
package = pkgs.garage;
settings = {
metadata_dir = "/var/lib/garage/meta"; server.wait_for_unit("network-online.target")
data_dir = "/var/lib/garage/data"; server.wait_for_unit("garage")
db_engine = "sqlite";
replication_factor = 1; # Check that garage is running
server.succeed("systemctl status garage")
rpc_bind_addr = "127.0.0.1:3901"; # Check that the data directories exist
server.succeed("test -d /var/lib/garage/meta")
server.succeed("test -d /var/lib/garage/data")
s3_api = { # Check that the ports are open to confirm that garage is running
api_bind_addr = "127.0.0.1:3900"; server.wait_until_succeeds("${pkgs.netcat}/bin/nc -z -v 127.0.0.1 3901")
s3_region = "garage"; server.succeed("${pkgs.netcat}/bin/nc -z -v 127.0.0.1 3900")
root_domain = ".s3.garage"; server.succeed("${pkgs.netcat}/bin/nc -z -v 127.0.0.1 3902")
}; server.succeed("${pkgs.netcat}/bin/nc -z -v 127.0.0.1 3903")
'';
s3_web = { }
bind_addr = "127.0.0.1:3902";
root_domain = ".web.garage";
};
admin = {
api_bind_addr = "127.0.0.1:3903";
};
};
};
};
};
testScript = ''
start_all()
server.wait_for_unit("network-online.target")
server.wait_for_unit("garage")
# Check that garage is running
server.succeed("systemctl status garage")
# Check that the data directories exist
server.succeed("test -d /var/lib/garage/meta")
server.succeed("test -d /var/lib/garage/data")
# Check that the ports are open to confirm that garage is running
server.wait_until_succeeds("${pkgs.netcat}/bin/nc -z -v 127.0.0.1 3901")
server.succeed("${pkgs.netcat}/bin/nc -z -v 127.0.0.1 3900")
server.succeed("${pkgs.netcat}/bin/nc -z -v 127.0.0.1 3902")
server.succeed("${pkgs.netcat}/bin/nc -z -v 127.0.0.1 3903")
'';
}
)