diff options
Diffstat (limited to 'gnu/tests')
-rw-r--r-- | gnu/tests/databases.scm | 6 | ||||
-rw-r--r-- | gnu/tests/gdm.scm | 40 | ||||
-rw-r--r-- | gnu/tests/lightdm.scm | 2 | ||||
-rw-r--r-- | gnu/tests/pam.scm | 97 |
4 files changed, 116 insertions, 29 deletions
diff --git a/gnu/tests/databases.scm b/gnu/tests/databases.scm index 2ca13577a1..92be1a829b 100644 --- a/gnu/tests/databases.scm +++ b/gnu/tests/databases.scm @@ -389,7 +389,11 @@ data double PRECISION NULL (define %mysql-os (simple-operating-system - (service mysql-service-type))) + (service mysql-service-type + (mysql-configuration + ;; Disable O_DIRECT since it's not supported on overlayfs. + ;; See <https://jira.mariadb.org/browse/MDEV-28751>. + (extra-content "innodb-flush-method = fsync"))))) (define* (run-mysql-test) "Run tests in %MYSQL-OS." diff --git a/gnu/tests/gdm.scm b/gnu/tests/gdm.scm index 70a86b9065..ec1df4b797 100644 --- a/gnu/tests/gdm.scm +++ b/gnu/tests/gdm.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2022 Bruno Victal <mirai@makinata.eu>. +;;; Copyright © 2022–2023 Bruno Victal <mirai@makinata.eu>. ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,36 +23,26 @@ #:use-module (gnu services desktop) #:use-module (gnu services xorg) #:use-module (gnu system) - #:use-module (gnu system file-systems) #:use-module (gnu system vm) #:use-module (guix gexp) #:use-module (ice-9 format) #:export (%test-gdm-x11 - %test-gdm-wayland - %test-gdm-wayland-tmpfs)) + %test-gdm-wayland)) -(define* (make-os #:key wayland? tmp-tmpfs?) +(define* (make-os #:key wayland?) (operating-system (inherit %simple-os) (services (modify-services %desktop-services (gdm-service-type config => (gdm-configuration (inherit config) - (wayland? wayland?))))) - (file-systems (if tmp-tmpfs? (cons (file-system - (mount-point "/tmp") - (device "none") - (type "tmpfs") - (flags '(no-dev no-suid)) - (check? #f)) - %base-file-systems) - %base-file-systems)))) - -(define* (run-gdm-test #:key wayland? tmp-tmpfs?) + (wayland? wayland?))))))) + +(define* (run-gdm-test #:key wayland?) "Run tests in a vm which has gdm running." (define os (marionette-operating-system - (make-os #:wayland? wayland? #:tmp-tmpfs? tmp-tmpfs?) + (make-os #:wayland? wayland?) #:imported-modules '((gnu services herd)))) (define vm @@ -60,7 +50,7 @@ (operating-system os) (memory-size 1024))) - (define name (format #f "gdm-~:[x11~;wayland~]~:[~;-tmpfs~]" wayland? tmp-tmpfs?)) + (define name (format #f "gdm-~:[x11~;wayland~]" wayland?)) (define test (with-imported-modules '((gnu build marionette)) @@ -69,8 +59,8 @@ (ice-9 format) (srfi srfi-64)) - (let* ((marionette (make-marionette (list #$vm))) - (expected-session-type #$(if wayland? "wayland" "x11"))) + (let ((marionette (make-marionette (list #$vm))) + (expected-session-type #$(if wayland? "wayland" "x11"))) (test-runner-current (system-test-runner #$output)) (test-begin #$name) @@ -86,6 +76,9 @@ (test-assert "gdm ready" (wait-for-file "/var/run/gdm/gdm.pid" marionette)) + ;; waiting for gdm.pid is not enough, tests may still sporadically fail. + (sleep 1) + (test-equal (string-append "session-type is " expected-session-type) expected-session-type (marionette-eval @@ -118,10 +111,3 @@ (name "gdm-wayland") (description "Basic tests for the GDM service. (Wayland)") (value (run-gdm-test #:wayland? #t)))) - -(define %test-gdm-wayland-tmpfs - (system-test - ;; See <https://issues.guix.gnu.org/57589>. - (name "gdm-wayland-tmpfs") - (description "Basic tests for the GDM service. (Wayland, /tmp as tmpfs)") - (value (run-gdm-test #:wayland? #t #:tmp-tmpfs? #t)))) diff --git a/gnu/tests/lightdm.scm b/gnu/tests/lightdm.scm index dda472bd74..6011d2c515 100644 --- a/gnu/tests/lightdm.scm +++ b/gnu/tests/lightdm.scm @@ -50,7 +50,7 @@ (service polkit-service-type) (service elogind-service-type) (service dbus-root-service-type) - x11-socket-directory-service)) + (service x11-socket-directory-service-type))) (define %lightdm-os (operating-system diff --git a/gnu/tests/pam.scm b/gnu/tests/pam.scm new file mode 100644 index 0000000000..5cf13d97d7 --- /dev/null +++ b/gnu/tests/pam.scm @@ -0,0 +1,97 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu tests pam) + #:use-module (gnu tests) + #:use-module (gnu services) + #:use-module (gnu services base) + #:use-module (gnu system) + #:use-module (gnu system pam) + #:use-module (gnu system vm) + #:use-module (guix gexp) + #:use-module (ice-9 format) + #:export (%test-pam-limits + %test-pam-limits-deprecated)) + + +;;; +;;; pam-limits-service-type +;;; + +(define pam-limit-entries + (list + (pam-limits-entry "@realtime" 'both 'rtprio 99) + (pam-limits-entry "@realtime" 'both 'memlock 'unlimited))) + +(define (run-test-pam-limits config) + "Run tests in a os with pam-limits-service-type configured." + (define os + (marionette-operating-system + (simple-operating-system + (service pam-limits-service-type config)))) + + (define vm + (virtual-machine os)) + + (define name (format #f "pam-limit-service~:[~;-deprecated~]" + (file-like? config))) + + (define test + (with-imported-modules '((gnu build marionette)) + #~(begin + (use-modules (gnu build marionette) + (srfi srfi-64)) + + (let ((marionette (make-marionette (list #$vm)))) + + (test-runner-current (system-test-runner #$output)) + + (test-begin #$name) + + (test-assert "/etc/security/limits.conf ready" + (wait-for-file "/etc/security/limits.conf" marionette)) + + (test-equal "/etc/security/limits.conf content matches" + #$(string-join (map pam-limits-entry->string pam-limit-entries) + "\n" 'suffix) + (marionette-eval + '(call-with-input-file "/etc/security/limits.conf" + get-string-all) + marionette)) + + (test-end))))) + + (gexp->derivation (string-append name "-test") test)) + +(define %test-pam-limits + (system-test + (name "pam-limits-service") + (description "Test that pam-limits-service can serialize its config +(as a list) to @file{limits.conf}.") + (value (run-test-pam-limits pam-limit-entries)))) + +(define %test-pam-limits-deprecated + (system-test + (name "pam-limits-service-deprecated") + (description "Test that pam-limits-service can serialize its config +(as a file-like object) to @file{limits.conf}.") + (value (run-test-pam-limits + (plain-file "limits.conf" + (string-join (map pam-limits-entry->string + pam-limit-entries) + "\n" 'suffix)))))) |