archive: test the metric functions and the backup output filter, and skip absent summary fields
This commit is contained in:
parent
723ce866f1
commit
b60779093e
1 changed files with 263 additions and 6 deletions
59
nix/script-tests/archive-metrics.nix
Normal file
59
nix/script-tests/archive-metrics.nix
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
# `checks.script-test-archive-metrics` — runs the metric functions of the archive's
|
||||
# backup and prune scripts (../host-modules/lib/archive-backup.nix and
|
||||
# archive-server.nix) against a stub `curl` and a fake `restic`. The cases are in
|
||||
# ./archive-metrics.sh, which cuts each function out of the rendered script.
|
||||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
fakeRestic = pkgs.writeShellScriptBin "restic" ''
|
||||
# Answers from the files named by FAKE_SNAPSHOTS and FAKE_STATS; an unset
|
||||
# variable makes that subcommand fail.
|
||||
case " $* " in
|
||||
*" snapshots "*) [ -n "''${FAKE_SNAPSHOTS:-}" ] && cat "$FAKE_SNAPSHOTS" ;;
|
||||
*" stats "*) [ -n "''${FAKE_STATS:-}" ] && cat "$FAKE_STATS" ;;
|
||||
*) exit 1 ;;
|
||||
esac
|
||||
'';
|
||||
endpoint = "http://10.42.0.1:4318";
|
||||
in
|
||||
pkgs.runCommand "hyperhive-script-test-archive-metrics"
|
||||
{
|
||||
nativeBuildInputs = [
|
||||
pkgs.coreutils
|
||||
pkgs.jq
|
||||
];
|
||||
BACKUP_SCRIPT = pkgs.writeText "archive-backup.sh" (
|
||||
import ../host-modules/lib/archive-backup.nix { inherit (pkgs) lib; } {
|
||||
restic = fakeRestic;
|
||||
hive = "h";
|
||||
agentRoot = "/agents";
|
||||
url = "https://archive.test";
|
||||
scope = "paths";
|
||||
paths = [ "state" ];
|
||||
excludes = [ ];
|
||||
caBundle = null;
|
||||
otlpEndpoint = endpoint;
|
||||
}
|
||||
);
|
||||
PRUNE_SCRIPT = pkgs.writeText "archive-prune.sh" (
|
||||
(import ../host-modules/lib/archive-server.nix { inherit (pkgs) lib; } {
|
||||
rclone = pkgs.rclone;
|
||||
restic = fakeRestic;
|
||||
reposDir = "/repos";
|
||||
addr = "127.0.0.1:1";
|
||||
authFile = "/auth";
|
||||
authGroup = "g";
|
||||
retention = {
|
||||
keepWithin = null;
|
||||
keepLast = 1;
|
||||
};
|
||||
otlpEndpoint = endpoint;
|
||||
}).pruneScript
|
||||
);
|
||||
}
|
||||
''
|
||||
${pkgs.bash}/bin/bash ${./archive-metrics.sh}
|
||||
touch "$out"
|
||||
''
|
||||
Loading…
Reference in a new issue