Merge pull request #62329 from WilliButz/split-prometheus-tests
nixos/tests/prometheus-exporters: split into single tests
This commit is contained in:
commit
4bb4df32aa
@ -1,6 +1,13 @@
|
|||||||
import ./make-test.nix ({ lib, pkgs, ... }:
|
{ system ? builtins.currentSystem
|
||||||
|
, config ? {}
|
||||||
|
, pkgs ? import ../.. { inherit system config; }
|
||||||
|
}:
|
||||||
|
|
||||||
|
with pkgs.lib;
|
||||||
|
with import ../lib/testing.nix { inherit system pkgs; };
|
||||||
|
|
||||||
let
|
let
|
||||||
escape' = str: lib.replaceChars [''"'' "$" "\n"] [''\\\"'' "\\$" ""] str;
|
escape' = str: replaceChars [''"'' "$" "\n"] [''\\\"'' "\\$" ""] str;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The attrset `exporterTests` contains one attribute
|
* The attrset `exporterTests` contains one attribute
|
||||||
@ -51,6 +58,25 @@ let
|
|||||||
|
|
||||||
exporterTests = {
|
exporterTests = {
|
||||||
|
|
||||||
|
bind = {
|
||||||
|
exporterConfig = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
metricProvider = {
|
||||||
|
services.bind.enable = true;
|
||||||
|
services.bind.extraConfig = ''
|
||||||
|
statistics-channels {
|
||||||
|
inet 127.0.0.1 port 8053 allow { localhost; };
|
||||||
|
};
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
exporterTest = ''
|
||||||
|
waitForUnit("prometheus-bind-exporter.service");
|
||||||
|
waitForOpenPort(9119);
|
||||||
|
succeed("curl -sSf http://localhost:9119/metrics" | grep -q 'bind_query_recursions_total 0');
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
blackbox = {
|
blackbox = {
|
||||||
exporterConfig = {
|
exporterConfig = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@ -106,25 +132,6 @@ let
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
bind = {
|
|
||||||
exporterConfig = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
metricProvider = {
|
|
||||||
services.bind.enable = true;
|
|
||||||
services.bind.extraConfig = ''
|
|
||||||
statistics-channels {
|
|
||||||
inet 127.0.0.1 port 8053 allow { localhost; };
|
|
||||||
};
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
exporterTest = ''
|
|
||||||
waitForUnit("prometheus-bind-exporter.service");
|
|
||||||
waitForOpenPort(9119);
|
|
||||||
succeed("curl -sSf http://localhost:9119/metrics" | grep -q 'bind_query_recursions_total 0');
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
dovecot = {
|
dovecot = {
|
||||||
exporterConfig = {
|
exporterConfig = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@ -309,27 +316,23 @@ let
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
nodes = lib.mapAttrs (exporter: testConfig: lib.mkMerge [{
|
|
||||||
services.prometheus.exporters.${exporter} = testConfig.exporterConfig;
|
|
||||||
} testConfig.metricProvider or {}]) exporterTests;
|
|
||||||
|
|
||||||
testScript = lib.concatStrings (lib.mapAttrsToList (exporter: testConfig: (''
|
|
||||||
subtest "${exporter}", sub {
|
|
||||||
${"$"+exporter}->start();
|
|
||||||
${lib.concatStringsSep " " (map (line: ''
|
|
||||||
${"$"+exporter}->${line};
|
|
||||||
'') (lib.splitString "\n" (lib.removeSuffix "\n" testConfig.exporterTest)))}
|
|
||||||
${"$"+exporter}->shutdown();
|
|
||||||
};
|
|
||||||
'')) exporterTests);
|
|
||||||
in
|
in
|
||||||
{
|
mapAttrs (exporter: testConfig: (makeTest {
|
||||||
name = "prometheus-exporters";
|
name = "prometheus-${exporter}-exporter";
|
||||||
|
|
||||||
inherit nodes testScript;
|
nodes.${exporter} = mkMerge [{
|
||||||
|
services.prometheus.exporters.${exporter} = testConfig.exporterConfig;
|
||||||
|
} testConfig.metricProvider or {}];
|
||||||
|
|
||||||
meta = with lib.maintainers; {
|
testScript = ''
|
||||||
|
${"$"+exporter}->start();
|
||||||
|
${concatStringsSep " " (map (line: ''
|
||||||
|
${"$"+exporter}->${line};
|
||||||
|
'') (splitString "\n" (removeSuffix "\n" testConfig.exporterTest)))}
|
||||||
|
${"$"+exporter}->shutdown();
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with maintainers; {
|
||||||
maintainers = [ willibutz ];
|
maintainers = [ willibutz ];
|
||||||
};
|
};
|
||||||
})
|
})) exporterTests
|
||||||
|
Loading…
x
Reference in New Issue
Block a user