t_rquotad.sh revision 1.2
11.2Sbouyer# $NetBSD: t_rquotad.sh,v 1.2 2012/02/13 22:40:43 bouyer Exp $ 21.1Sbouyer# 31.1Sbouyer# Copyright (c) 2011 Manuel Bouyer 41.1Sbouyer# All rights reserved. 51.1Sbouyer# 61.1Sbouyer# Redistribution and use in source and binary forms, with or without 71.1Sbouyer# modification, are permitted provided that the following conditions 81.1Sbouyer# are met: 91.1Sbouyer# 1. Redistributions of source code must retain the above copyright 101.1Sbouyer# notice, this list of conditions and the following disclaimer. 111.1Sbouyer# 2. Redistributions in binary form must reproduce the above copyright 121.1Sbouyer# notice, this list of conditions and the following disclaimer in the 131.1Sbouyer# documentation and/or other materials provided with the distribution. 141.1Sbouyer# 151.1Sbouyer# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 161.1Sbouyer# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 171.1Sbouyer# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 181.1Sbouyer# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 191.1Sbouyer# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 201.1Sbouyer# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 211.1Sbouyer# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 221.1Sbouyer# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 231.1Sbouyer# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 241.1Sbouyer# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 251.1Sbouyer# POSSIBILITY OF SUCH DAMAGE. 261.1Sbouyer# 271.1Sbouyerfor e in le be; do 281.1Sbouyer for v in 1; do 291.1Sbouyer for q in "user" "group" "both"; do 301.1Sbouyer test_case_root get_nfs_${e}_${v}_${q} get_nfs_quota \ 311.1Sbouyer "get NFS quota with ${q} enabled" ${e} ${v} ${q} 321.1Sbouyer done 331.1Sbouyer done 341.1Sbouyerdone 351.1Sbouyer 361.1Sbouyerget_nfs_quota() 371.1Sbouyer{ 381.2Sbouyer create_ffs $* 391.1Sbouyer local q=$3 401.1Sbouyer local expect 411.1Sbouyer 421.1Sbouyer case ${q} in 431.1Sbouyer user) 441.1Sbouyer expect=u 451.1Sbouyer ;; 461.1Sbouyer group) 471.1Sbouyer expect=g 481.1Sbouyer ;; 491.1Sbouyer both) 501.1Sbouyer expect="u g" 511.1Sbouyer ;; 521.1Sbouyer *) 531.1Sbouyer atf_fail "wrong quota type" 541.1Sbouyer ;; 551.1Sbouyer esac 561.1Sbouyer 571.1Sbouyer#start a a nfs server 581.1Sbouyer 591.1Sbouyer atf_check -s exit:0 rump_server -lrumpvfs -lrumpdev -lrumpnet \ 601.1Sbouyer -lrumpnet_net -lrumpnet_netinet -lrumpnet_local \ 611.1Sbouyer -lrumpnet_shmif -lrumpdev_disk -lrumpfs_ffs -lrumpfs_nfs \ 621.1Sbouyer -lrumpfs_nfsserver \ 631.1Sbouyer -d key=/dk,hostpath=${IMG},size=host ${RUMP_SERVER} 641.1Sbouyer 651.1Sbouyer atf_check -s exit:0 rump.ifconfig shmif0 create 661.1Sbouyer atf_check -s exit:0 rump.ifconfig shmif0 linkstr shmbus 671.1Sbouyer atf_check -s exit:0 rump.ifconfig shmif0 inet 10.1.1.1 681.1Sbouyer 691.1Sbouyer export RUMPHIJACK_RETRYCONNECT=die 701.1Sbouyer export LD_PRELOAD=/usr/lib/librumphijack.so 711.1Sbouyer 721.1Sbouyer atf_check -s exit:0 mkdir /rump/etc 731.1Sbouyer atf_check -s exit:0 mkdir /rump/export 741.1Sbouyer atf_check -s exit:0 mkdir -p /rump/var/run 751.1Sbouyer atf_check -s exit:0 mkdir -p /rump/var/db 761.1Sbouyer atf_check -s exit:0 touch /rump/var/db/mountdtab 771.1Sbouyer 781.1Sbouyer /bin/echo "/export -noresvport -noresvmnt 10.1.1.100" | \ 791.1Sbouyer dd of=/rump/etc/exports 2> /dev/null 801.1Sbouyer 811.1Sbouyer atf_check -s exit:0 -e ignore mount_ffs /dk /rump/export 821.1Sbouyer 831.1Sbouyer#set a quota limit (and check that we can read it back) 841.1Sbouyer for q in ${expect} ; do 851.1Sbouyer local id=$(id -${q}) 861.1Sbouyer atf_check -s exit:0 \ 871.1Sbouyer env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/export edquota -$q -s10k/20 -h40M/50k \ 881.1Sbouyer -t 2W/3D ${id} 891.1Sbouyer atf_check -s exit:0 \ 901.1Sbouyer-o "match:0 10 40960 2weeks 1 20 51200 3days" \ 911.1Sbouyer-o "match:Disk quotas for .*: $" \ 921.1Sbouyer env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/export quota -${q} -v 931.1Sbouyer done 941.1Sbouyer 951.1Sbouyer # start rpcbind. we want /var/run/rpcbind.sock 961.1Sbouyer export RUMPHIJACK='blanket=/var/run,socket=all' 971.1Sbouyer atf_check -s exit:0 rpcbind 981.1Sbouyer 991.1Sbouyer # ok, then we want mountd in the similar fashion 1001.1Sbouyer export RUMPHIJACK='blanket=/var/run:/var/db:/export,socket=all,path=/rump,vfs=all' 1011.1Sbouyer atf_check -s exit:0 mountd /rump/etc/exports 1021.1Sbouyer 1031.1Sbouyer # and nfs 1041.1Sbouyer export RUMPHIJACK='blanket=/var/run,socket=all,vfs=all' 1051.1Sbouyer atf_check -s exit:0 nfsd -tu 1061.1Sbouyer 1071.1Sbouyer #finally, rpc.rquotad 1081.1Sbouyer export RUMPHIJACK='blanket=/var/run:/export,vfs=getvfsstat,socket=all' 1091.1Sbouyer atf_check -s exit:0 /usr/libexec/rpc.rquotad 1101.1Sbouyer 1111.1Sbouyer # now start a client server 1121.1Sbouyer export RUMP_SERVER=unix://clientsock 1131.1Sbouyer RUMP_SOCKETS_LIST="${RUMP_SOCKETS_LIST} clientsock" 1141.1Sbouyer unset RUMPHIJACK 1151.1Sbouyer unset LD_PRELOAD 1161.1Sbouyer 1171.1Sbouyer atf_check -s exit:0 rump_server -lrumpvfs -lrumpnet \ 1181.1Sbouyer -lrumpnet_net -lrumpnet_netinet -lrumpnet_shmif -lrumpfs_nfs\ 1191.1Sbouyer ${RUMP_SERVER} 1201.1Sbouyer 1211.1Sbouyer atf_check -s exit:0 rump.ifconfig shmif0 create 1221.1Sbouyer atf_check -s exit:0 rump.ifconfig shmif0 linkstr shmbus 1231.1Sbouyer atf_check -s exit:0 rump.ifconfig shmif0 inet 10.1.1.100 1241.1Sbouyer 1251.1Sbouyer export LD_PRELOAD=/usr/lib/librumphijack.so 1261.1Sbouyer 1271.1Sbouyer atf_check -s exit:0 mkdir /rump/mnt 1281.1Sbouyer atf_check -s exit:0 mount_nfs 10.1.1.1:/export /rump/mnt 1291.1Sbouyer 1301.1Sbouyer #now try a quota(8) call 1311.1Sbouyer export RUMPHIJACK='blanket=/mnt,socket=all,path=/rump,vfs=getvfsstat' 1321.1Sbouyer for q in ${expect} ; do 1331.1Sbouyer local id=$(id -${q}) 1341.1Sbouyer atf_check -s exit:0 \ 1351.1Sbouyer-o "match:/mnt 0 10 40960 1 20 51200 " \ 1361.1Sbouyer-o "match:Disk quotas for .*: $" \ 1371.1Sbouyer quota -${q} -v 1381.1Sbouyer done 1391.1Sbouyer 1401.1Sbouyer unset LD_PRELOAD 1411.2Sbouyer rump_quota_shutdown 1421.1Sbouyer} 143