Add some simple end-to-end tests for btrfs-convert.
diff mbox

Message ID 1400692827-14606-1-git-send-email-abuchbinder@google.com
State Accepted
Headers show

Commit Message

Adam Buchbinder May 21, 2014, 5:20 p.m. UTC
These use the system's mke2fs, and don't require loop devices
or root privileges.

They don't pick up anything with the default flags right now,
but they do pick up some sanitizer issues when the tools are
compiled with any of -fsanitize={address,memory,thread}.

Signed-off-by: Adam Buchbinder <abuchbinder@google.com>
---
 Makefile               |  2 +-
 tests/convert-tests.sh | 35 +++++++++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+), 1 deletion(-)
 create mode 100644 tests/convert-tests.sh

Comments

David Sterba May 28, 2014, 5:30 p.m. UTC | #1
On Wed, May 21, 2014 at 10:20:27AM -0700, Adam Buchbinder wrote:
> These use the system's mke2fs, and don't require loop devices
> or root privileges.

Nice, thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Julien Muchembled May 30, 2014, 6:26 p.m. UTC | #2
Le 05/21/14 19:20, Adam Buchbinder a écrit :
> +	# 256MB is the smallest acceptable btrfs image.
> +	dd if=/dev/zero of=$here/test.img bs=1024 count=$((256*1024)) \
> +		>> convert-tests-results.txt 2>&1 || _fail "dd failed"

What about using a sparse file to speed up the test and be nicer with the underlying storage ?
For example:
  truncate -s 256M $here/test.img

Because this does not reset test.img with zeros, one may want to the
  rm -f test.img
line at the beginning of the test function.
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Sterba June 12, 2014, 9:21 a.m. UTC | #3
On Fri, May 30, 2014 at 08:26:02PM +0200, Julien Muchembled wrote:
> Le 05/21/14 19:20, Adam Buchbinder a écrit :
> > +	# 256MB is the smallest acceptable btrfs image.
> > +	dd if=/dev/zero of=$here/test.img bs=1024 count=$((256*1024)) \
> > +		>> convert-tests-results.txt 2>&1 || _fail "dd failed"
> 
> What about using a sparse file to speed up the test and be nicer with the underlying storage ?
> For example:
>   truncate -s 256M $here/test.img
> 
> Because this does not reset test.img with zeros, one may want to the
>   rm -f test.img
> line at the beginning of the test function.

Yes, good idea. Patches welcome. Thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch
diff mbox

diff --git a/Makefile b/Makefile
index da05197..8f002f3 100644
--- a/Makefile
+++ b/Makefile
@@ -20,7 +20,7 @@  libbtrfs_objects = send-stream.o send-utils.o rbtree.o btrfs-list.o crc32c.o \
 libbtrfs_headers = send-stream.h send-utils.h send.h rbtree.h btrfs-list.h \
 	       crc32c.h list.h kerncompat.h radix-tree.h extent-cache.h \
 	       extent_io.h ioctl.h ctree.h btrfsck.h
-TESTS = fsck-tests.sh
+TESTS = fsck-tests.sh convert-tests.sh
 
 INSTALL = install
 prefix ?= /usr/local
diff --git a/tests/convert-tests.sh b/tests/convert-tests.sh
new file mode 100644
index 0000000..87369c5
--- /dev/null
+++ b/tests/convert-tests.sh
@@ -0,0 +1,35 @@ 
+#!/bin/bash
+#
+# convert ext2/3/4 images to btrfs images, and make sure the results are
+# clean.
+#
+
+here=`pwd`
+
+_fail()
+{
+	echo "$*" | tee -a convert-tests-results.txt
+	exit 1
+}
+
+rm -f convert-tests-results.txt
+rm -f test.img
+
+test(){
+	echo "     [TEST]    $1"
+        shift
+        echo "creating ext image with: $*" >> convert-tests-results.txt
+	# 256MB is the smallest acceptable btrfs image.
+	dd if=/dev/zero of=$here/test.img bs=1024 count=$((256*1024)) \
+		>> convert-tests-results.txt 2>&1 || _fail "dd failed"
+	$* -F $here/test.img >> convert-tests-results.txt 2>&1 \
+		|| _fail "filesystem create failed"
+	$here/btrfs-convert $here/test.img >> convert-tests-results.txt 2>&1 \
+		|| _fail "btrfs-convert failed"
+	$here/btrfsck $here/test.img >> convert-tests-results.txt 2>&1 \
+		|| _fail "btrfsck detected errors"
+}
+
+test "ext2, 4k blocksize" mke2fs -b 4096
+test "ext3, 4k blocksize" mke2fs -j -b 4096
+test "ext4, 4k blocksize" mke2fs -t ext4 -b 4096