summary refs log tree commit diff
path: root/gnu/tests
diff options
context:
space:
mode:
authorTimotej Lazar <timotej.lazar@araneo.si>2022-07-15 07:56:06 +0200
committerChristopher Baines <mail@cbaines.net>2022-07-15 09:38:42 +0100
commit6a2a8ca1f5560c37cdf20cbbac972db64a9dbac9 (patch)
tree68c86db44b73e9d7ab36705e7f0190c06ad7e3d7 /gnu/tests
parent9238ba58748d99970674e098c9b1b0ed8ca66c14 (diff)
downloadguix-6a2a8ca1f5560c37cdf20cbbac972db64a9dbac9.tar.gz
gnu: tests: Fix guix-data-service test.
Since revision 32, guix-data-service starts immediately but returns an HTTP
error code until initialization is complete. Adjust the test accordingly, and
remove the increased startup time limit.

* gnu/services/guix.scm (guix-data-service): Use default #:pid-file-timeout.
* gnu/tests/guix.scm (guix-data-service): Retry the http-get test several
times to give the service time to initialize.

Signed-off-by: Christopher Baines <mail@cbaines.net>
Diffstat (limited to 'gnu/tests')
-rw-r--r--gnu/tests/guix.scm21
1 files changed, 15 insertions, 6 deletions
diff --git a/gnu/tests/guix.scm b/gnu/tests/guix.scm
index a4c3e35e5d..ad0980a10c 100644
--- a/gnu/tests/guix.scm
+++ b/gnu/tests/guix.scm
@@ -222,14 +222,23 @@ host	all	all	::1/128 	trust"))))))
                      ((pid) (number? pid))))))
              marionette))
 
+          ;; The service starts immediately but replies with status 500 until
+          ;; initialization is complete, so keep trying for a while.
+          (define (try-http-get attempts)
+            (let ((status
+                   (let-values (((response text)
+                                 (http-get #$(simple-format
+                                              #f "http://localhost:~A/healthcheck"
+                                              forwarded-port))))
+                     (response-code response))))
+              (if (or (= status 200) (<= attempts 1))
+                  status
+                  (begin (sleep 5)
+                         (try-http-get (- attempts 1))))))
+
           (test-equal "http-get"
             200
-            (let-values
-                (((response text)
-                  (http-get #$(simple-format
-                               #f "http://localhost:~A/healthcheck" forwarded-port)
-                            #:decode-body? #t)))
-              (response-code response)))
+            (try-http-get 12))
 
           (test-end))))