Add localbackup clan service
This commit is contained in:
62
clanServices/localbackup/tests/vm/default.nix
Normal file
62
clanServices/localbackup/tests/vm/default.nix
Normal file
@@ -0,0 +1,62 @@
|
||||
{ ... }:
|
||||
{
|
||||
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"
|
||||
'';
|
||||
}
|
||||
Reference in New Issue
Block a user