tests: nfs: Improve "nfs-root-fs".

Follow-up to a1a39ed5a4.

* gnu/tests/nfs.scm (run-nfs-root-fs-test): Improve tests.
(%test-nfs-root-fs)[description]: Modify.
This commit is contained in:
Danny Milosavljevic 2020-09-10 18:08:48 +02:00
parent 811985a7e0
commit c41a8572ef
No known key found for this signature in database
GPG key ID: E71A35542C30BAA5

View file

@ -273,11 +273,15 @@ (define nfs-root-server-os
(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 @@ (define nfs-root-server-os
(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 @@ (define test
(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 @@ (define client-marionette
(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 @@ (define client-marionette
(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 @@ (define client-marionette
(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))))