nixos/tests/prometheus-exporters: add test for prometheus-restic-exporter

This commit is contained in:
MinerSebas 2024-02-01 15:00:35 +01:00
parent d1f031cbbd
commit da91e4d75b
2 changed files with 44 additions and 1 deletions

View file

@ -1217,6 +1217,39 @@ let
''; '';
}; };
restic =
let
repository = "rest:http://127.0.0.1:8000";
passwordFile = pkgs.writeText "restic-test-password" "test-password";
in
{
exporterConfig = {
enable = true;
inherit repository passwordFile;
};
metricProvider = {
services.restic.server = {
enable = true;
extraFlags = [ "--no-auth" ];
};
environment.systemPackages = [ pkgs.restic ];
};
exporterTest = ''
# prometheus-restic-exporter.service fails without initialised repository
systemctl("stop prometheus-restic-exporter.service")
# Initialise the repository
wait_for_unit("restic-rest-server.service")
wait_for_open_port(8000)
succeed("restic init --repo ${repository} --password-file ${passwordFile}")
systemctl("start prometheus-restic-exporter.service")
wait_for_unit("prometheus-restic-exporter.service")
wait_for_open_port(9753)
wait_until_succeeds("curl -sSf localhost:9753/metrics | grep 'restic_check_success 1.0'")
'';
};
rspamd = { rspamd = {
exporterConfig = { exporterConfig = {
enable = true; enable = true;
@ -1722,7 +1755,12 @@ mapAttrs
testScript = '' testScript = ''
${nodeName}.start() ${nodeName}.start()
${concatStringsSep "\n" (map (line: ${concatStringsSep "\n" (map (line:
if (builtins.substring 0 1 line == " " || builtins.substring 0 1 line == ")") if builtins.any (b: b) [
(builtins.match "^[[:space:]]*$" line != null)
(builtins.substring 0 1 line == "#")
(builtins.substring 0 1 line == " ")
(builtins.substring 0 1 line == ")")
]
then line then line
else "${nodeName}.${line}" else "${nodeName}.${line}"
) (splitString "\n" (removeSuffix "\n" testConfig.exporterTest)))} ) (splitString "\n" (removeSuffix "\n" testConfig.exporterTest)))}

View file

@ -3,6 +3,7 @@
, fetchFromGitHub , fetchFromGitHub
, python3 , python3
, restic , restic
, nixosTests
}: }:
stdenvNoCC.mkDerivation rec { stdenvNoCC.mkDerivation rec {
@ -32,6 +33,10 @@ stdenvNoCC.mkDerivation rec {
runHook postInstall runHook postInstall
''; '';
passthru.tests = {
restic-exporter = nixosTests.prometheus-exporters.restic;
};
meta = with lib; { meta = with lib; {
description = "Prometheus exporter for the Restic backup system"; description = "Prometheus exporter for the Restic backup system";
homepage = "https://github.com/ngosang/restic-exporter"; homepage = "https://github.com/ngosang/restic-exporter";