From: Chengguang Xu <cgxu519@mykernel.net>
To: fstests@vger.kernel.org, linux-unionfs@vger.kernel.org
Cc: guaneryu@gmail.com, amir73il@gmail.com, miklos@szeredi.hu,
Chengguang Xu <cgxu519@mykernel.net>
Subject: [PATCH] overlay/066: adjust test file size && add more test patterns
Date: Tue, 29 Oct 2019 13:57:13 +0800 [thread overview]
Message-ID: <20191029055713.28191-1-cgxu519@mykernel.net> (raw)
Make many small holes in 10M test file seems not very
helpful for test coverage and it takes too much time
on creating test files. So in order to improve test
speed we adjust test file size to (10 * iosize) for
iosize aligned hole files meanwhile add more test
patterns for small random holes and small empty file.
Signed-off-by: Chengguang Xu <cgxu519@mykernel.net>
---
tests/overlay/066 | 89 +++++++++++++++++++++++++++++++++++------------
1 file changed, 67 insertions(+), 22 deletions(-)
diff --git a/tests/overlay/066 b/tests/overlay/066
index 285a5aff..fb8f5e5c 100755
--- a/tests/overlay/066
+++ b/tests/overlay/066
@@ -40,49 +40,82 @@ _require_scratch
# Remove all files from previous tests
_scratch_mkfs
-# We have totally 14 test files in this test.
+# We have totally 16 test files in this test.
# The detail as below:
-# 1 empty file(10M) + 2^0(K)..2^11(K) hole size files(each 10M) + 1 random hole size file(100M).
+# 1 small empty file 4K
+# 1 big empty file 4M
+# 1 small random hole file 10M
+# 1 big random hole file 100M
+#
+# 12 files with variant iosize aligned holes.
+# 2^0(K)..2^11(K) hole size files(file size = 10 * iosize)
#
# Considering both upper and lower fs will fill zero when copy-up
# hole area in the file, this test at least requires double disk
# space of the sum of above test files' size.
-_require_fs_space $OVL_BASE_SCRATCH_MNT $(((10*1024*13 + 100*1024*1) * 2))
+_require_fs_space $OVL_BASE_SCRATCH_MNT $((((4) + (4096) + (10 * 1024) \
+ + (100 * 1024) + (10 * (1 + 2048) * 12 / 2)) * 2))
lowerdir=$OVL_BASE_SCRATCH_MNT/$OVL_LOWER
upperdir=$OVL_BASE_SCRATCH_MNT/$OVL_UPPER
testfile="copyup_sparse_test"
-# Create a completely empty hole file(10M).
-file_size=10240
-$XFS_IO_PROG -fc "truncate ${file_size}K" "${lowerdir}/${testfile}_empty_holefile" \
+# Create a small completely empty hole file(4K).
+file_size=4
+$XFS_IO_PROG -fc "truncate ${file_size}K" "${lowerdir}/${testfile}_empty_small_holefile" \
+ >>$seqres.full
+
+# Create a big completely empty hole file(4M).
+file_size=4096
+$XFS_IO_PROG -fc "truncate ${file_size}K" "${lowerdir}/${testfile}_empty_big_holefile" \
>>$seqres.full
-# Create 2^0(K)..2^11(K) hole size test files(each 10M).
+# Create 2^0(K)..2^11(K) hole size test files(file size = 10 * iosize).
#
# The pattern is like below, both hole and data are equal to
# iosize except last hole.
#
# |-- hole --|-- data --| ... |-- data --|-- hole --|
-iosize=1
+min_iosize=1
max_iosize=2048
-file_size=10240
-max_pos=`expr $file_size - $max_iosize`
+iosize=$min_iosize
while [ $iosize -le $max_iosize ]; do
+ file_size=$(($iosize * 10))
+ max_pos=$(($file_size - $iosize))
pos=$iosize
$XFS_IO_PROG -fc "truncate ${file_size}K" \
"${lowerdir}/${testfile}_iosize${iosize}K_holefile" >>$seqres.full
while [ $pos -lt $max_pos ]; do
$XFS_IO_PROG -fc "pwrite ${pos}K ${iosize}K" \
"${lowerdir}/${testfile}_iosize${iosize}K_holefile" >>$seqres.full
- pos=`expr $pos + $iosize + $iosize`
+ pos=$(($pos + $iosize * 2))
done
- iosize=`expr $iosize + $iosize`
+ iosize=$(($iosize * 2))
done
+# Create test file with many random small holes(hole size is between 4K and 512K),
+# total file size is 10M.
+
+pos=4
+max_pos=9216
+file_size=10240
+min_hole=4
+max_hole=512
+
+$XFS_IO_PROG -fc "truncate ${file_size}K" "${lowerdir}/${testfile}_random_small_holefile" \
+ >>$seqres.full
+
+while [ $pos -le $max_pos ]; do
+ iosize=$(($RANDOM % ($max_hole - $min_hole) + $min_hole))
+ $XFS_IO_PROG -fc "pwrite ${pos}K ${iosize}K" \
+ "${lowerdir}/${testfile}_random_small_holefile" >>$seqres.full
+ pos=$(($pos + $iosize * 2))
+done
+
+
# Create test file with many random holes(hole size is between 1M and 5M),
# total file size is 100M.
@@ -92,14 +125,14 @@ file_size=102400
min_hole=1024
max_hole=5120
-$XFS_IO_PROG -fc "truncate ${file_size}K" "${lowerdir}/${testfile}_random_holefile" \
+$XFS_IO_PROG -fc "truncate ${file_size}K" "${lowerdir}/${testfile}_random_big_holefile" \
>>$seqres.full
while [ $pos -le $max_pos ]; do
iosize=$(($RANDOM % ($max_hole - $min_hole) + $min_hole))
$XFS_IO_PROG -fc "pwrite ${pos}K ${iosize}K" \
- "${lowerdir}/${testfile}_random_holefile" >>$seqres.full
- pos=`expr $pos + $iosize + $iosize`
+ "${lowerdir}/${testfile}_random_big_holefile" >>$seqres.full
+ pos=$(($pos + $iosize * 2))
done
_scratch_mount
@@ -112,18 +145,30 @@ done
echo "Silence is golden"
# Check all copy-up files in upper layer.
-iosize=1
-while [ $iosize -le 2048 ]; do
+min_iosize=1
+max_iosize=2048
+iosize=$min_iosize
+
+while [ $iosize -le $max_iosize ]; do
diff "${lowerdir}/${testfile}_iosize${iosize}K_holefile" \
"${upperdir}/${testfile}_iosize${iosize}K_holefile" >>$seqres.full ||\
echo "${upperdir}/${testfile}_iosize${iosize}K_holefile" copy up failed!
- iosize=`expr $iosize + $iosize`
+ iosize=$(($iosize * 2))
done
-diff "${lowerdir}/${testfile}_empty_holefile" "${upperdir}/${testfile}_empty_holefile" \
- >>$seqres.full || echo "${upperdir}/${testfile}_empty_holefile" copy up failed!
-diff "${lowerdir}/${testfile}_random_holefile" "${upperdir}/${testfile}_random_holefile" \
- >>$seqres.full || echo "${upperdir}/${testfile}_random_holefile" copy up failed!
+# Check empty hole files
+diff "${lowerdir}/${testfile}_empty_small_holefile" "${upperdir}/${testfile}_empty_small_holefile" \
+ >>$seqres.full || echo "${upperdir}/${testfile}_empty_small_holefile" copy up failed!
+
+diff "${lowerdir}/${testfile}_empty_big_holefile" "${upperdir}/${testfile}_empty_big_holefile" \
+ >>$seqres.full || echo "${upperdir}/${testfile}_empty_big_holefile" copy up failed!
+
+# Check random hole files
+diff "${lowerdir}/${testfile}_random_small_holefile" "${upperdir}/${testfile}_random_small_holefile" \
+ >>$seqres.full || echo "${upperdir}/${testfile}_random_small_holefile" copy up failed!
+
+diff "${lowerdir}/${testfile}_random_big_holefile" "${upperdir}/${testfile}_random_big_holefile" \
+ >>$seqres.full || echo "${upperdir}/${testfile}_random_big_holefile" copy up failed!
# success, all done
status=0
--
2.20.1
next reply other threads:[~2019-10-29 5:57 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-29 5:57 Chengguang Xu [this message]
2019-10-29 8:32 ` [PATCH] overlay/066: adjust test file size && add more test patterns Amir Goldstein
2019-10-29 11:17 ` Chengguang Xu
2019-10-29 11:17 ` Chengguang Xu
2019-10-29 11:58 ` Amir Goldstein
2019-10-29 12:32 ` Amir Goldstein
2019-10-30 4:46 ` Chengguang Xu
2019-10-30 5:33 ` Amir Goldstein
2019-11-05 6:00 ` Chengguang Xu
2019-11-05 7:37 ` Amir Goldstein
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=20191029055713.28191-1-cgxu519@mykernel.net \
--to=cgxu519@mykernel.net \
--cc=amir73il@gmail.com \
--cc=fstests@vger.kernel.org \
--cc=guaneryu@gmail.com \
--cc=linux-unionfs@vger.kernel.org \
--cc=miklos@szeredi.hu \
/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.