On Fri, Sep 09, 2022 at 11:49:50AM +0800, Zorro Lang wrote: > On Fri, Aug 05, 2022 at 07:25:31PM +0200, Andrey Albershteyn wrote: > > These parameters define ID range of users/groups/projects to show. > > This test adds more checks for wider coverage (e.g. empty range, > > full range, open range). > > > > Signed-off-by: Andrey Albershteyn <aalbersh@xxxxxxxxxx> > > --- > > > > This is regression test in relation to the patch [1]. > > If this's a regression test case for a specific patchset, will it fail > on the kernel without this patchset? > This is on xfs_quota from xfsprogs. This won't fail with older or updated xfs_quota. I implemented it as those arguments weren't covered by any test. Ops, sorry, I was going to check in which version this patchset was merged, and looks like it got lost somewhere between releases. The new version should go into 6.0 release [1]. [1]: https://lore.kernel.org/linux-xfs/20220912142823.30865-1-aalbersh@xxxxxxxxxx/T/#t > > > > Changes from v1: > > - Moved to separate test (initially added to 152) > > Changes from v2: > > - sed expression simplification > > - remove _filter_trailing_spaces() from common/filter > > - easier to read test cases > > > > [1]: https://lore.kernel.org/all/20220328222503.146496-1-aalbersh@xxxxxxxxxx/ > > > > --- > > tests/xfs/550 | 169 +++++++++++++++++++++++++++++++++ > > tests/xfs/550.out | 232 ++++++++++++++++++++++++++++++++++++++++++++++ > > 2 files changed, 401 insertions(+) > > create mode 100755 tests/xfs/550 > > create mode 100644 tests/xfs/550.out > > > > diff --git a/tests/xfs/550 b/tests/xfs/550 > > new file mode 100755 > > index 00000000..1fc1d37c > > --- /dev/null > > +++ b/tests/xfs/550 > > @@ -0,0 +1,169 @@ > > +#! /bin/bash > > +# SPDX-License-Identifier: GPL-2.0 > > +# Copyright (c) 2022 Andrey Albershteyn <aalbersh@xxxxxxxxxx>. > > +# All Rights Reserved. > > +# > > +# FS QA Test 550 > > +# > > +# Test xfs_quota -L/-U range parameters for report and dump commands. These > > +# parameters define ID range of users/groups/projects with non-zero quota to > > +# show. > > +# > > +. ./common/preamble > > +_begin_fstest quick quota > > Can it be in "auto" group? > sure. > > + > > +# Override the default cleanup function. > > +_cleanup() > > +{ > > + _scratch_unmount >/dev/null 2>&1 > > Why a _scratch_unmount is needed at here? I think this case doesn't need > a specific _cleanup. > Yup, thanks! Will remove that. > > + cd / > > + rm -f $tmp.* > > +} > > + > > +# Import common functions. > > +. ./common/filter > > +. ./common/quota > > + > > +# real QA test starts here > > +_supported_fs xfs > > +_require_test > > I didn't see this case need TEST_DIR, so this requirement might be useless > It is. Will remove that > > +_require_scratch > > +_require_xfs_quota > > +_require_user fsgqa > > +_require_user fsgqa2 > > +_require_group fsgqa > > +_require_group fsgqa2 > > + > > +_scratch_mkfs_xfs >>$seqres.full || _fail "mkfs failed" > > + > > +uqid=`id -u fsgqa` > > +gqid=`id -g fsgqa` > > + > > +uqid2=`id -u fsgqa2` > > +gqid2=`id -g fsgqa2` > > + > > +[ $uqid -ge $uqid2 ] && _notrun \ > > + "ID of fsgqa user ($uqid) expected to be lower than fsgqa2 ($uqid2)" > > +[ $gqid -ge $gqid2 ] && _notrun \ > > + "ID of fsgqa group ($gqid) expected to be lower than fsgqa2 ($gqid2)" > > + > > +pqid=10 > > +pqid2=42 > > +cat >$tmp.projects <<EOF > > +$pqid:$SCRATCH_MNT > > +$pqid2:$SCRATCH_MNT > > +EOF > > + > > +cat >$tmp.projid <<EOF > > +root:0 > > +fsgqa:$pqid > > +fsgqa2:$pqid2 > > +EOF > > + > > +filter_dump() > > +{ > > + _filter_scratch | sed -e 's/^[0-9]\+/#ID/' -e 's/\s*$//' > > +} > > + > > +filter_report() > > +{ > > + _filter_quota | sed -e '/^root/d' \ > > + -e '/^#0/d' \ > > + -e 's/^#[0-9]\+/#ID/' \ > > + -e 's/\s*$//' > > +} > > + > > +set_quota_limit() > > +{ > > + local bs=$1 > > + local bh=$2 > > + local is=$3 > > + local ih=$4 > > + local user=$5 > > + > > + $XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid -x \ > > + -c "limit -$type bsoft=$bs bhard=$bh $user" \ > > + -c "limit -$type isoft=$is ihard=$ih $user" \ > > + $SCRATCH_MNT > > +} > > + > > +test_dump() > > +{ > > + local description=$1 ; shift > > + local opt="$*" > > + > > + echo "Options: $description" > > + > > + rm -f $tmp.backup 2>>/dev/null > > + $XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid -x \ > > + -c "dump -$type $opt -f $tmp.backup" \ > > + $SCRATCH_MNT | _filter_scratch > > + cat $tmp.backup | filter_dump > > +} > > + > > +test_report() > > +{ > > + local description=$1 ; shift > > + local opt="$*" > > + > > + echo "Options: $description" > > + > > + $XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid -x \ > > + -c "report -$type $opt -bi" \ > > + $SCRATCH_MNT | filter_report > > +} > > + > > +test_xfs_quota() > > +{ > > + set_quota_limit 512k 2048k 10 20 $id > > + set_quota_limit 1024k 4096k 10 20 $id2 > > + > > + echo "dump options test (type=$type)" > > + test_dump "no options (full range)" > > + test_dump "-L option" -L $id > > + test_dump "-U option" -U $id > > + test_dump "-L/-U options (one element range)" -L $id -U $id > > + test_dump "-L/-U options (multiple elements range)" -L $id -U $id2 > > + test_dump "-L/-U options (empty range)" -L $id2 -U $id > > + test_dump "-L/-U options (full range)" -L 0 -U 0 > > + > > + echo "report options test (type=$type)" > > + test_report "no options (full range)" > > + test_report "-L options" -L $id > > + test_report "-U options" -U $id > > + test_report "-L/-U options (one element range)" -L $id -U $id > > + test_report "-L/-U options (multiple elements range)" -L $id -U $id2 > > + test_report "-L/-U options (empty range)" -L $id2 -U $id > > + test_report "-L/-U options (full range)" -L 0 -U 0 > > +} > > + > > +echo "Checking User quota" > > +_scratch_unmount >/dev/null 2>&1 > > +_qmount_option "uquota" > > +_try_scratch_mount || _fail "qmount failed" > > Why not use "_qmount" directly? (same below) > Sure, will change to "_qmount", missed that this exists. > Thanks, > Zorro > -- - Andrey