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>
This commit is contained in:
Timotej Lazar 2022-07-15 07:56:06 +02:00 committed by Christopher Baines
parent 9238ba5874
commit 6a2a8ca1f5
No known key found for this signature in database
GPG key ID: 5E28A33B0B84F577
2 changed files with 15 additions and 8 deletions

View file

@ -652,8 +652,6 @@ (define (guix-data-service-shepherd-services config)
#:user #$user #:user #$user
#:group #$group #:group #$group
#:pid-file "/var/run/guix-data-service/pid" #:pid-file "/var/run/guix-data-service/pid"
;; Allow time for migrations to run
#:pid-file-timeout 120
#:environment-variables #:environment-variables
`(,(string-append `(,(string-append
"GUIX_LOCPATH=" #$glibc-utf8-locales "/lib/locale") "GUIX_LOCPATH=" #$glibc-utf8-locales "/lib/locale")

View file

@ -222,14 +222,23 @@ (define marionette
((pid) (number? pid)))))) ((pid) (number? pid))))))
marionette)) 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" (test-equal "http-get"
200 200
(let-values (try-http-get 12))
(((response text)
(http-get #$(simple-format
#f "http://localhost:~A/healthcheck" forwarded-port)
#:decode-body? #t)))
(response-code response)))
(test-end)))) (test-end))))