mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2025-01-18 21:46:35 +01:00
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:
parent
5ee26f0bf4
commit
b7746ad83f
1 changed files with 59 additions and 52 deletions
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue