tests: ssh: Generalize.

* gnu/tests/ssh.scm (%openssh-os): Rename to...
(%base-os): ... this.
[services]: Remove 'openssh-service-type' instance.
(os-with-service): New procedure.
(run-openssh-test): Rename to...
(run-ssh-test): ... this.  Add 'ssh-service' and 'pid-file' parameters.
Use 'os-with-service' to add SSH-SERVICE to %BASE-OS.  Honor PID-FILE.
(%test-openssh): Adjust accordingly.
This commit is contained in:
Ludovic Courtès 2016-10-03 15:14:46 +02:00
parent 26cfc415be
commit 0e59885060
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -33,7 +33,7 @@ (define-module (gnu tests ssh)
#:use-module (guix monads)
#:export (%test-openssh))
(define %openssh-os
(define %base-os
(operating-system
(host-name "komputilo")
(timezone "Europe/Berlin")
@ -43,18 +43,22 @@ (define %openssh-os
(file-systems %base-file-systems)
(firmware '())
(users %base-user-accounts)
(services (cons (dhcp-client-service)
%base-services))))
;; Allow root logins with an empty password to simplify testing.
(services (cons* (service openssh-service-type
(openssh-configuration
(permit-root-login #t)
(allow-empty-passwords? #t)))
(dhcp-client-service)
%base-services))))
(define (os-with-service service)
"Return a test operating system that runs SERVICE."
(operating-system
(inherit %base-os)
(services (cons service
(operating-system-user-services %base-os)))))
(define (run-openssh-test name)
(define (run-ssh-test name ssh-service pid-file)
"Run a test of an OS running SSH-SERVICE, which writes its PID to PID-FILE.
SSH-SERVICE must be configured to listen on port 22 and to allow for root and
empty-password logins."
(mlet* %store-monad ((os -> (marionette-operating-system
%openssh-os
(os-with-service ssh-service)
#:imported-modules '((gnu services herd)
(guix combinators))))
(command (system-qemu-image/shared-store-script
@ -98,7 +102,7 @@ (define (wait-for-file file)
(mkdir #$output)
(chdir #$output)
(test-begin "openssh")
(test-begin "ssh-daemon")
;; Wait for sshd to be up and running.
(test-eq "service running"
@ -112,7 +116,7 @@ (define (wait-for-file file)
;; Check sshd's PID file.
(test-equal "sshd PID"
(wait-for-file "/var/run/sshd.pid")
(wait-for-file #$pid-file)
(marionette-eval
'(begin
(use-modules (gnu services herd)
@ -155,4 +159,11 @@ (define %test-openssh
(system-test
(name "openssh")
(description "Connect to a running OpenSSH daemon.")
(value (run-openssh-test name))))
(value (run-ssh-test name
;; Allow root logins with an empty password to
;; simplify testing.
(service openssh-service-type
(openssh-configuration
(permit-root-login #t)
(allow-empty-passwords? #t)))
"/var/run/sshd.pid"))))