From 743a9fc8850cd63f688181b39b59ed17094890ea Mon Sep 17 00:00:00 2001 From: Ingolf Wagner Date: Sun, 15 Sep 2024 07:22:02 +0700 Subject: [PATCH] :white_check_mark: add some smoke tests. --- machines/orbi/media-arr.nix | 28 +++++++++++++++++++++++++++- machines/orbi/service-forgejo.nix | 19 +++++++++++++++++++ machines/orbi/service-nix-cache.nix | 18 ++++++++++++++++++ machines/orbi/service-photoprism.nix | 18 ++++++++++++++++++ 4 files changed, 82 insertions(+), 1 deletion(-) diff --git a/machines/orbi/media-arr.nix b/machines/orbi/media-arr.nix index 05bfd6a..56b2bb6 100644 --- a/machines/orbi/media-arr.nix +++ b/machines/orbi/media-arr.nix @@ -1,4 +1,9 @@ -{ config, ... }: +{ + config, + lib, + pkgs, + ... +}: { networking.firewall.interfaces.wg0.allowedTCPPorts = [ 7878 @@ -11,6 +16,27 @@ 8989 8686 ]; + verify.localCommands = + let + curl = lib.getExe pkgs.curl; + grep = lib.getExe pkgs.gnugrep; + + command = domain: grepString: '' + if ${curl} -s -o /dev/null -w "%{http_code}" ${domain} | ${grep} -q "200"; then + if ${curl} -s ${domain} | ${grep} -q "${grepString}"; then + echo "[ OK ] Die Seite hat Statuscode 200 und enthält den String '${grepString}'." + else + echo "[Fail] Der Statuscode ist 200, aber die Seite enthält den String '${grepString}' nicht." + fi + else + echo "[Fail] Die Seite hat keinen Statuscode 200." + fi + ''; + in + { + sonarr = command "sonarr.ingolf-wagner.de" "Sonarr"; + radarr = command "radarr.ingolf-wagner.de" "Radarr"; + }; # download series services.sonarr = { diff --git a/machines/orbi/service-forgejo.nix b/machines/orbi/service-forgejo.nix index d71fec7..42aae68 100644 --- a/machines/orbi/service-forgejo.nix +++ b/machines/orbi/service-forgejo.nix @@ -6,6 +6,25 @@ }: { + verify.localCommands.forgejo = + let + domain = "https://git.ingolf-wagner.de/explore/repos"; + curl = lib.getExe pkgs.curl; + grep = lib.getExe pkgs.gnugrep; + grepString = "palo/nixos-config"; + in + '' + if ${curl} -s -o /dev/null -w "%{http_code}" ${domain} | ${grep} -q "200"; then + if ${curl} -s ${domain} | ${grep} -q "${grepString}"; then + echo "[ OK ] Die Seite hat Statuscode 200 und enthält den String '${grepString}'." + else + echo "[Fail] Der Statuscode ist 200, aber die Seite enthält den String '${grepString}' nicht." + fi + else + echo "[Fail] Die Seite hat keinen Statuscode 200." + fi + ''; + services.nginx = { enable = true; statusPage = true; diff --git a/machines/orbi/service-nix-cache.nix b/machines/orbi/service-nix-cache.nix index 21f93ef..a2535bc 100644 --- a/machines/orbi/service-nix-cache.nix +++ b/machines/orbi/service-nix-cache.nix @@ -33,6 +33,24 @@ }; verify.closed.public.ports.nix-serve = [ config.services.nix-serve.port ]; + verify.localCommands.nix-serve = + let + domain = "cache.${config.networking.hostName}.wg0/nix-cache-info"; + curl = lib.getExe pkgs.curl; + grep = lib.getExe pkgs.gnugrep; + grepString = "Priority: 50"; + in + '' + if ${curl} -s -o /dev/null -w "%{http_code}" ${domain} | ${grep} -q "200"; then + if ${curl} -s ${domain} | ${grep} -q "${grepString}"; then + echo "[ OK ] Die Seite hat Statuscode 200 und enthält den String '${grepString}'." + else + echo "[Fail] Der Statuscode ist 200, aber die Seite enthält den String '${grepString}' nicht." + fi + else + echo "[Fail] Die Seite hat keinen Statuscode 200." + fi + ''; services.nginx = { enable = true; diff --git a/machines/orbi/service-photoprism.nix b/machines/orbi/service-photoprism.nix index d3f3a05..fd72819 100644 --- a/machines/orbi/service-photoprism.nix +++ b/machines/orbi/service-photoprism.nix @@ -17,6 +17,24 @@ in # networking.firewall.interfaces.wg0.allowedUDPPorts = [ photoprismPort ]; verify.closed.public.ports.photoprism = [ photoprismPort ]; + verify.localCommands.photoprism = + let + domain = "http://10.100.0.1:2342/library/login"; + curl = lib.getExe pkgs.curl; + grep = lib.getExe pkgs.gnugrep; + grepString = "AI-Powered Photos App"; + in + '' + if ${curl} -s -o /dev/null -w "%{http_code}" ${domain} | ${grep} -q "200"; then + if ${curl} -s ${domain} | ${grep} -q "${grepString}"; then + echo "[ OK ] Die Seite hat Statuscode 200 und enthält den String '${grepString}'." + else + echo "[Fail] Der Statuscode ist 200, aber die Seite enthält den String '${grepString}' nicht." + fi + else + echo "[Fail] Die Seite hat keinen Statuscode 200." + fi + ''; containers.photoprism = { privateNetwork = false;