~ruther/guix-local

bcb5724e595108b098dfa2ad6af97e10afd0407c — Maxim Cournoyer 1 year, 4 months ago a595a52
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) <extra-args>: New keyword argument.
(%nginx+anonip-os, nginx-anonip-tests, %test-nginx+anonip): New variables.

Change-Id: I7bbc8fb9f2ab33ce89bf1c0945d7ddbddf26a7ea
1 files changed, 40 insertions(+), 3 deletions(-)

M gnu/tests/web.scm
M gnu/tests/web.scm => gnu/tests/web.scm +40 -3
@@ 50,6 50,7 @@
  #: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 @@
                 (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 @@ HTTP-PORT."
                      marionette)))
                 '())

          #$extra-tests

          (test-end))))

  (gexp->derivation (string-append name "-test") test))


@@ 209,6 214,38 @@ HTTP-PORT."
   (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