Module Name: src Committed By: bouyer Date: Sat Mar 12 14:03:39 UTC 2011
Modified Files: src/distrib/sets/lists/tests: mi src/tests/fs/nfs: Makefile Added Files: src/tests/fs/nfs: t_rquotad.sh Log Message: Add a test for rpc.rquotad(8) To generate a diff of this commit: cvs rdiff -u -r1.269 -r1.270 src/distrib/sets/lists/tests/mi cvs rdiff -u -r1.4 -r1.5 src/tests/fs/nfs/Makefile cvs rdiff -u -r0 -r1.1 src/tests/fs/nfs/t_rquotad.sh Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/distrib/sets/lists/tests/mi diff -u src/distrib/sets/lists/tests/mi:1.269 src/distrib/sets/lists/tests/mi:1.270 --- src/distrib/sets/lists/tests/mi:1.269 Sat Mar 12 08:08:38 2011 +++ src/distrib/sets/lists/tests/mi Sat Mar 12 14:03:38 2011 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.269 2011/03/12 08:08:38 matt Exp $ +# $NetBSD: mi,v 1.270 2011/03/12 14:03:38 bouyer Exp $ # # Note: don't delete entries from here - mark them as "obsolete" instead. # @@ -1228,6 +1228,7 @@ ./usr/tests/fs/nfs tests-fs-tests ./usr/tests/fs/nfs/Atffile tests-fs-tests atf ./usr/tests/fs/nfs/t_mountd tests-fs-tests atf +./usr/tests/fs/nfs/t_rquotad tests-fs-tests atf ./usr/tests/fs/nfs/nfsservice tests-fs-tests ./usr/tests/fs/nfs/nfsservice/exports tests-fs-tests atf ./usr/tests/fs/nfs/nfsservice/rumpnfsd tests-fs-tests atf Index: src/tests/fs/nfs/Makefile diff -u src/tests/fs/nfs/Makefile:1.4 src/tests/fs/nfs/Makefile:1.5 --- src/tests/fs/nfs/Makefile:1.4 Thu Sep 23 09:39:14 2010 +++ src/tests/fs/nfs/Makefile Sat Mar 12 14:03:38 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.4 2010/09/23 09:39:14 he Exp $ +# $NetBSD: Makefile,v 1.5 2011/03/12 14:03:38 bouyer Exp $ # .include <bsd.own.mk> @@ -9,6 +9,11 @@ TESTS_C= t_mountd +.for name in t_rquotad +TESTS_SH+= ${name} +TESTS_SH_SRC_${name}= ../ffs/quotas_common.sh ${name}.sh +.endfor + VFSTESTDIR != cd ${.CURDIR}/../common && ${PRINTOBJDIR} LDADD+=-L${VFSTESTDIR} -lvfstest Added files: Index: src/tests/fs/nfs/t_rquotad.sh diff -u /dev/null src/tests/fs/nfs/t_rquotad.sh:1.1 --- /dev/null Sat Mar 12 14:03:39 2011 +++ src/tests/fs/nfs/t_rquotad.sh Sat Mar 12 14:03:38 2011 @@ -0,0 +1,142 @@ +# $NetBSD: t_rquotad.sh,v 1.1 2011/03/12 14:03:38 bouyer Exp $ +# +# Copyright (c) 2011 Manuel Bouyer +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +for e in le be; do + for v in 1; do + for q in "user" "group" "both"; do + test_case_root get_nfs_${e}_${v}_${q} get_nfs_quota \ + "get NFS quota with ${q} enabled" ${e} ${v} ${q} + done + done +done + +get_nfs_quota() +{ + create_with_quotas $* + local q=$3 + local expect + + case ${q} in + user) + expect=u + ;; + group) + expect=g + ;; + both) + expect="u g" + ;; + *) + atf_fail "wrong quota type" + ;; + esac + +#start a a nfs server + + atf_check -s exit:0 rump_server -lrumpvfs -lrumpdev -lrumpnet \ + -lrumpnet_net -lrumpnet_netinet -lrumpnet_local \ + -lrumpnet_shmif -lrumpdev_disk -lrumpfs_ffs -lrumpfs_nfs \ + -lrumpfs_nfsserver \ + -d key=/dk,hostpath=${IMG},size=host ${RUMP_SERVER} + + atf_check -s exit:0 rump.ifconfig shmif0 create + atf_check -s exit:0 rump.ifconfig shmif0 linkstr shmbus + atf_check -s exit:0 rump.ifconfig shmif0 inet 10.1.1.1 + + export RUMPHIJACK_RETRYCONNECT=die + export LD_PRELOAD=/usr/lib/librumphijack.so + + atf_check -s exit:0 mkdir /rump/etc + atf_check -s exit:0 mkdir /rump/export + atf_check -s exit:0 mkdir -p /rump/var/run + atf_check -s exit:0 mkdir -p /rump/var/db + atf_check -s exit:0 touch /rump/var/db/mountdtab + + /bin/echo "/export -noresvport -noresvmnt 10.1.1.100" | \ + dd of=/rump/etc/exports 2> /dev/null + + atf_check -s exit:0 -e ignore mount_ffs /dk /rump/export + +#set a quota limit (and check that we can read it back) + for q in ${expect} ; do + local id=$(id -${q}) + atf_check -s exit:0 \ + env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/export edquota -$q -s10k/20 -h40M/50k \ + -t 2W/3D ${id} + atf_check -s exit:0 \ +-o "match:0 10 40960 2weeks 1 20 51200 3days" \ +-o "match:Disk quotas for .*: $" \ + env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/export quota -${q} -v + done + + # start rpcbind. we want /var/run/rpcbind.sock + export RUMPHIJACK='blanket=/var/run,socket=all' + atf_check -s exit:0 rpcbind + + # ok, then we want mountd in the similar fashion + export RUMPHIJACK='blanket=/var/run:/var/db:/export,socket=all,path=/rump,vfs=all' + atf_check -s exit:0 mountd /rump/etc/exports + + # and nfs + export RUMPHIJACK='blanket=/var/run,socket=all,vfs=all' + atf_check -s exit:0 nfsd -tu + + #finally, rpc.rquotad + export RUMPHIJACK='blanket=/var/run:/export,vfs=getvfsstat,socket=all' + atf_check -s exit:0 /usr/libexec/rpc.rquotad + + # now start a client server + export RUMP_SERVER=unix://clientsock + RUMP_SOCKETS_LIST="${RUMP_SOCKETS_LIST} clientsock" + unset RUMPHIJACK + unset LD_PRELOAD + + atf_check -s exit:0 rump_server -lrumpvfs -lrumpnet \ + -lrumpnet_net -lrumpnet_netinet -lrumpnet_shmif -lrumpfs_nfs\ + ${RUMP_SERVER} + + atf_check -s exit:0 rump.ifconfig shmif0 create + atf_check -s exit:0 rump.ifconfig shmif0 linkstr shmbus + atf_check -s exit:0 rump.ifconfig shmif0 inet 10.1.1.100 + + export LD_PRELOAD=/usr/lib/librumphijack.so + + atf_check -s exit:0 mkdir /rump/mnt + atf_check -s exit:0 mount_nfs 10.1.1.1:/export /rump/mnt + + #now try a quota(8) call + export RUMPHIJACK='blanket=/mnt,socket=all,path=/rump,vfs=getvfsstat' + for q in ${expect} ; do + local id=$(id -${q}) + atf_check -s exit:0 \ +-o "match:/mnt 0 10 40960 1 20 51200 " \ +-o "match:Disk quotas for .*: $" \ + quota -${q} -v + done + + unset LD_PRELOAD + rump_shutdown +}