;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2023 Bruno Victal ;;; ;;; 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 . (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 '(begin (use-modules (rnrs io ports)) (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)))))) un-docker-system-test): Likewise. * gnu/tests/mail.scm (run-dovecot-test, run-getmail-test): Likewise. * gnu/tests/monitoring.scm (run-zabbix-server-test): Likewise. * gnu/tests/pam.scm (run-test-pam-limits): Likewise. * gnu/tests/reconfigure.scm (run-switch-to-system-test) (run-install-bootloader-test): Likewise. * gnu/tests/security-token.scm (run-pcscd-test): Likewise. * gnu/tests/install.scm (gui-test-program): Likewise. * gnu/tests/telephony.scm (run-jami-test): Add modules to the #:imported-modules argument of 'marionette-operating-system'. [test]: Remove them from 'with-imported-modules'; remove 'with-extensions'. Add "d-bus tooling loaded" test to set up %load-path and %load-compiled-path so the marionette process can find guile-ac-d-bus and guile-packrat. Ludovic Courtès 2022-11-20gnu: MariaDB: Update to 10.10.2....* gnu/packages/databases.scm (mariadb): Update to 10.9.3. [source](snippet): Remove adjustments for deprecated TokuDB. [arguments]: Remove obsolete #:configure-flags. Build with system libfmt. Adjust tests for 10.10.2, and mariadb_config file name. Remove patch phase. [native-inputs]: Remove obsolete patch. [inputs]: Add FMT. Change from OPENSSL-1.1 to OPENSSL. * gnu/tests/databases.scm (%mysql-os): Adjust config file so MariaDB works on overlayfs. Marius Bakke 2022-11-20tests: mysql: Wait for the socket before running queries....* gnu/tests/databases.scm (run-mysql-test): Add socket test. Marius Bakke 2022-01-29tests: Add system test for TimescaleDB....* gnu/tests/databases.scm (%timescaledb-os, run-timescaledb-test, %test-timescaledb): New variables. Marius Bakke 2022-01-29tests: postgresql: Test the default PostgreSQL....* gnu/tests/databases.scm (%postgresql-os): Change from POSTGRESQL-10 to POSTGRESQL. Marius Bakke