aboutsummaryrefslogtreecommitdiff
path: root/test.sh
diff options
context:
space:
mode:
Diffstat (limited to 'test.sh')
-rwxr-xr-xtest.sh64
1 files changed, 64 insertions, 0 deletions
diff --git a/test.sh b/test.sh
new file mode 100755
index 0000000..dbe71ef
--- /dev/null
+++ b/test.sh
@@ -0,0 +1,64 @@
+#!/bin/sh
+
+# This script generates a variety of filesystems and checks that they
+# are identical to ones that are known to be mountable, and pass fsck
+# and various other sanity checks.
+
+# Passing these tests is preferable to passing test-mount.sh because
+# this script doesn't require root, and because passing these tests
+# guarantees byte-for-byte agreement with other builds, ports,
+# architectures, times of day etc.
+
+set -e
+
+. ./test-gen.lib
+
+# md5cmp - Calculate MD5 digest and compare it to an expected value.
+# Usage: md5cmp expected-digest
+md5cmp () {
+ checksum=$1
+ md5=`calc_digest`
+ if [ x$md5 = x$checksum ] ; then
+ echo PASSED
+ else
+ echo FAILED
+ exit 1
+ fi
+}
+
+# dtest - Exercises the -d directory option of genext2fs
+# Creates an image with a file of given size and verifies it
+# Usage: dtest file-size number-of-blocks correct-checksum
+dtest () {
+ size=$1; blocks=$2; checksum=$3
+ echo Testing with file of size $size
+ dgen $size $blocks
+ md5cmp $checksum
+ gen_cleanup
+}
+
+# ftest - Exercises the -f spec-file option of genext2fs
+# Creates an image with the devices mentioned in the given spec
+# file and verifies it
+# Usage: ftest spec-file number-of-blocks correct-checksum
+ftest () {
+ fname=$1; blocks=$2; checksum=$3
+ echo Testing with devices file $fname
+ fgen $fname $blocks
+ md5cmp $checksum
+ gen_cleanup
+}
+
+# NB: to regenerate these values, always use test-mount.sh, that is,
+# replace the following lines with the output of
+# sudo sh test-mount.sh|grep test
+
+dtest 0 4096 3bc6424b8fcd51a0de34ee59d91d5f16
+dtest 0 8193 f174804f6b433b552706cbbfc60c416d
+dtest 0 8194 4855a55d0cbdc44584634df49ebd5711
+dtest 1 4096 09c569b6bfb45222c729c42d04d5451f
+dtest 12288 4096 61febcbfbf32024ef99103fcdc282c39
+dtest 274432 4096 0c517803552c55c1806e4220b0a0164f
+dtest 8388608 9000 e0e5ea15bced10ab486d8135584b5d8e
+dtest 16777216 20000 fdf636eb905ab4dc1bf76dce5ac5d209
+ftest device_table.txt 4096 a0af06d944b11d2902dfd705484c64cc