All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Chinner <david@fromorbit.com>
To: fstests@vger.kernel.org
Subject: [PATCH 1/2] fstests: generic test setup preamble
Date: Tue, 29 May 2018 10:47:51 +1000	[thread overview]
Message-ID: <20180529004752.8243-2-david@fromorbit.com> (raw)
In-Reply-To: <20180529004752.8243-1-david@fromorbit.com>

From: Dave Chinner <dchinner@redhat.com>

So many tests chop random bits out of the mandaotry test setup
preamble which leads to subtle problems and stray files being dumped
all over the place. Create a common test preamble with hooks for
local cleanup functions so we can prevent this in future.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
---
 common/setup_test     | 23 +++++++++++++++++++++++
 new                   | 24 ++++--------------------
 soak                  | 19 +++++++------------
 tests/generic/001     | 42 ++++++++----------------------------------
 tests/generic/001.out |  2 --
 tests/xfs/001         | 41 +++++++----------------------------------
 6 files changed, 49 insertions(+), 102 deletions(-)
 create mode 100644 common/setup_test

diff --git a/common/setup_test b/common/setup_test
new file mode 100644
index 000000000000..0e22452b4f6e
--- /dev/null
+++ b/common/setup_test
@@ -0,0 +1,23 @@
+# common test setup preamble
+# test specific cleanup is done via the cleanup() function now.
+
+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_test; exit \$status" 0 1 2 3 15
+
+_cleanup_test()
+{
+	# call local test cleanup function first, then cleanup tmp files
+	cleanup
+	cd /
+	rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
diff --git a/new b/new
index 4eacccd3bf8b..5e7f6a3c4198 100755
--- a/new
+++ b/new
@@ -181,31 +181,15 @@ cat <<End-of-File >$tdir/$id
 #-----------------------------------------------------------------------
 #
 
-seq=\`basename \$0\`
-seqres=\$RESULT_DIR/\$seq
-echo "QA output created by \$seq"
+. common/setup_test
 
-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
+# test exit cleanup goes here
+local_cleanup() { true }
 
 # remove previous \$seqres.full before test
 rm -f \$seqres.full
 
-# real QA test starts here
-
-# Modify as appropriate.
+# include test specific environments here
 _supported_fs generic
 _supported_os Linux
 _require_test
diff --git a/soak b/soak
index 26b345a3e4a9..8fd0b9043329 100755
--- a/soak
+++ b/soak
@@ -18,21 +18,16 @@
 #-----------------------------------------------------------------------
 #
 
-# get standard environment, filters and checks
-. ./common/rc
-. ./common/filter
+. common/setup_test
 
-tmp=/tmp/$$
-seq=soak
-status=1	# failure is the default!
-
-_cleanup()
-{
-    echo "        *** umount"
-    _scratch_unmount >/dev/null 2>&1
+# test exit cleanup goes here
+cleanup() {
+	echo "        *** umount"
+	_scratch_unmount >/dev/null 2>&1
 }
 
-trap "_cleanup; exit \$status" 0 1 2 3 15
+# remove previous $seqres.full before test
+rm -f $seqres.full
 
 ROOT="."
 LOG="$ROOT/soak.log"
diff --git a/tests/generic/001 b/tests/generic/001
index 0edd41f1e2cc..f86dc5a85d5d 100755
--- a/tests/generic/001
+++ b/tests/generic/001
@@ -31,21 +31,17 @@
 #-----------------------------------------------------------------------
 #
 
-seq=`basename $0`
-seqres=$RESULT_DIR/$seq
-echo "QA output created by $seq"
+. common/setup_test
 
-# get standard environment, filters and checks
-. ./common/rc
-. ./common/filter
+# test exit cleanup goes here
+cleanup() {
+	rm -rf $TEST_DIR/$$
+}
 
-tmp=/tmp/$$
-here=`pwd`
-status=1
-done_cleanup=false
-trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15
+# remove previous $seqres.full before test
+rm -f $seqres.full
 
-# real QA test starts here
+# include test specific environments here
 _supported_fs generic
 _supported_os Linux
 _require_test
@@ -276,28 +272,6 @@ _check()
     $verbose && echo
 }
 
-_cleanup()
-{
-    # cleanup
-    #
-    if $done_cleanup
-    then
-	:
-    elif [ $status -eq 0 ]
-    then
-	$verbose && echo "cleanup"
-	cd /
-	rm -rf $TEST_DIR/$$
-	done_cleanup=true
-    fi
-}
-
-rm -f $seqres.full
-status=0
-_cleanup
-status=1
-done_cleanup=false
-
 _setup
 
 # do the test
diff --git a/tests/generic/001.out b/tests/generic/001.out
index e843a586cac2..4df5c4ca419b 100644
--- a/tests/generic/001.out
+++ b/tests/generic/001.out
@@ -1,9 +1,7 @@
 QA output created by 001
-cleanup
 setup ....................................
 iter 1 chain ... check ....................................
 iter 2 chain ... check ....................................
 iter 3 chain ... check ....................................
 iter 4 chain ... check ....................................
 iter 5 chain ... check ....................................
-cleanup
diff --git a/tests/xfs/001 b/tests/xfs/001
index 2c205f064e2e..1b5a1020e173 100755
--- a/tests/xfs/001
+++ b/tests/xfs/001
@@ -23,44 +23,17 @@
 #-----------------------------------------------------------------------
 #
 
-seq=`basename $0`
-seqres=$RESULT_DIR/$seq
-echo "QA output created by $seq"
+. common/setup_test
 
-here=`pwd`
-tmp=/tmp/$$
-status=1	# failure is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
-
-_cleanup()
-{
-    cd /
-    rm -f $tmp.*
+# test exit cleanup goes here
+cleanup() {
+	rm -rf $TEST_DIR/$$
 }
 
-_do_bit_test()
-{
-	field="$1"
-	bits="$2"
-
-	echo "testing $field with $bits bits"
-	_scratch_xfs_db -x -c "inode $FILE_INO" -c "write $field 0"
-	num=1
-	for n in `seq 0 1 $bits`; do
-		_scratch_xfs_db -x -c "inode $FILE_INO" \
-			  -c "write $field $num"
-		let num=$num*2
-	done
-	echo
-}
-
-# get standard environment, filters and checks
-. ./common/rc
-. ./common/filter
-
-# real QA test starts here
+# remove previous $seqres.full before test
+rm -f $seqres.full
 
-# Modify as appropriate.
+# include test specific environments here
 _supported_fs xfs
 _supported_os Linux
 _require_scratch_nocheck
-- 
2.17.0


  reply	other threads:[~2018-05-29  0:47 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-29  0:47 [RFC PATCH 0/2] fstests: boiler plate reductions Dave Chinner
2018-05-29  0:47 ` Dave Chinner [this message]
2018-06-03 13:53   ` [PATCH 1/2] fstests: generic test setup preamble Eryu Guan
2018-06-04  2:58     ` Dave Chinner
2018-05-29  0:47 ` [PATCH 2/2] fstests: start changeover to spdx license tags Dave Chinner
2018-05-29  2:44 ` [RFC PATCH 0/2] fstests: boiler plate reductions Dave Chinner
2018-06-03 13:51 ` Eryu Guan
2018-06-03 17:55   ` Theodore Y. Ts'o
2018-06-04  2:50   ` Dave Chinner
2018-06-04  3:00     ` Dave Chinner
2018-06-07  5:30       ` Eryu Guan
2018-06-08  6:17         ` Eryu Guan

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=20180529004752.8243-2-david@fromorbit.com \
    --to=david@fromorbit.com \
    --cc=fstests@vger.kernel.org \
    /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 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.