From bcb5724e595108b098dfa2ad6af97e10afd0407c Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Fri, 1 Nov 2024 20:29:23 +0900 Subject: tests: web: Add nginx+anonip test. This test reproduces the problem reported in bug #59181 ("[berlin] web services fail to start on reboot due to anonip"). * gnu/tests/web.scm (run-webserver-test) : New keyword argument. (%nginx+anonip-os, nginx-anonip-tests, %test-nginx+anonip): New variables. Change-Id: I7bbc8fb9f2ab33ce89bf1c0945d7ddbddf26a7ea --- gnu/tests/web.scm | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) (limited to 'gnu') diff --git a/gnu/tests/web.scm b/gnu/tests/web.scm index f04f6b244a..84201e11c2 100644 --- a/gnu/tests/web.scm +++ b/gnu/tests/web.scm @@ -50,6 +50,7 @@ (define-module (gnu tests web) #:use-module (ice-9 match) #:export (%test-httpd %test-nginx + %test-nginx+anonip %test-varnish %test-php-fpm %test-hpcguix-web @@ -91,9 +92,11 @@ (define retry-on-error (sleep delay) (loop (+ 1 attempt))))))))) -(define* (run-webserver-test name test-os #:key (log-file #f) (http-port 8080)) - "Run tests in %NGINX-OS, which has nginx running and listening on -HTTP-PORT." +(define* (run-webserver-test name test-os #:key (log-file #f) (http-port 8080) + extra-tests) + "Run tests in %NGINX-OS, which has nginx running and listening on HTTP-PORT. +EXTRA-TESTS should be a sexp of gexp containing extra code to run as part of +the tests." (define os (marionette-operating-system test-os @@ -154,6 +157,8 @@ (define marionette marionette))) '()) + #$extra-tests + (test-end)))) (gexp->derivation (string-append name "-test") test)) @@ -209,6 +214,38 @@ (define %test-nginx (value (run-webserver-test name %nginx-os #:log-file "/var/log/nginx/access.log")))) +(define %nginx+anonip-os + (simple-operating-system + (service dhcp-client-service-type) + (service anonip-service-type + (anonip-configuration + (input "/var/run/anonip/access.log") + (output "/var/log/anonip/access.log") + (debug? #t))) + (service nginx-service-type + (nginx-configuration + (log-directory "/var/run/anonip/") + (server-blocks %nginx-servers) + (shepherd-requirement '(anonip-/var/log/anonip/access.log)))) + (simple-service 'make-http-root activation-service-type + %make-http-root))) + +(define nginx-anonip-tests + #~(test-assert "anonip service is running" + (marionette-eval + '(begin + (use-modules (gnu services herd)) + (wait-for-service 'anonip-/var/log/anonip/access.log)) + marionette))) + +(define %test-nginx+anonip + (system-test + (name "nginx+anonip") + (description "Run a NGINX server with logs anonymized by Anonip") + (value (run-webserver-test "nginx" %nginx+anonip-os + #:log-file "/var/log/anonip/access.log" + #:extra-tests nginx-anonip-tests)))) + ;;; ;;; Varnish -- cgit v1.2.3