summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2017-03-31 22:13:50 +0200
committerLudovic Courtès <ludo@gnu.org>2017-04-01 00:45:18 +0200
commit892d9089a88abaa2ef1127f16308d03f4f08a4ce (patch)
treef6ea39e959f3d40e38f741be75d7d160c15e446d /gnu
parent9af7ecd9591b4eff41389291bbc586dcf09e2665 (diff)
tests: Introduce 'simple-operating-system' and use it.
* gnu/tests.scm (%simple-os): New macro. (simple-operating-system): New macro. * gnu/tests/base.scm (%simple-os): Define using 'simple-operating-system'. (%mcron-os): Use 'simple-operating-system'. * gnu/tests/mail.scm (%opensmtpd-os): Likewise. * gnu/tests/messaging.scm (%base-os, os-with-service): Remove. (run-xmpp-test): Use 'simple-operating-system'. * gnu/tests/networking.scm (%inetd-os): Likewise. * gnu/tests/ssh.scm (%base-os, os-with-service): Remove. (run-ssh-test): Use 'simple-operating-system'. * gnu/tests/web.scm (%nginx-os): Likewise.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/tests.scm43
-rw-r--r--gnu/tests/base.scm30
-rw-r--r--gnu/tests/mail.scm25
-rw-r--r--gnu/tests/messaging.scm27
-rw-r--r--gnu/tests/networking.scm57
-rw-r--r--gnu/tests/ssh.scm30
-rw-r--r--gnu/tests/web.scm26
7 files changed, 88 insertions, 150 deletions
diff --git a/gnu/tests.scm b/gnu/tests.scm
index 8abe6c608ba..e84d1ebb209 100644
--- a/gnu/tests.scm
+++ b/gnu/tests.scm
@@ -1,5 +1,5 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
3;;; 3;;;
4;;; This file is part of GNU Guix. 4;;; This file is part of GNU Guix.
5;;; 5;;;
@@ -21,7 +21,11 @@
21 #:use-module (guix utils) 21 #:use-module (guix utils)
22 #:use-module (guix records) 22 #:use-module (guix records)
23 #:use-module (gnu system) 23 #:use-module (gnu system)
24 #:use-module (gnu system grub)
25 #:use-module (gnu system file-systems)
26 #:use-module (gnu system shadow)
24 #:use-module (gnu services) 27 #:use-module (gnu services)
28 #:use-module (gnu services base)
25 #:use-module (gnu services shepherd) 29 #:use-module (gnu services shepherd)
26 #:use-module ((gnu packages) #:select (scheme-modules)) 30 #:use-module ((gnu packages) #:select (scheme-modules))
27 #:use-module (srfi srfi-1) 31 #:use-module (srfi srfi-1)
@@ -37,6 +41,8 @@
37 marionette-operating-system 41 marionette-operating-system
38 define-os-with-source 42 define-os-with-source
39 43
44 simple-operating-system
45
40 system-test 46 system-test
41 system-test? 47 system-test?
42 system-test-name 48 system-test-name
@@ -190,6 +196,41 @@ the system under test."
190 196
191 197
192;;; 198;;;
199;;; Simple operating systems.
200;;;
201
202(define %simple-os
203 (operating-system
204 (host-name "komputilo")
205 (timezone "Europe/Berlin")
206 (locale "en_US.UTF-8")
207
208 (bootloader (grub-configuration (device "/dev/sdX")))
209 (file-systems (cons (file-system
210 (device "my-root")
211 (title 'label)
212 (mount-point "/")
213 (type "ext4"))
214 %base-file-systems))
215 (firmware '())
216
217 (users (cons (user-account
218 (name "alice")
219 (comment "Bob's sister")
220 (group "users")
221 (supplementary-groups '("wheel" "audio" "video"))
222 (home-directory "/home/alice"))
223 %base-user-accounts))))
224
225(define-syntax-rule (simple-operating-system user-services ...)
226 "Return an operating system that includes USER-SERVICES in addition to
227%BASE-SERVICES."
228 (operating-system (inherit %simple-os)
229 (services (cons* user-services ... %base-services))))
230
231
232
233;;;
193;;; Tests. 234;;; Tests.
194;;; 235;;;
195 236
diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm
index 000a4ddecbe..bcb8299c73d 100644
--- a/gnu/tests/base.scm
+++ b/gnu/tests/base.scm
@@ -19,8 +19,6 @@
19(define-module (gnu tests base) 19(define-module (gnu tests base)
20 #:use-module (gnu tests) 20 #:use-module (gnu tests)
21 #:use-module (gnu system) 21 #:use-module (gnu system)
22 #:use-module (gnu system grub)
23 #:use-module (gnu system file-systems)
24 #:use-module (gnu system shadow) 22 #:use-module (gnu system shadow)
25 #:use-module (gnu system nss) 23 #:use-module (gnu system nss)
26 #:use-module (gnu system vm) 24 #:use-module (gnu system vm)
@@ -44,27 +42,7 @@
44 %test-nss-mdns)) 42 %test-nss-mdns))
45 43
46(define %simple-os 44(define %simple-os
47 (operating-system 45 (simple-operating-system))
48 (host-name "komputilo")
49 (timezone "Europe/Berlin")
50 (locale "en_US.UTF-8")
51
52 (bootloader (grub-configuration (device "/dev/sdX")))
53 (file-systems (cons (file-system
54 (device "my-root")
55 (title 'label)
56 (mount-point "/")
57 (type "ext4"))
58 %base-file-systems))
59 (firmware '())
60
61 (users (cons (user-account
62 (name "alice")
63 (comment "Bob's sister")
64 (group "users")
65 (supplementary-groups '("wheel" "audio" "video"))
66 (home-directory "/home/alice"))
67 %base-user-accounts))))
68 46
69 47
70(define* (run-basic-test os command #:optional (name "basic") 48(define* (run-basic-test os command #:optional (name "basic")
@@ -420,10 +398,8 @@ functionality tests.")
420 #:user "alice")) 398 #:user "alice"))
421 (job3 #~(job next-second-from ;to test $PATH 399 (job3 #~(job next-second-from ;to test $PATH
422 "touch witness-touch"))) 400 "touch witness-touch")))
423 (operating-system 401 (simple-operating-system
424 (inherit %simple-os) 402 (mcron-service (list job1 job2 job3)))))
425 (services (cons (mcron-service (list job1 job2 job3))
426 (operating-system-user-services %simple-os))))))
427 403
428(define (run-mcron-test name) 404(define (run-mcron-test name)
429 (mlet* %store-monad ((os -> (marionette-operating-system 405 (mlet* %store-monad ((os -> (marionette-operating-system
diff --git a/gnu/tests/mail.scm b/gnu/tests/mail.scm
index 47328a54ae6..d5c08b7f090 100644
--- a/gnu/tests/mail.scm
+++ b/gnu/tests/mail.scm
@@ -19,11 +19,8 @@
19(define-module (gnu tests mail) 19(define-module (gnu tests mail)
20 #:use-module (gnu tests) 20 #:use-module (gnu tests)
21 #:use-module (gnu system) 21 #:use-module (gnu system)
22 #:use-module (gnu system file-systems)
23 #:use-module (gnu system grub)
24 #:use-module (gnu system vm) 22 #:use-module (gnu system vm)
25 #:use-module (gnu services) 23 #:use-module (gnu services)
26 #:use-module (gnu services base)
27 #:use-module (gnu services mail) 24 #:use-module (gnu services mail)
28 #:use-module (gnu services networking) 25 #:use-module (gnu services networking)
29 #:use-module (guix gexp) 26 #:use-module (guix gexp)
@@ -32,23 +29,15 @@
32 #:export (%test-opensmtpd)) 29 #:export (%test-opensmtpd))
33 30
34(define %opensmtpd-os 31(define %opensmtpd-os
35 (operating-system 32 (simple-operating-system
36 (host-name "komputilo") 33 (dhcp-client-service)
37 (timezone "Europe/Berlin") 34 (service opensmtpd-service-type
38 (locale "en_US.UTF-8") 35 (opensmtpd-configuration
39 (bootloader (grub-configuration (device #f))) 36 (config-file
40 (file-systems %base-file-systems) 37 (plain-file "smtpd.conf" "
41 (firmware '())
42 (services (cons*
43 (dhcp-client-service)
44 (service opensmtpd-service-type
45 (opensmtpd-configuration
46 (config-file
47 (plain-file "smtpd.conf" "
48listen on 0.0.0.0 38listen on 0.0.0.0
49accept from any for local deliver to mbox 39accept from any for local deliver to mbox
50")))) 40"))))))
51 %base-services))))
52 41
53(define (run-opensmtpd-test) 42(define (run-opensmtpd-test)
54 "Return a test of an OS running OpenSMTPD service." 43 "Return a test of an OS running OpenSMTPD service."
diff --git a/gnu/tests/messaging.scm b/gnu/tests/messaging.scm
index b0c8254ce08..cefb52534ac 100644
--- a/gnu/tests/messaging.scm
+++ b/gnu/tests/messaging.scm
@@ -19,12 +19,8 @@
19(define-module (gnu tests messaging) 19(define-module (gnu tests messaging)
20 #:use-module (gnu tests) 20 #:use-module (gnu tests)
21 #:use-module (gnu system) 21 #:use-module (gnu system)
22 #:use-module (gnu system grub)
23 #:use-module (gnu system file-systems)
24 #:use-module (gnu system shadow)
25 #:use-module (gnu system vm) 22 #:use-module (gnu system vm)
26 #:use-module (gnu services) 23 #:use-module (gnu services)
27 #:use-module (gnu services base)
28 #:use-module (gnu services messaging) 24 #:use-module (gnu services messaging)
29 #:use-module (gnu services networking) 25 #:use-module (gnu services networking)
30 #:use-module (gnu packages messaging) 26 #:use-module (gnu packages messaging)
@@ -33,30 +29,11 @@
33 #:use-module (guix monads) 29 #:use-module (guix monads)
34 #:export (%test-prosody)) 30 #:export (%test-prosody))
35 31
36(define %base-os
37 (operating-system
38 (host-name "komputilo")
39 (timezone "Europe/Berlin")
40 (locale "en_US.UTF-8")
41
42 (bootloader (grub-configuration (device "/dev/sdX")))
43 (file-systems %base-file-systems)
44 (firmware '())
45 (users %base-user-accounts)
46 (services (cons (dhcp-client-service)
47 %base-services))))
48
49(define (os-with-service service)
50 "Return a test operating system that runs SERVICE."
51 (operating-system
52 (inherit %base-os)
53 (services (cons service
54 (operating-system-user-services %base-os)))))
55
56(define (run-xmpp-test name xmpp-service pid-file create-account) 32(define (run-xmpp-test name xmpp-service pid-file create-account)
57 "Run a test of an OS running XMPP-SERVICE, which writes its PID to PID-FILE." 33 "Run a test of an OS running XMPP-SERVICE, which writes its PID to PID-FILE."
58 (mlet* %store-monad ((os -> (marionette-operating-system 34 (mlet* %store-monad ((os -> (marionette-operating-system
59 (os-with-service xmpp-service) 35 (simple-operating-system (dhcp-client-service)
36 xmpp-service)
60 #:imported-modules '((gnu services herd)))) 37 #:imported-modules '((gnu services herd))))
61 (command (system-qemu-image/shared-store-script 38 (command (system-qemu-image/shared-store-script
62 os #:graphic? #f)) 39 os #:graphic? #f))
diff --git a/gnu/tests/networking.scm b/gnu/tests/networking.scm
index 53c80a4ac10..cfcb4908748 100644
--- a/gnu/tests/networking.scm
+++ b/gnu/tests/networking.scm
@@ -19,12 +19,8 @@
19(define-module (gnu tests networking) 19(define-module (gnu tests networking)
20 #:use-module (gnu tests) 20 #:use-module (gnu tests)
21 #:use-module (gnu system) 21 #:use-module (gnu system)
22 #:use-module (gnu system grub)
23 #:use-module (gnu system file-systems)
24 #:use-module (gnu system shadow)
25 #:use-module (gnu system vm) 22 #:use-module (gnu system vm)
26 #:use-module (gnu services) 23 #:use-module (gnu services)
27 #:use-module (gnu services base)
28 #:use-module (gnu services networking) 24 #:use-module (gnu services networking)
29 #:use-module (guix gexp) 25 #:use-module (guix gexp)
30 #:use-module (guix store) 26 #:use-module (guix store)
@@ -34,35 +30,27 @@
34 30
35(define %inetd-os 31(define %inetd-os
36 ;; Operating system with 2 inetd services. 32 ;; Operating system with 2 inetd services.
37 (operating-system 33 (simple-operating-system
38 (host-name "komputilo") 34 (dhcp-client-service)
39 (timezone "Europe/Brussels") 35 (service inetd-service-type
40 (locale "en_US.utf8") 36 (inetd-configuration
41 37 (entries (list
42 (bootloader (grub-configuration (device "/dev/sdX"))) 38 (inetd-entry
43 (file-systems %base-file-systems) 39 (name "echo")
44 (firmware '()) 40 (socket-type 'stream)
45 (users %base-user-accounts) 41 (protocol "tcp")
46 (services (cons* (dhcp-client-service) 42 (wait? #f)
47 (service inetd-service-type 43 (user "root"))
48 (inetd-configuration 44 (inetd-entry
49 (entries (list 45 (name "dict")
50 (inetd-entry 46 (socket-type 'stream)
51 (name "echo") 47 (protocol "tcp")
52 (socket-type 'stream) 48 (wait? #f)
53 (protocol "tcp") 49 (user "root")
54 (wait? #f) 50 (program (file-append bash
55 (user "root")) 51 "/bin/bash"))
56 (inetd-entry 52 (arguments
57 (name "dict") 53 (list "bash" (plain-file "my-dict.sh" "\
58 (socket-type 'stream)
59 (protocol "tcp")
60 (wait? #f)
61 (user "root")
62 (program (file-append bash
63 "/bin/bash"))
64 (arguments
65 (list "bash" (plain-file "my-dict.sh" "\
66while read line 54while read line
67do 55do
68 if [[ $line =~ ^DEFINE\\ (.*)$ ]] 56 if [[ $line =~ ^DEFINE\\ (.*)$ ]]
@@ -81,8 +69,7 @@ do
81 else 69 else
82 echo ERROR 70 echo ERROR
83 fi 71 fi
84done" )))))))) 72done" ))))))))))
85 %base-services))))
86 73
87(define* (run-inetd-test) 74(define* (run-inetd-test)
88 "Run tests in %INETD-OS, where the inetd service provides an echo service on 75 "Run tests in %INETD-OS, where the inetd service provides an echo service on
diff --git a/gnu/tests/ssh.scm b/gnu/tests/ssh.scm
index c1582c47374..02931e982a0 100644
--- a/gnu/tests/ssh.scm
+++ b/gnu/tests/ssh.scm
@@ -1,5 +1,5 @@
1;;; GNU Guix --- Functional package management for GNU 1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> 2;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
3;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> 3;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
4;;; 4;;;
5;;; This file is part of GNU Guix. 5;;; This file is part of GNU Guix.
@@ -20,12 +20,8 @@
20(define-module (gnu tests ssh) 20(define-module (gnu tests ssh)
21 #:use-module (gnu tests) 21 #:use-module (gnu tests)
22 #:use-module (gnu system) 22 #:use-module (gnu system)
23 #:use-module (gnu system grub)
24 #:use-module (gnu system file-systems)
25 #:use-module (gnu system shadow)
26 #:use-module (gnu system vm) 23 #:use-module (gnu system vm)
27 #:use-module (gnu services) 24 #:use-module (gnu services)
28 #:use-module (gnu services base)
29 #:use-module (gnu services ssh) 25 #:use-module (gnu services ssh)
30 #:use-module (gnu services networking) 26 #:use-module (gnu services networking)
31 #:use-module (gnu packages ssh) 27 #:use-module (gnu packages ssh)
@@ -35,26 +31,6 @@
35 #:export (%test-openssh 31 #:export (%test-openssh
36 %test-dropbear)) 32 %test-dropbear))
37 33
38(define %base-os
39 (operating-system
40 (host-name "komputilo")
41 (timezone "Europe/Berlin")
42 (locale "en_US.UTF-8")
43
44 (bootloader (grub-configuration (device "/dev/sdX")))
45 (file-systems %base-file-systems)
46 (firmware '())
47 (users %base-user-accounts)
48 (services (cons (dhcp-client-service)
49 %base-services))))
50
51(define (os-with-service service)
52 "Return a test operating system that runs SERVICE."
53 (operating-system
54 (inherit %base-os)
55 (services (cons service
56 (operating-system-user-services %base-os)))))
57
58(define* (run-ssh-test name ssh-service pid-file #:key (sftp? #f)) 34(define* (run-ssh-test name ssh-service pid-file #:key (sftp? #f))
59 "Run a test of an OS running SSH-SERVICE, which writes its PID to PID-FILE. 35 "Run a test of an OS running SSH-SERVICE, which writes its PID to PID-FILE.
60SSH-SERVICE must be configured to listen on port 22 and to allow for root and 36SSH-SERVICE must be configured to listen on port 22 and to allow for root and
@@ -62,7 +38,9 @@ empty-password logins.
62 38
63When SFTP? is true, run an SFTP server test." 39When SFTP? is true, run an SFTP server test."
64 (mlet* %store-monad ((os -> (marionette-operating-system 40 (mlet* %store-monad ((os -> (marionette-operating-system
65 (os-with-service ssh-service) 41 (simple-operating-system
42 (dhcp-client-service)
43 ssh-service)
66 #:imported-modules '((gnu services herd) 44 #:imported-modules '((gnu services herd)
67 (guix combinators)))) 45 (guix combinators))))
68 (command (system-qemu-image/shared-store-script 46 (command (system-qemu-image/shared-store-script
diff --git a/gnu/tests/web.scm b/gnu/tests/web.scm
index bae0e8fad77..cdc5791237f 100644
--- a/gnu/tests/web.scm
+++ b/gnu/tests/web.scm
@@ -24,7 +24,6 @@
24 #:use-module (gnu system shadow) 24 #:use-module (gnu system shadow)
25 #:use-module (gnu system vm) 25 #:use-module (gnu system vm)
26 #:use-module (gnu services) 26 #:use-module (gnu services)
27 #:use-module (gnu services base)
28 #:use-module (gnu services web) 27 #:use-module (gnu services web)
29 #:use-module (gnu services networking) 28 #:use-module (gnu services networking)
30 #:use-module (guix gexp) 29 #:use-module (guix gexp)
@@ -55,23 +54,14 @@
55 54
56(define %nginx-os 55(define %nginx-os
57 ;; Operating system under test. 56 ;; Operating system under test.
58 (operating-system 57 (simple-operating-system
59 (host-name "komputilo") 58 (dhcp-client-service)
60 (timezone "Europe/Berlin") 59 (service nginx-service-type
61 (locale "en_US.utf8") 60 (nginx-configuration
62 61 (log-directory "/var/log/nginx")
63 (bootloader (grub-configuration (device "/dev/sdX"))) 62 (server-blocks %nginx-servers)))
64 (file-systems %base-file-systems) 63 (simple-service 'make-http-root activation-service-type
65 (firmware '()) 64 %make-http-root)))
66 (users %base-user-accounts)
67 (services (cons* (dhcp-client-service)
68 (service nginx-service-type
69 (nginx-configuration
70 (log-directory "/var/log/nginx")
71 (server-blocks %nginx-servers)))
72 (simple-service 'make-http-root activation-service-type
73 %make-http-root)
74 %base-services))))
75 65
76(define* (run-nginx-test #:optional (http-port 8042)) 66(define* (run-nginx-test #:optional (http-port 8042))
77 "Run tests in %NGINX-OS, which has nginx running and listening on 67 "Run tests in %NGINX-OS, which has nginx running and listening on