summaryrefslogtreecommitdiff
path: root/gnu/tests
diff options
context:
space:
mode:
authorDanny Milosavljevic <dannym@scratchpost.org>2020-09-10 18:08:48 +0200
committerDanny Milosavljevic <dannym@scratchpost.org>2020-09-10 18:57:46 +0200
commitc41a8572efa69c5b29002245090db653f87e6da8 (patch)
tree75f526f17cd43d23ced33643248b277e7648d374 /gnu/tests
parent811985a7e0b8e7aad5a3c3818482b06996c94d02 (diff)
tests: nfs: Improve "nfs-root-fs".
Follow-up to a1a39ed5a46044161a71cbe6931c7e3006a82ecb. * gnu/tests/nfs.scm (run-nfs-root-fs-test): Improve tests. (%test-nfs-root-fs)[description]: Modify.
Diffstat (limited to 'gnu/tests')
-rw-r--r--gnu/tests/nfs.scm72
1 files changed, 56 insertions, 16 deletions
diff --git a/gnu/tests/nfs.scm b/gnu/tests/nfs.scm
index ee8e3ad000..da729ddcc9 100644
--- a/gnu/tests/nfs.scm
+++ b/gnu/tests/nfs.scm
@@ -273,11 +273,15 @@ directories can be mounted.")
(inherit %nfs-os)
(services
(modify-services (operating-system-user-services %nfs-os)
- (nfs-service-type
- config
- =>
+ (nfs-service-type config =>
(nfs-configuration
(debug '(nfs nfsd mountd))
+ ;;; Note: Adding the following line causes Guix to hang.
+ ;(rpcmountd-port 20001)
+ ;;; Note: Adding the following line causes Guix to hang.
+ ;(rpcstatd-port 20002) ; FIXME: Set broadcast port AND listening port.
+ (nfsd-port 2049)
+ (nfs-versions '("4.2"))
(exports '(("/export"
"*(rw,insecure,no_subtree_check,crossmnt,fsid=root,no_root_squash,insecure,async)"))))))))
#:requirements '(nscd)
@@ -287,14 +291,14 @@ directories can be mounted.")
(define nfs-root-client-os
(marionette-operating-system
(operating-system
- (inherit %nfs-os)
+ (inherit (simple-operating-system (service dhcp-client-service-type)))
(kernel-arguments '("ip=dhcp"))
(file-systems (cons
(file-system
(type "nfs")
(mount-point "/")
(device ":/export")
- (options "addr=0.0.0.0,vers=4.2"))
+ (options "addr=127.0.0.1,vers=4.2"))
%base-file-systems)))
#:requirements '(nscd)
#:imported-modules '((gnu services herd)
@@ -306,24 +310,34 @@ directories can be mounted.")
(use-modules (gnu build marionette)
(srfi srfi-64))
- (mkdir "/tmp/server")
- (define server-marionette
- (make-marionette (list #$(virtual-machine nfs-root-server-os)) #:socket-directory "/tmp/server"))
- (define client-marionette
- (make-marionette (list #$(virtual-machine nfs-root-client-os))))
-
(mkdir #$output)
(chdir #$output)
(test-begin "start-nfs-boot-test")
+
+ ;;; Start up NFS server host.
+
+ (mkdir "/tmp/server")
+ (define server-marionette
+ (make-marionette (list #$(virtual-machine
+ nfs-root-server-os
+ ;(operating-system nfs-root-server-os)
+ ;(port-forwardings '( ; (111 . 111)
+ ; (2049 . 2049)
+ ; (20001 . 20001)
+ ; (20002 . 20002)))
+))
+ #:socket-directory "/tmp/server"))
+
(marionette-eval
'(begin
(use-modules (gnu services herd))
(current-output-port
(open-file "/dev/console" "w0"))
;; FIXME: Instead statfs "/" and "/export" and wait until they
- ;; are different file systems.
- (sleep 10)
+ ;; are different file systems. But Guile doesn't seem to have
+ ;; statfs.
+ (sleep 5)
(chmod "/export" #o777)
(symlink "/gnu" "/export/gnu")
(start-service 'nscd)
@@ -331,10 +345,34 @@ directories can be mounted.")
(start-service 'nfs))
server-marionette)
- ;; Wait for the NFS services to be up and running.
+ ;;; Wait for the NFS services to be up and running.
+
(test-assert "nfs services are running"
(wait-for-file "/var/run/rpc.statd.pid" server-marionette))
+ (test-assert "NFS port is ready"
+ (wait-for-tcp-port 2049 server-marionette))
+
+ (test-assert "NFS statd port is ready"
+ (wait-for-tcp-port 20002 server-marionette))
+
+ (test-assert "NFS mountd port is ready"
+ (wait-for-tcp-port 20001 server-marionette))
+
+ ;;; FIXME: (test-assert "NFS portmapper port is ready"
+ ;;; FIXME: (wait-for-tcp-port 111 server-marionette))
+
+ ;;; Start up NFS client host.
+
+ (define client-marionette
+ (make-marionette (list #$(virtual-machine
+ nfs-root-client-os
+ ;(port-forwardings '((111 . 111)
+ ; (2049 . 2049)
+ ; (20001 . 20001)
+ ; (20002 . 20002)))
+ ))))
+
(marionette-eval
'(begin
(use-modules (gnu services herd))
@@ -352,6 +390,8 @@ directories can be mounted.")
(test-assert "nfs-root-client booted")
+ ;;; Check whether NFS client host communicated with NFS server host.
+
(test-assert "nfs client deposited file"
(wait-for-file "/export/mounts" server-marionette))
(marionette-eval
@@ -369,6 +409,6 @@ directories can be mounted.")
(define %test-nfs-root-fs
(system-test
(name "nfs-root-fs")
- (description "Test that an NFS server can be started and exported
-directories can be mounted.")
+ (description "Test that an NFS server can be started and the exported
+directory can be used as root filesystem.")
(value (run-nfs-root-fs-test))))