Re: [PATCH v3] xfs: test xfs_quota's 'dump' and 'report' -L/-R range parameters

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]



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




[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux