diff options
author | Matt Layher <mdlayher@gmail.com> | 2022-03-29 14:44:07 -0400 |
---|---|---|
committer | Cole Helbling <cole.e.helbling@outlook.com> | 2022-03-30 08:55:15 -0700 |
commit | bb22a2debcbb2695a4eb1be9b319952f17cfefb2 (patch) | |
tree | 8446317743969ffe1199ff19cb6c526a14555b68 /nixos/tests | |
parent | ec0dd30e0bdd4088196892a8b6d07b09ca4eb1c1 (diff) | |
download | nixpkgs-bb22a2debcbb2695a4eb1be9b319952f17cfefb2.tar nixpkgs-bb22a2debcbb2695a4eb1be9b319952f17cfefb2.tar.gz nixpkgs-bb22a2debcbb2695a4eb1be9b319952f17cfefb2.tar.bz2 nixpkgs-bb22a2debcbb2695a4eb1be9b319952f17cfefb2.tar.lz nixpkgs-bb22a2debcbb2695a4eb1be9b319952f17cfefb2.tar.xz nixpkgs-bb22a2debcbb2695a4eb1be9b319952f17cfefb2.tar.zst nixpkgs-bb22a2debcbb2695a4eb1be9b319952f17cfefb2.zip |
nixos/zrepl: note about systemd unit, add snapshot test
Signed-off-by: Matt Layher <mdlayher@gmail.com>
Diffstat (limited to 'nixos/tests')
-rw-r--r-- | nixos/tests/all-tests.nix | 1 | ||||
-rw-r--r-- | nixos/tests/zrepl.nix | 66 |
2 files changed, 67 insertions, 0 deletions
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index ab6906cd24e..cb6089983f8 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -590,5 +590,6 @@ in zigbee2mqtt = handleTest ./zigbee2mqtt.nix {}; zoneminder = handleTest ./zoneminder.nix {}; zookeeper = handleTest ./zookeeper.nix {}; + zrepl = handleTest ./zrepl.nix {}; zsh-history = handleTest ./zsh-history.nix {}; } diff --git a/nixos/tests/zrepl.nix b/nixos/tests/zrepl.nix new file mode 100644 index 00000000000..85dd834a6aa --- /dev/null +++ b/nixos/tests/zrepl.nix @@ -0,0 +1,66 @@ +import ./make-test-python.nix ( + { + nodes.host = {config, pkgs, ...}: { + config = { + # Prerequisites for ZFS and tests. + boot.supportedFilesystems = [ "zfs" ]; + environment.systemPackages = [ pkgs.zrepl ]; + networking.hostId = "deadbeef"; + services.zrepl = { + enable = true; + settings = { + # Enable Prometheus output for status assertions. + global.monitoring = [{ + type = "prometheus"; + listen = ":9811"; + }]; + # Create a periodic snapshot job for an ephemeral zpool. + jobs = [{ + name = "snap_test"; + type = "snap"; + + filesystems."test" = true; + snapshotting = { + type = "periodic"; + prefix = "zrepl_"; + interval = "1s"; + }; + + pruning.keep = [{ + type = "last_n"; + count = 8; + }]; + }]; + }; + }; + }; + }; + + testScript = '' + start_all() + + with subtest("Wait for zrepl and network ready"): + host.wait_for_unit("network-online.target") + host.wait_for_unit("zrepl.service") + + with subtest("Create test zpool"): + # ZFS requires 64MiB minimum pool size. + host.succeed("fallocate -l 64MiB /root/zpool.img") + host.succeed("zpool create test /root/zpool.img") + + with subtest("Check for completed zrepl snapshot"): + # zrepl periodic snapshot job creates a snapshot with this prefix. + host.wait_until_succeeds("zfs list -t snapshot | grep -q zrepl_") + + with subtest("Verify HTTP monitoring server is configured"): + out = host.succeed("curl -f localhost:9811/metrics") + + assert ( + "zrepl_version_daemon" in out + ), "zrepl version metric was not found in Prometheus output" + + assert ( + "zrepl_zfs_snapshot_duration_count{filesystem=\"test\"}" in out + ), "zrepl snapshot counter for test was not found in Prometheus output" + ''; + }) |