121 lines
3 KiB
Nix
121 lines
3 KiB
Nix
{ system-manager
|
|
, system
|
|
}:
|
|
|
|
let
|
|
testConfig = { lib, pkgs, ... }: {
|
|
config = {
|
|
nixpkgs.hostPlatform = "x86_64-linux";
|
|
|
|
services.nginx.enable = true;
|
|
|
|
environment.etc = {
|
|
foo = {
|
|
text = ''
|
|
This is just a test!
|
|
'';
|
|
target = "foo_test";
|
|
};
|
|
|
|
"foo.conf".text = ''
|
|
launch_the_rockets = true
|
|
'';
|
|
|
|
"baz/bar/foo2" = {
|
|
text = ''
|
|
Another test!
|
|
'';
|
|
mode = "symlink";
|
|
};
|
|
|
|
foo3 = {
|
|
text = "boo!";
|
|
mode = "0700";
|
|
user = "root";
|
|
group = "root";
|
|
};
|
|
|
|
"a/nested/example/foo3" = {
|
|
text = "boo!";
|
|
mode = "0764";
|
|
user = "root";
|
|
group = "root";
|
|
};
|
|
|
|
"a/nested/example2/foo3" = {
|
|
text = "boo!";
|
|
mode = "0764";
|
|
user = "root";
|
|
group = "root";
|
|
};
|
|
|
|
out-of-store = {
|
|
source = "/run/systemd/system/";
|
|
};
|
|
};
|
|
systemd.services =
|
|
lib.listToAttrs
|
|
(lib.flip lib.genList 10 (ix:
|
|
lib.nameValuePair "service-${toString ix}"
|
|
{
|
|
enable = true;
|
|
description = "service-${toString ix}";
|
|
wants = [ "network-online.target" ];
|
|
after = [
|
|
"network-online.target"
|
|
];
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
RemainAfterExit = true;
|
|
ExecReload = "${lib.getBin pkgs.coreutils}/bin/true";
|
|
};
|
|
wantedBy = [ "system-manager.target" ];
|
|
requiredBy = lib.mkIf (ix > 5) [ "service-0.service" ];
|
|
script = ''
|
|
sleep ${if ix > 5 then "2" else "1"}
|
|
'';
|
|
})
|
|
);
|
|
};
|
|
};
|
|
in
|
|
system-manager.lib.make-vm-test {
|
|
inherit system;
|
|
modules = [
|
|
({ config, ... }:
|
|
let
|
|
inherit (config) hostPkgs;
|
|
in
|
|
{
|
|
nodes = {
|
|
node1 = { config, ... }: {
|
|
modules = [
|
|
testConfig
|
|
];
|
|
|
|
virtualisation.rootImage = system-manager.lib.prepareUbuntuImage {
|
|
inherit hostPkgs;
|
|
nodeConfig = config;
|
|
image = system-manager.lib.images.ubuntu_22_10_cloudimg;
|
|
};
|
|
};
|
|
};
|
|
|
|
testScript = ''
|
|
# Start all machines in parallel
|
|
start_all()
|
|
|
|
node1.wait_for_unit("default.target")
|
|
|
|
node1.execute("/system-manager-profile/bin/activate")
|
|
node1.wait_for_unit("system-manager.target")
|
|
|
|
node1.wait_for_unit("service-9.service")
|
|
node1.wait_for_file("/etc/baz/bar/foo2")
|
|
node1.wait_for_file("/etc/foo.conf")
|
|
node1.succeed("grep -F 'launch_the_rockets = true' /etc/foo.conf")
|
|
node1.fail("grep -F 'launch_the_rockets = false' /etc/foo.conf")
|
|
'';
|
|
})
|
|
];
|
|
}
|