me
/
guix
Archived
1
0
Fork 0

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.
master
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
1 changed files with 56 additions and 16 deletions

View File

@ -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))))