• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/sh
2
3# This script generates a variety of filesystems and checks that they
4# are identical to ones that are known to be mountable, and pass fsck
5# and various other sanity checks.
6
7# Passing these tests is preferable to passing test-mount.sh because
8# this script doesn't require root, and because passing these tests
9# guarantees byte-for-byte agreement with other builds, ports,
10# architectures, times of day etc.
11
12set -e
13
14. ./test-gen.lib
15
16# md5cmp - Calculate MD5 digest and compare it to an expected value.
17# Usage: md5cmp expected-digest
18md5cmp () {
19	checksum=$1
20	md5=`calc_digest`
21	if [ x$md5 = x$checksum ] ; then
22		echo PASSED
23	else
24		echo FAILED
25		exit 1
26	fi
27}
28
29# dtest - Exercises the -d directory option of genext2fs
30# Creates an image with a file of given size and verifies it
31# Usage: dtest file-size number-of-blocks correct-checksum
32dtest () {
33	size=$1; blocks=$2; checksum=$3
34	echo Testing with file of size $size
35	dgen $size $blocks
36	md5cmp $checksum
37	gen_cleanup
38}
39
40# ftest - Exercises the -f spec-file option of genext2fs
41# Creates an image with the devices mentioned in the given spec
42# file and verifies it
43# Usage: ftest spec-file number-of-blocks correct-checksum
44ftest () {
45	fname=$1; blocks=$2; checksum=$3
46	echo Testing with devices file $fname
47	fgen $fname $blocks
48	md5cmp $checksum
49	gen_cleanup
50}
51
52# NB: to regenerate these values, always use test-mount.sh, that is,
53# replace the following lines with the output of
54# sudo sh test-mount.sh|grep test
55
56dtest 0 4096 3bc6424b8fcd51a0de34ee59d91d5f16
57dtest 0 8193 f174804f6b433b552706cbbfc60c416d
58dtest 0 8194 4855a55d0cbdc44584634df49ebd5711
59dtest 1 4096 09c569b6bfb45222c729c42d04d5451f
60dtest 12288 4096 61febcbfbf32024ef99103fcdc282c39
61dtest 274432 4096 0c517803552c55c1806e4220b0a0164f
62dtest 8388608 9000 e0e5ea15bced10ab486d8135584b5d8e
63dtest 16777216 20000 fdf636eb905ab4dc1bf76dce5ac5d209
64ftest device_table.txt 4096 a0af06d944b11d2902dfd705484c64cc
65