Re: [PATCH v2 1/2] ceph: test basic ceph.quota.max_files quota

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

 



Eryu Guan <guaneryu@xxxxxxxxx> writes:

> On Fri, Apr 05, 2019 at 03:53:04PM +0100, Luis Henriques wrote:
>> Simple set of checks for CephFS max_files directory quota implementation.
>> 
>> Signed-off-by: Luis Henriques <lhenriques@xxxxxxxx>
>
> Just some quick/random comments inline, because I don't have a ceph env
> to actually test the patches..
>

Thanks a lot for your comments, Eryu.  They all make sense, I'll send
out a new revision of these tests shortly.

Cheers,
-- 
Luis


>> --- tests/ceph/001 | 86 +++++++++++++++++++++++++++++++++++++++++++++
>> tests/ceph/001.out | 9 +++++ tests/ceph/Makefile | 20 +++++++++++
>> tests/ceph/group | 1 + 4 files changed, 116 insertions(+) create mode
>> 100755 tests/ceph/001 create mode 100644 tests/ceph/001.out create
>> mode 100644 tests/ceph/Makefile create mode 100644 tests/ceph/group
>> 
>> diff --git a/tests/ceph/001 b/tests/ceph/001
>> new file mode 100755
>> index 000000000000..770e952cd8dc
>> --- /dev/null
>> +++ b/tests/ceph/001
>> @@ -0,0 +1,86 @@
>> +#! /bin/bash
>> +# SPDX-License-Identifier: GPL-2.0
>> +# Copyright (c) 2019 SUSE LLC. All Rights Reserved.
>> +#
>> +# FS QA Test No. 001
>> +#
>> +# Test basic ceph.quota.max_files quota features.
>> +#
>> +
>> +seq=`basename $0`
>> +seqres=$RESULT_DIR/$seq
>> +echo "QA output created by $seq"
>> +
>> +workdir=$TEST_DIR/$seq
>> +
>> +tmp=/tmp/$$
>> +status=1    # failure is the default!
>> +trap "_cleanup; exit \$status" 0 1 2 3 15
>> +
>> +_cleanup()
>> +{
>> +	cd /
>> +	rm -rf $tmp.*
>> +}
>> +
>> +# get standard environment, filters and checks
>> +. ./common/rc
>> +. ./common/filter
>> +. ./common/attr
>> +
>> +# real QA test starts here
>> +_supported_os Linux
>> +_supported_fs ceph
>> +
>> +_require_attrs
>> +
>> +set_quota()
>> +{
>> +	val=$1
>> +	dir=$2
>
> Declare function local variables as 'local'.
>
>> +	$SETFATTR_PROG -n ceph.quota.max_files -v $val $dir >/dev/null 2>&1
>
> I think it's better to dump the outputs from $SETFATTR_PROG to
> $seqres.full, so we have debug logs when something went wrong. e.g.
>
> 	$SETFATTR_PROG -n ceph.quota.max_files -v $val $dir >>$seqres.full 2>&1
>
> Also, remove $seqres.full file before test.
>
>> +}
>> +get_quota()
>> +{
>> +	dir=$1
>> +	$GETFATTR_PROG -n ceph.quota.max_files $dir 2> /dev/null
>
> We have a wrapper function around $GETFATTR_PROG called _getfattr(),
> which is used to deal with different output formats from different
> versions of getfattr tool, use the helper if possible.
>
> And you need to filter $TEST_DIR here as well. And if you don't want the
> "Removing leading '/' from absolute path names" messages, you could use
> the "--absolute-names" option of getfattr, e.g.
>
> 	_getfattr -n ceph.quota.max_files --absolute-names $dir | _filter_test_dir
>
> Thanks,
> Eryu
>
>> +}
>> +
>> +rm -rf $workdir
>> +mkdir $workdir
>> +
>> +# test setting quota
>> +set_quota 10 $workdir
>> +get_quota $workdir
>> +
>> +# set quota to largest acceptable value (0x7FFFFFFFFFFFFFFF)
>> +set_quota 9223372036854775807 $workdir
>> +get_quota $workdir
>> +
>> +# test resetting quota
>> +set_quota 0 $workdir
>> +get_quota $workdir
>> +
>> +# set quota to invalid values (0x8000000000000000 and -1)
>> +set_quota 9223372036854775808 $workdir
>> +get_quota $workdir
>> +
>> +set_quota -1 $workdir
>> +get_quota $workdir
>> +
>> +set_quota 5 $workdir
>> +mkdir $workdir/0
>> +touch $workdir/0/1
>> +touch $workdir/0/2
>> +touch $workdir/3
>> +
>> +touch $workdir/4 2>&1 | _filter_test_dir # should fail
>> +mkdir $workdir/5 2>&1 | _filter_test_dir # should fail
>> +
>> +set_quota 0 $workdir
>> +touch $workdir/4 # shouldn't fail
>> +mkdir $workdir/5 # shouldn't fail
>> +
>> +# success, all done
>> +status=0
>> +exit
>> diff --git a/tests/ceph/001.out b/tests/ceph/001.out
>> new file mode 100644
>> index 000000000000..6ddb007dce22
>> --- /dev/null
>> +++ b/tests/ceph/001.out
>> @@ -0,0 +1,9 @@
>> +QA output created by 001
>> +# file: mnt/test/001
>> +ceph.quota.max_files="10"
>> +
>> +# file: mnt/test/001
>> +ceph.quota.max_files="9223372036854775807"
>> +
>> +touch: cannot touch 'TEST_DIR/001/4': Disk quota exceeded
>> +mkdir: cannot create directory 'TEST_DIR/001/5': Disk quota exceeded
>> diff --git a/tests/ceph/Makefile b/tests/ceph/Makefile
>> new file mode 100644
>> index 000000000000..f93862af4f31
>> --- /dev/null
>> +++ b/tests/ceph/Makefile
>> @@ -0,0 +1,20 @@
>> +#
>> +# Copyright (c) 2019 SUSE LLC. All Rights Reserved.
>> +#
>> +
>> +TOPDIR = ../..
>> +include $(TOPDIR)/include/builddefs
>> +
>> +CEPHFS_DIR = cephfs
>> +TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(CEPHFS_DIR)
>> +
>> +include $(BUILDRULES)
>> +
>> +install:
>> +	$(INSTALL) -m 755 -d $(TARGET_DIR)
>> +	$(INSTALL) -m 755 $(TESTS) $(TARGET_DIR)
>> +	$(INSTALL) -m 644 group $(TARGET_DIR)
>> +	$(INSTALL) -m 644 $(OUTFILES) $(TARGET_DIR)
>> +
>> +# Nothing.
>> +install-dev install-lib:
>> diff --git a/tests/ceph/group b/tests/ceph/group
>> new file mode 100644
>> index 000000000000..e389bc6ec7ee
>> --- /dev/null
>> +++ b/tests/ceph/group
>> @@ -0,0 +1 @@
>> +001 auto quick quota
>



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux