nixos/tests/prometheus-exporters: add test for prometheus-restic-exporter
This commit is contained in:
parent
d1f031cbbd
commit
da91e4d75b
2 changed files with 44 additions and 1 deletions
|
@ -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)))}
|
||||||
|
|
|
@ -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";
|
||||||
|
|
Loading…
Reference in a new issue