From 7884354c0fc741b1935b5fa8ea9e9ce53a27772a Mon Sep 17 00:00:00 2001 From: WilliButz Date: Fri, 31 May 2019 22:01:27 +0200 Subject: nixos/tests/prometheus-exporters: split into single tests Generates a set of tests, rather than one large test for all exporters. --- nixos/tests/prometheus-exporters.nix | 81 +++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 39 deletions(-) (limited to 'nixos/tests/prometheus-exporters.nix') diff --git a/nixos/tests/prometheus-exporters.nix b/nixos/tests/prometheus-exporters.nix index 140687a8182..ac50ca93489 100644 --- a/nixos/tests/prometheus-exporters.nix +++ b/nixos/tests/prometheus-exporters.nix @@ -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 - escape' = str: lib.replaceChars [''"'' "$" "\n"] [''\\\"'' "\\$" ""] str; + escape' = str: replaceChars [''"'' "$" "\n"] [''\\\"'' "\\$" ""] str; /* * The attrset `exporterTests` contains one attribute @@ -51,6 +58,25 @@ let 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 = { exporterConfig = { 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 = { exporterConfig = { enable = true; @@ -309,27 +316,23 @@ let ''; }; }; +in +mapAttrs (exporter: testConfig: (makeTest { + name = "prometheus-${exporter}-exporter"; - nodes = lib.mapAttrs (exporter: testConfig: lib.mkMerge [{ + nodes.${exporter} = 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 -{ - name = "prometheus-exporters"; + } testConfig.metricProvider or {}]; - inherit nodes testScript; + testScript = '' + ${"$"+exporter}->start(); + ${concatStringsSep " " (map (line: '' + ${"$"+exporter}->${line}; + '') (splitString "\n" (removeSuffix "\n" testConfig.exporterTest)))} + ${"$"+exporter}->shutdown(); + ''; - meta = with lib.maintainers; { + meta = with maintainers; { maintainers = [ willibutz ]; }; -}) +})) exporterTests -- cgit 1.4.1