From: Eryu Guan <guaneryu@gmail.com>
To: Luis Henriques <lhenriques@suse.com>
Cc: fstests@vger.kernel.org, "Yan, Zheng" <zyan@redhat.com>,
Dave Chinner <david@fromorbit.com>,
ceph-devel@vger.kernel.org
Subject: Re: [PATCH v2 1/2] ceph: test basic ceph.quota.max_files quota
Date: Sat, 6 Apr 2019 20:45:44 +0800 [thread overview]
Message-ID: <20190406124544.GJ2824@desktop> (raw)
In-Reply-To: <20190405145305.9574-2-lhenriques@suse.com>
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@suse.com>
Just some quick/random comments inline, because I don't have a ceph env
to actually test the patches..
> ---
> 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
next prev parent reply other threads:[~2019-04-06 12:45 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-05 14:53 [PATCH v2 0/2] Initial CephFS tests Luis Henriques
2019-04-05 14:53 ` [PATCH v2 1/2] ceph: test basic ceph.quota.max_files quota Luis Henriques
2019-04-06 12:45 ` Eryu Guan [this message]
2019-04-08 9:16 ` Luis Henriques
2019-04-05 14:53 ` [PATCH v2 2/2] ceph: test basic ceph.quota.max_bytes quota Luis Henriques
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190406124544.GJ2824@desktop \
--to=guaneryu@gmail.com \
--cc=ceph-devel@vger.kernel.org \
--cc=david@fromorbit.com \
--cc=fstests@vger.kernel.org \
--cc=lhenriques@suse.com \
--cc=zyan@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox