From 8e0a75c82c538f69b26b554c900da2ddbe70622f Mon Sep 17 00:00:00 2001 From: ibizaman Date: Sun, 10 Nov 2024 16:58:07 +0100 Subject: [PATCH] fix backup restic test --- test/blocks/restic.nix | 90 +++++++++++++++++------------------------- 1 file changed, 37 insertions(+), 53 deletions(-) diff --git a/test/blocks/restic.nix b/test/blocks/restic.nix index 7fc2bea..d8c9ed2 100644 --- a/test/blocks/restic.nix +++ b/test/blocks/restic.nix @@ -32,19 +32,12 @@ let }; shb.restic.instances."testinstance" = { - enable = true; + settings = { + enable = true; - passphraseFile = toString (pkgs.writeText "passphrase" "PassPhrase"); + passphraseFile = toString (pkgs.writeText "passphrase" "PassPhrase"); - sourceDirectories = [ - "/opt/files/A" - "/opt/files/B" - ]; - - user = user; - - repositories = [ - { + repository = { path = "/opt/repos/A"; timerConfig = { OnCalendar = "00:00:00"; @@ -56,39 +49,45 @@ let A.source = config.shb.hardcodedsecret.A.path; B.source = config.shb.hardcodedsecret.B.path; }; - } - { - path = "/opt/repos/B"; - timerConfig = { - OnCalendar = "00:00:00"; - RandomizedDelaySec = "5h"; - }; - } - ]; + }; + }; - hooks.before_backup = ['' - echo $RUNTIME_DIRECTORY - if [ "$RUNTIME_DIRECTORY" = /run/restic-backups-testinstance_opt_repos_A ]; then - if ! [ -f /run/secrets_restic/restic-backups-testinstance_opt_repos_A ]; then - exit 10 + request = { + inherit user; + + sourceDirectories = [ + "/opt/files/A" + "/opt/files/B" + ]; + + hooks.before_backup = ['' + echo $RUNTIME_DIRECTORY + if [ "$RUNTIME_DIRECTORY" = /run/restic-backups-testinstance_opt_repos_A ]; then + if ! [ -f /run/secrets_restic/restic-backups-testinstance_opt_repos_A ]; then + exit 10 + fi + if [ -z "$A" ] || ! [ "$A" = "secretA" ]; then + echo "A:$A" + exit 11 + fi + if [ -z "$B" ] || ! [ "$B" = "secretB" ]; then + echo "B:$B" + exit 12 + fi fi - if [ -z "$A" ] || ! [ "$A" = "secretA" ]; then - echo "A:$A" - exit 11 - fi - if [ -z "$B" ] || ! [ "$B" = "secretB" ]; then - echo "B:$B" - exit 12 - fi - fi - '']; + '']; + }; }; }; extraPythonPackages = p: [ p.dictdiffer ]; skipTypeCheck = true; - testScript = '' + testScript = { nodes, ... }: let + provider = nodes.machine.shb.restic.instances."testinstance"; + backupService = provider.result.backupService; + restoreScript = provider.result.restoreScript; + in '' from dictdiffer import diff def list_files(dir): @@ -133,7 +132,7 @@ let }) with subtest("First backup in repo A"): - machine.succeed("systemctl start restic-backups-testinstance_opt_repos_A") + machine.succeed("systemctl start ${backupService}") with subtest("New content"): machine.succeed(""" @@ -150,9 +149,6 @@ let '/opt/files/A/fileB': 'repoA_fileB_2', }) - with subtest("Second backup in repo B"): - machine.succeed("systemctl start restic-backups-testinstance_opt_repos_B") - with subtest("Delete content"): machine.succeed(""" rm -r /opt/files/A /opt/files/B @@ -162,7 +158,7 @@ let with subtest("Restore initial content from repo A"): machine.succeed(""" - restic-testinstance_opt_repos_A restore latest -t / + ${restoreScript} restore latest """) assert_files("/opt/files", { @@ -171,18 +167,6 @@ let '/opt/files/A/fileA': 'repoA_fileA_1', '/opt/files/A/fileB': 'repoA_fileB_1', }) - - with subtest("Restore initial content from repo B"): - machine.succeed(""" - restic-testinstance_opt_repos_B restore latest -t / - """) - - assert_files("/opt/files", { - '/opt/files/B/fileA': 'repoB_fileA_2', - '/opt/files/B/fileB': 'repoB_fileB_2', - '/opt/files/A/fileA': 'repoA_fileA_2', - '/opt/files/A/fileB': 'repoA_fileB_2', - }) ''; };