services: tests: Add delay for rootless Podman system test.

* gnu/tests/containers.scm (run-rootless-podman-test): Add 60 seconds
long delay before tests are actually run.

Change-Id: Ifcf70f7258f9e0886bf829884d7daedc9803352b
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Giacomo Leidi 2025-01-06 22:05:51 +01:00 committed by Ludovic Courtès
parent 5ee26f0bf4
commit b7746ad83f
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2024 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2024, 2025 Giacomo Leidi <goodoldpaul@autistici.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -97,55 +97,15 @@ (define out-dir "/tmp")
(test-runner-current (system-test-runner #$output)) (test-runner-current (system-test-runner #$output))
(test-begin "rootless-podman") (test-begin "rootless-podman")
(test-assert "service started"
(marionette-eval (marionette-eval
'(begin '(begin
(use-modules (gnu services herd)) (use-modules (gnu services herd))
(match (start-service 'cgroups2-fs-owner) (wait-for-service 'file-system-/sys/fs/cgroup))
(#f #f) marionette)
;; herd returns (running #f), likely because of one shot,
;; so consider any non-error a success.
(('service response-parts ...) #t)))
marionette))
(test-equal "/sys/fs/cgroup/cgroup.subtree_control content is sound" (test-assert "services started successfully and /sys/fs/cgroup has correct permissions"
(list "cpu" "cpuset" "memory" "pids") (begin
(marionette-eval (define (run-test)
`(begin
(use-modules (srfi srfi-1)
(ice-9 popen)
(ice-9 match)
(ice-9 rdelim))
(define (read-lines file-or-port)
(define (loop-lines port)
(let loop ((lines '()))
(match (read-line port)
((? eof-object?)
(reverse lines))
(line
(loop (cons line lines))))))
(if (port? file-or-port)
(loop-lines file-or-port)
(call-with-input-file file-or-port
loop-lines)))
(define slurp
(lambda args
(let* ((port (apply open-pipe* OPEN_READ args))
(output (read-lines port))
(status (close-pipe port)))
output)))
(let* ((response1 (slurp
,(string-append #$coreutils "/bin/cat")
"/sys/fs/cgroup/cgroup.subtree_control")))
(sort-list (string-split (first response1) #\space) string<?)))
marionette))
(test-equal "/sys/fs/cgroup has correct permissions"
'("cgroup" "cgroup")
(marionette-eval (marionette-eval
`(begin `(begin
(use-modules (ice-9 popen) (use-modules (ice-9 popen)
@ -184,6 +144,53 @@ (define slurp
"awk '{ print $4 }' | sort -u")))) "awk '{ print $4 }' | sort -u"))))
(list (string-join response1 "\n") (string-join response2 "\n")))) (list (string-join response1 "\n") (string-join response2 "\n"))))
marionette)) marionette))
;; Allow services to come up on slower machines
(let loop ((attempts 0))
(if (= attempts 60)
(error "Services didn't come up after more than 60 seconds")
(if (equal? '("cgroup" "cgroup")
(run-test))
#t
(begin
(sleep 1)
(format #t "Services didn't come up yet, retrying with attempt ~a~%"
(+ 1 attempts))
(loop (+ 1 attempts))))))))
(test-equal "/sys/fs/cgroup/cgroup.subtree_control content is sound"
(list "cpu" "cpuset" "memory" "pids")
(marionette-eval
`(begin
(use-modules (srfi srfi-1)
(ice-9 popen)
(ice-9 match)
(ice-9 rdelim))
(define (read-lines file-or-port)
(define (loop-lines port)
(let loop ((lines '()))
(match (read-line port)
((? eof-object?)
(reverse lines))
(line
(loop (cons line lines))))))
(if (port? file-or-port)
(loop-lines file-or-port)
(call-with-input-file file-or-port
loop-lines)))
(define slurp
(lambda args
(let* ((port (apply open-pipe* OPEN_READ args))
(output (read-lines port))
(status (close-pipe port)))
output)))
(let* ((response1 (slurp
,(string-append #$coreutils "/bin/cat")
"/sys/fs/cgroup/cgroup.subtree_control")))
(sort-list (string-split (first response1) #\space) string<?)))
marionette))
(test-equal "Load oci image and run it (unprivileged)" (test-equal "Load oci image and run it (unprivileged)"
'("hello world" "hi!" "JSON!" #o1777) '("hello world" "hi!" "JSON!" #o1777)