summaryrefslogtreecommitdiff
path: root/gnu/tests
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/tests')
-rw-r--r--gnu/tests/databases.scm6
-rw-r--r--gnu/tests/gdm.scm40
-rw-r--r--gnu/tests/lightdm.scm2
-rw-r--r--gnu/tests/pam.scm97
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 <[email protected]>.
+;;; Copyright © 2022⁠–⁠2023 Bruno Victal <[email protected]>.
;;;
;;; 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 <[email protected]>
+;;;
+;;; 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))))))