* [PATCH] btrfs: Add regression test for SINGLE profile conversion
@ 2019-09-26 7:26 Nikolay Borisov
2019-09-26 7:34 ` Anand Jain
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Nikolay Borisov @ 2019-09-26 7:26 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, wqu, guaneryu, Nikolay Borisov
This is a regression test for the bug fixed by
'btrfs: Fix a regression which we can't convert to SINGLE profile'
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
tests/btrfs/194 | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/btrfs/194.out | 2 ++
tests/btrfs/group | 1 +
3 files changed, 55 insertions(+)
create mode 100755 tests/btrfs/194
create mode 100644 tests/btrfs/194.out
diff --git a/tests/btrfs/194 b/tests/btrfs/194
new file mode 100755
index 000000000000..8935defd3f5e
--- /dev/null
+++ b/tests/btrfs/194
@@ -0,0 +1,52 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2019 SUSE Linux Products GmbH. All Rights Reserved.
+#
+# FS QA Test 194
+#
+# Test that block groups profile can be converted to SINGLE. This is a regression
+# test for 'btrfs: Fix a regression which we can't convert to SINGLE profile'
+#
+seq=`basename $0`
+seqres=$RESULT_DIR/$seq
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# remove previous $seqres.full before test
+rm -f $seqres.full
+
+# real QA test starts here
+
+# Modify as appropriate.
+_supported_fs btrfs
+_supported_os Linux
+_require_scratch_dev_pool 2
+
+_scratch_dev_pool_get 2
+_scratch_pool_mkfs -draid1
+
+_scratch_mount
+
+$BTRFS_UTIL_PROG balance start -dconvert=single $SCRATCH_MNT > $seqres.full 2>&1
+[ $? -eq 0 ] || _fail "Convert failed"
+
+_scratch_umount
+_scratch_dev_pool_put
+
+echo "Silence is golden"
+status=0
+exit
diff --git a/tests/btrfs/194.out b/tests/btrfs/194.out
new file mode 100644
index 000000000000..7bfd50ffb5a4
--- /dev/null
+++ b/tests/btrfs/194.out
@@ -0,0 +1,2 @@
+QA output created by 194
+Silence is golden
diff --git a/tests/btrfs/group b/tests/btrfs/group
index b92cb12ca66f..6a11eb1b8230 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -196,3 +196,4 @@
191 auto quick send dedupe
192 auto replay snapshot stress
193 auto quick qgroup enospc limit
+194 auto quick volume balance
--
2.7.4
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH] btrfs: Add regression test for SINGLE profile conversion 2019-09-26 7:26 [PATCH] btrfs: Add regression test for SINGLE profile conversion Nikolay Borisov @ 2019-09-26 7:34 ` Anand Jain 2019-09-26 7:50 ` Qu Wenruo 2019-09-26 8:12 ` Eryu Guan 2 siblings, 0 replies; 5+ messages in thread From: Anand Jain @ 2019-09-26 7:34 UTC (permalink / raw) To: Nikolay Borisov, fstests; +Cc: linux-btrfs, wqu, guaneryu On 9/26/19 3:26 PM, Nikolay Borisov wrote: > This is a regression test for the bug fixed by > 'btrfs: Fix a regression which we can't convert to SINGLE profile' > > Signed-off-by: Nikolay Borisov <nborisov@suse.com> Reviewed-by: Anand Jain <anand.jain@oracle.com> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] btrfs: Add regression test for SINGLE profile conversion 2019-09-26 7:26 [PATCH] btrfs: Add regression test for SINGLE profile conversion Nikolay Borisov 2019-09-26 7:34 ` Anand Jain @ 2019-09-26 7:50 ` Qu Wenruo 2019-09-26 8:12 ` Eryu Guan 2 siblings, 0 replies; 5+ messages in thread From: Qu Wenruo @ 2019-09-26 7:50 UTC (permalink / raw) To: Nikolay Borisov, fstests; +Cc: linux-btrfs, wqu, guaneryu On 2019/9/26 下午3:26, Nikolay Borisov wrote: > This is a regression test for the bug fixed by > 'btrfs: Fix a regression which we can't convert to SINGLE profile' > > Signed-off-by: Nikolay Borisov <nborisov@suse.com> Reviewed-by: Qu Wenruo <wqu@suse.com> Thanks, Qu > --- > tests/btrfs/194 | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ > tests/btrfs/194.out | 2 ++ > tests/btrfs/group | 1 + > 3 files changed, 55 insertions(+) > create mode 100755 tests/btrfs/194 > create mode 100644 tests/btrfs/194.out > > diff --git a/tests/btrfs/194 b/tests/btrfs/194 > new file mode 100755 > index 000000000000..8935defd3f5e > --- /dev/null > +++ b/tests/btrfs/194 > @@ -0,0 +1,52 @@ > +#! /bin/bash > +# SPDX-License-Identifier: GPL-2.0 > +# Copyright (c) 2019 SUSE Linux Products GmbH. All Rights Reserved. > +# > +# FS QA Test 194 > +# > +# Test that block groups profile can be converted to SINGLE. This is a regression > +# test for 'btrfs: Fix a regression which we can't convert to SINGLE profile' > +# > +seq=`basename $0` > +seqres=$RESULT_DIR/$seq > +echo "QA output created by $seq" > + > +here=`pwd` > +tmp=/tmp/$$ > +status=1 # failure is the default! > +trap "_cleanup; exit \$status" 0 1 2 3 15 > + > +_cleanup() > +{ > + cd / > + rm -f $tmp.* > +} > + > +# get standard environment, filters and checks > +. ./common/rc > +. ./common/filter > + > +# remove previous $seqres.full before test > +rm -f $seqres.full > + > +# real QA test starts here > + > +# Modify as appropriate. > +_supported_fs btrfs > +_supported_os Linux > +_require_scratch_dev_pool 2 > + > +_scratch_dev_pool_get 2 > +_scratch_pool_mkfs -draid1 > + > +_scratch_mount > + > +$BTRFS_UTIL_PROG balance start -dconvert=single $SCRATCH_MNT > $seqres.full 2>&1 > +[ $? -eq 0 ] || _fail "Convert failed" > + > +_scratch_umount > +_scratch_dev_pool_put > + > +echo "Silence is golden" > +status=0 > +exit > diff --git a/tests/btrfs/194.out b/tests/btrfs/194.out > new file mode 100644 > index 000000000000..7bfd50ffb5a4 > --- /dev/null > +++ b/tests/btrfs/194.out > @@ -0,0 +1,2 @@ > +QA output created by 194 > +Silence is golden > diff --git a/tests/btrfs/group b/tests/btrfs/group > index b92cb12ca66f..6a11eb1b8230 100644 > --- a/tests/btrfs/group > +++ b/tests/btrfs/group > @@ -196,3 +196,4 @@ > 191 auto quick send dedupe > 192 auto replay snapshot stress > 193 auto quick qgroup enospc limit > +194 auto quick volume balance > ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] btrfs: Add regression test for SINGLE profile conversion 2019-09-26 7:26 [PATCH] btrfs: Add regression test for SINGLE profile conversion Nikolay Borisov 2019-09-26 7:34 ` Anand Jain 2019-09-26 7:50 ` Qu Wenruo @ 2019-09-26 8:12 ` Eryu Guan 2019-09-26 8:24 ` Nikolay Borisov 2 siblings, 1 reply; 5+ messages in thread From: Eryu Guan @ 2019-09-26 8:12 UTC (permalink / raw) To: Nikolay Borisov; +Cc: fstests, linux-btrfs, wqu On Thu, Sep 26, 2019 at 10:26:35AM +0300, Nikolay Borisov wrote: > This is a regression test for the bug fixed by > 'btrfs: Fix a regression which we can't convert to SINGLE profile' > > Signed-off-by: Nikolay Borisov <nborisov@suse.com> > --- > tests/btrfs/194 | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ > tests/btrfs/194.out | 2 ++ > tests/btrfs/group | 1 + > 3 files changed, 55 insertions(+) > create mode 100755 tests/btrfs/194 > create mode 100644 tests/btrfs/194.out > > diff --git a/tests/btrfs/194 b/tests/btrfs/194 > new file mode 100755 > index 000000000000..8935defd3f5e > --- /dev/null > +++ b/tests/btrfs/194 > @@ -0,0 +1,52 @@ > +#! /bin/bash > +# SPDX-License-Identifier: GPL-2.0 > +# Copyright (c) 2019 SUSE Linux Products GmbH. All Rights Reserved. > +# > +# FS QA Test 194 > +# > +# Test that block groups profile can be converted to SINGLE. This is a regression > +# test for 'btrfs: Fix a regression which we can't convert to SINGLE profile' > +# > +seq=`basename $0` > +seqres=$RESULT_DIR/$seq > +echo "QA output created by $seq" > + > +here=`pwd` > +tmp=/tmp/$$ > +status=1 # failure is the default! > +trap "_cleanup; exit \$status" 0 1 2 3 15 > + > +_cleanup() > +{ > + cd / > + rm -f $tmp.* > +} > + > +# get standard environment, filters and checks > +. ./common/rc > +. ./common/filter > + > +# remove previous $seqres.full before test > +rm -f $seqres.full > + > +# real QA test starts here > + > +# Modify as appropriate. > +_supported_fs btrfs > +_supported_os Linux > +_require_scratch_dev_pool 2 > + > +_scratch_dev_pool_get 2 > +_scratch_pool_mkfs -draid1 > + > +_scratch_mount > + > +$BTRFS_UTIL_PROG balance start -dconvert=single $SCRATCH_MNT > $seqres.full 2>&1 > +[ $? -eq 0 ] || _fail "Convert failed" This indicates we're missing profile conversion tests in fstests. I think it's better to add a test framework/helpers and a full set of profile conversion tests instead of this raid1->single special case. e.g. Define a test case array, which describes what's the src/dst of this conversion and how many devices this case requires, e.g. test_cases=( # $nr_dev_min:$metadata:$data:$metadata_convert:$data_convert "2:single:single:raid0:raid0" "2:single:single:raid1:raid1" "2:single:single:raid1:raid0" "3:single:single:raid5:raid5" "4:single:single:raid6:raid6" "4:single:single:raid10:raid10" "2:raid0:raid0:raid1:raid0" "2:raid0:raid0:raid1:raid1" "3:raid0:raid0:raid5:raid5" "4:raid0:raid0:raid6:raid6" "4:raid0:raid0:raid10:raid10" "2:raid1:raid0:raid1:raid1" "3:raid1:raid0:raid5:raid5" "4:raid1:raid0:raid6:raid6" "4:raid1:raid1:raid10:raid10" "4:raid5:raid5:raid1:raid1" "4:raid5:raid5:raid6:raid6" "4:raid5:raid5:raid10:raid10" "4:raid6:raid6:raid1:raid1" "4:raid6:raid6:raid5:raid5" "4:raid6:raid6:raid10:raid10" "4:raid10:raid10:raid5:raid5" "4:raid10:raid10:raid6:raid6" <adding more cases> ) Then, create btrfs in source profile and populate fs with different kinds of files, compute sha1 digests of these files(fssum?), start conversion, after conversion compare sha1 digests. And perhaps we could split the test cases into group and add them to different tests, in case putting all cases in a single test makes the test time too long. Thanks, Eryu > + > +_scratch_umount > +_scratch_dev_pool_put > + > +echo "Silence is golden" > +status=0 > +exit > diff --git a/tests/btrfs/194.out b/tests/btrfs/194.out > new file mode 100644 > index 000000000000..7bfd50ffb5a4 > --- /dev/null > +++ b/tests/btrfs/194.out > @@ -0,0 +1,2 @@ > +QA output created by 194 > +Silence is golden > diff --git a/tests/btrfs/group b/tests/btrfs/group > index b92cb12ca66f..6a11eb1b8230 100644 > --- a/tests/btrfs/group > +++ b/tests/btrfs/group > @@ -196,3 +196,4 @@ > 191 auto quick send dedupe > 192 auto replay snapshot stress > 193 auto quick qgroup enospc limit > +194 auto quick volume balance > -- > 2.7.4 > ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] btrfs: Add regression test for SINGLE profile conversion 2019-09-26 8:12 ` Eryu Guan @ 2019-09-26 8:24 ` Nikolay Borisov 0 siblings, 0 replies; 5+ messages in thread From: Nikolay Borisov @ 2019-09-26 8:24 UTC (permalink / raw) To: Eryu Guan; +Cc: WenRuo Qu, fstests, linux-btrfs On 26.09.19 г. 11:12 ч., Eryu Guan wrote: > On Thu, Sep 26, 2019 at 10:26:35AM +0300, Nikolay Borisov wrote: >> This is a regression test for the bug fixed by >> 'btrfs: Fix a regression which we can't convert to SINGLE profile' >> >> Signed-off-by: Nikolay Borisov <nborisov@suse.com> >> --- >> tests/btrfs/194 | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ >> tests/btrfs/194.out | 2 ++ >> tests/btrfs/group | 1 + >> 3 files changed, 55 insertions(+) >> create mode 100755 tests/btrfs/194 >> create mode 100644 tests/btrfs/194.out >> >> diff --git a/tests/btrfs/194 b/tests/btrfs/194 >> new file mode 100755 >> index 000000000000..8935defd3f5e >> --- /dev/null >> +++ b/tests/btrfs/194 >> @@ -0,0 +1,52 @@ >> +#! /bin/bash >> +# SPDX-License-Identifier: GPL-2.0 >> +# Copyright (c) 2019 SUSE Linux Products GmbH. All Rights Reserved. >> +# >> +# FS QA Test 194 >> +# >> +# Test that block groups profile can be converted to SINGLE. This is a regression >> +# test for 'btrfs: Fix a regression which we can't convert to SINGLE profile' >> +# >> +seq=`basename $0` >> +seqres=$RESULT_DIR/$seq >> +echo "QA output created by $seq" >> + >> +here=`pwd` >> +tmp=/tmp/$$ >> +status=1 # failure is the default! >> +trap "_cleanup; exit \$status" 0 1 2 3 15 >> + >> +_cleanup() >> +{ >> + cd / >> + rm -f $tmp.* >> +} >> + >> +# get standard environment, filters and checks >> +. ./common/rc >> +. ./common/filter >> + >> +# remove previous $seqres.full before test >> +rm -f $seqres.full >> + >> +# real QA test starts here >> + >> +# Modify as appropriate. >> +_supported_fs btrfs >> +_supported_os Linux >> +_require_scratch_dev_pool 2 >> + >> +_scratch_dev_pool_get 2 >> +_scratch_pool_mkfs -draid1 >> + >> +_scratch_mount >> + >> +$BTRFS_UTIL_PROG balance start -dconvert=single $SCRATCH_MNT > $seqres.full 2>&1 >> +[ $? -eq 0 ] || _fail "Convert failed" > > This indicates we're missing profile conversion tests in fstests. I > think it's better to add a test framework/helpers and a full set of > profile conversion tests instead of this raid1->single special case. It's not important to be raid1, the important bit here is any profile to single. As this is a specific, targeted test. But I do agree that having a conversion test will be a more robust, long-term solution. Will work on that. > > e.g. > > Define a test case array, which describes what's the src/dst of this > conversion and how many devices this case requires, e.g. > > test_cases=( > # $nr_dev_min:$metadata:$data:$metadata_convert:$data_convert > "2:single:single:raid0:raid0" > "2:single:single:raid1:raid1" > "2:single:single:raid1:raid0" > "3:single:single:raid5:raid5" > "4:single:single:raid6:raid6" > "4:single:single:raid10:raid10" > "2:raid0:raid0:raid1:raid0" > "2:raid0:raid0:raid1:raid1" > "3:raid0:raid0:raid5:raid5" > "4:raid0:raid0:raid6:raid6" > "4:raid0:raid0:raid10:raid10" > "2:raid1:raid0:raid1:raid1" > "3:raid1:raid0:raid5:raid5" > "4:raid1:raid0:raid6:raid6" > "4:raid1:raid1:raid10:raid10" > "4:raid5:raid5:raid1:raid1" > "4:raid5:raid5:raid6:raid6" > "4:raid5:raid5:raid10:raid10" > "4:raid6:raid6:raid1:raid1" > "4:raid6:raid6:raid5:raid5" > "4:raid6:raid6:raid10:raid10" > "4:raid10:raid10:raid5:raid5" > "4:raid10:raid10:raid6:raid6" > <adding more cases> > ) > > Then, create btrfs in source profile and populate fs with different > kinds of files, compute sha1 digests of these files(fssum?), start > conversion, after conversion compare sha1 digests. > > And perhaps we could split the test cases into group and add them to > different tests, in case putting all cases in a single test makes the > test time too long. > > Thanks, > Eryu > >> + >> +_scratch_umount >> +_scratch_dev_pool_put >> + >> +echo "Silence is golden" >> +status=0 >> +exit >> diff --git a/tests/btrfs/194.out b/tests/btrfs/194.out >> new file mode 100644 >> index 000000000000..7bfd50ffb5a4 >> --- /dev/null >> +++ b/tests/btrfs/194.out >> @@ -0,0 +1,2 @@ >> +QA output created by 194 >> +Silence is golden >> diff --git a/tests/btrfs/group b/tests/btrfs/group >> index b92cb12ca66f..6a11eb1b8230 100644 >> --- a/tests/btrfs/group >> +++ b/tests/btrfs/group >> @@ -196,3 +196,4 @@ >> 191 auto quick send dedupe >> 192 auto replay snapshot stress >> 193 auto quick qgroup enospc limit >> +194 auto quick volume balance >> -- >> 2.7.4 >> > ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2019-09-26 8:24 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-09-26 7:26 [PATCH] btrfs: Add regression test for SINGLE profile conversion Nikolay Borisov 2019-09-26 7:34 ` Anand Jain 2019-09-26 7:50 ` Qu Wenruo 2019-09-26 8:12 ` Eryu Guan 2019-09-26 8:24 ` Nikolay Borisov
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.