Home | History | Annotate | Line # | Download | only in ffs
      1 # $NetBSD: t_getquota.sh,v 1.4 2012/01/18 20:51:23 bouyer Exp $ 
      2 #
      3 #  Copyright (c) 2011 Manuel Bouyer
      4 #  All rights reserved.
      5 # 
      6 #  Redistribution and use in source and binary forms, with or without
      7 #  modification, are permitted provided that the following conditions
      8 #  are met:
      9 #  1. Redistributions of source code must retain the above copyright
     10 #     notice, this list of conditions and the following disclaimer.
     11 #  2. Redistributions in binary form must reproduce the above copyright
     12 #     notice, this list of conditions and the following disclaimer in the
     13 #     documentation and/or other materials provided with the distribution.
     14 # 
     15 #  THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     16 #  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     17 #  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     18 #  PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     19 #  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     20 #  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     21 #  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     22 #  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     23 #  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     24 #  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     25 #  POSSIBILITY OF SUCH DAMAGE.
     26 #
     27 
     28 for e in le be; do
     29   for v in 1 2; do
     30     for q in "user" "group"; do
     31       test_case get_${e}_${v}_${q} get_quota \
     32 	 "get quota with ${q} enabled" -b ${e} ${v} ${q}
     33     done
     34     test_case get_${e}_${v}_"both" get_quota \
     35 	 "get quota with both enabled" -b ${e} ${v} "both"
     36   done
     37 done
     38 
     39 get_quota()
     40 {
     41 	create_ffs_server $*
     42 	local q=$4
     43 	local expect
     44 	local fail
     45 
     46 	case ${q} in
     47 	user)
     48 		expect=u
     49 		fail=g
     50 		;;
     51 	group)
     52 		expect=g
     53 		fail=u
     54 		;;
     55 	both)
     56 		expect="u g"
     57 		fail=""
     58 		;;
     59 	*)
     60 		atf_fail "wrong quota type"
     61 		;;
     62 	esac
     63 
     64 #check that we can get the expected quota
     65 	for q in ${expect} ; do
     66 		atf_check -s exit:0 \
     67 -o "match:/mnt        0        -        -   7days       1       -       -   7days" \
     68 -o "match:Disk quotas for .*: $" \
     69 		    env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt quota -${q} -v
     70 		atf_check -s exit:0 \
     71 -o "match:--        0        -        -                1       -       -" \
     72 -o "not-match:\+\+"							  \
     73 		    env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt repquota -${q} /mnt
     74 	done
     75 
     76 #check that we do not get positive reply for non-expected quota
     77 	for q in ${fail} ; do
     78 		atf_check -s exit:0 -o "not-match:/mnt" \
     79 		    -o "not-match:Disk quotas for .*: $" \
     80 		    -o "match:Disk quotas for .*: none$" \
     81 		    env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt quota -${q} -v
     82 		atf_check -s exit:0 \
     83 -o "not-match:--        0        -        -                1       -       -" \
     84 		    env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=vfs=getvfsstat,blanket=/mnt repquota -${q} /mnt
     85 	done
     86 	rump_quota_shutdown
     87 }
     88 
     89 quota_walk_list()
     90 {
     91 	create_ffs_server $*
     92 	local q=$4
     93 	local expect
     94 
     95 	case ${q} in
     96 	user)
     97 		expect=u
     98 		fail=g
     99 		;;
    100 	group)
    101 		expect=g
    102 		fail=u
    103 		;;
    104 	both)
    105 		expect="u g"
    106 		fail=""
    107 		;;
    108 	*)
    109 		atf_fail "wrong quota type"
    110 		;;
    111 	esac
    112 }
    113