63 lines
1.7 KiB
Nix
63 lines
1.7 KiB
Nix
{ ... }:
|
|
{
|
|
name = "service-localbackup";
|
|
|
|
clan = {
|
|
directory = ./.;
|
|
test.useContainers = true;
|
|
inventory = {
|
|
|
|
machines.machine = { };
|
|
|
|
instances = {
|
|
localbackup = {
|
|
module.name = "@clan/localbackup";
|
|
module.input = "self";
|
|
roles.default.machines."machine".settings = {
|
|
|
|
targets.hdd = {
|
|
directory = "/mnt/external-disk";
|
|
preMountHook = ''
|
|
touch /run/mount-external-disk
|
|
'';
|
|
postUnmountHook = ''
|
|
touch /run/unmount-external-disk
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
nodes.machine = {
|
|
clan.core.state.test-backups.folders = [ "/var/test-backups" ];
|
|
};
|
|
|
|
testScript = ''
|
|
import json
|
|
start_all()
|
|
|
|
machine.systemctl("start network-online.target")
|
|
machine.wait_for_unit("network-online.target")
|
|
|
|
# dummy data
|
|
machine.succeed("mkdir -p /var/test-backups")
|
|
machine.succeed("echo testing > /var/test-backups/somefile")
|
|
|
|
# create
|
|
machine.succeed("localbackup-create >&2")
|
|
machine.wait_until_succeeds("! systemctl is-active localbackup-job-serverone >&2")
|
|
|
|
# list
|
|
snapshot_list = machine.succeed("localbackup-list").strip()
|
|
assert json.loads(snapshot_list)[0]["name"].strip() == "hdd::/mnt/external-disk/snapshot.0"
|
|
|
|
# borgbackup restore
|
|
machine.succeed("rm -f /var/test-backups/somefile")
|
|
|
|
machine.succeed("NAME=/mnt/external-disk/snapshot.0 FOLDERS=/var/test-backups /run/current-system/sw/bin/localbackup-restore >&2")
|
|
assert machine.succeed("cat /var/test-backups/somefile").strip() == "testing", "restore failed"
|
|
'';
|
|
}
|