diff options
author | Giacomo Leidi <goodoldpaul@autistici.org> | 2025-01-06 22:05:51 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2025-01-11 23:36:58 +0100 |
commit | b7746ad83f51f09c5d443b550563b85c49d0190f (patch) | |
tree | 6ed73088301c52635110bcd93147ae934d778ceb /gnu/tests | |
parent | 5ee26f0bf427608697a976c5261ac4588249809c (diff) |
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>
Diffstat (limited to 'gnu/tests')
-rw-r--r-- | gnu/tests/containers.scm | 113 |
1 files changed, 60 insertions, 53 deletions
diff --git a/gnu/tests/containers.scm b/gnu/tests/containers.scm index ba2fb22df6..69cd311c82 100644 --- a/gnu/tests/containers.scm +++ b/gnu/tests/containers.scm @@ -1,5 +1,5 @@ ;;; 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. ;;; @@ -97,17 +97,65 @@ (test-runner-current (system-test-runner #$output)) (test-begin "rootless-podman") - - (test-assert "service started" - (marionette-eval - '(begin - (use-modules (gnu services herd)) - (match (start-service 'cgroups2-fs-owner) - (#f #f) - ;; herd returns (running #f), likely because of one shot, - ;; so consider any non-error a success. - (('service response-parts ...) #t))) - marionette)) + (marionette-eval + '(begin + (use-modules (gnu services herd)) + (wait-for-service 'file-system-/sys/fs/cgroup)) + marionette) + + (test-assert "services started successfully and /sys/fs/cgroup has correct permissions" + (begin + (define (run-test) + (marionette-eval + `(begin + (use-modules (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* ((bash + ,(string-append #$bash "/bin/bash")) + (response1 + (slurp bash "-c" + (string-append "ls -la /sys/fs/cgroup | " + "grep -E ' \\./?$' | awk '{ print $4 }'"))) + (response2 (slurp bash "-c" + (string-append "ls -l /sys/fs/cgroup/cgroup" + ".{procs,subtree_control,threads} | " + "awk '{ print $4 }' | sort -u")))) + (list (string-join response1 "\n") (string-join response2 "\n")))) + 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") @@ -144,47 +192,6 @@ (sort-list (string-split (first response1) #\space) string<?))) marionette)) - (test-equal "/sys/fs/cgroup has correct permissions" - '("cgroup" "cgroup") - (marionette-eval - `(begin - (use-modules (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* ((bash - ,(string-append #$bash "/bin/bash")) - (response1 - (slurp bash "-c" - (string-append "ls -la /sys/fs/cgroup | " - "grep -E ' \\./?$' | awk '{ print $4 }'"))) - (response2 (slurp bash "-c" - (string-append "ls -l /sys/fs/cgroup/cgroup" - ".{procs,subtree_control,threads} | " - "awk '{ print $4 }' | sort -u")))) - (list (string-join response1 "\n") (string-join response2 "\n")))) - marionette)) - (test-equal "Load oci image and run it (unprivileged)" '("hello world" "hi!" "JSON!" #o1777) (marionette-eval |