Home | History | Annotate | Download | only in genext2fs
      1 #!/bin/sh
      2 
      3 # Use this script if you need to regenerate the digest values
      4 # in test.sh, or if you don't care about digests and you just
      5 # want to see some fsck results. Should be run as root.
      6 
      7 set -e
      8 
      9 . ./test-gen.lib
     10 
     11 test_cleanup () {
     12 	umount mnt 2>/dev/null || true
     13 	rm -rf mnt fout lsout
     14 }
     15 
     16 fail () {
     17 	echo FAILED
     18 	test_cleanup
     19 	gen_cleanup
     20 	exit 1
     21 }
     22 
     23 pass () {
     24 	md5=`calc_digest`
     25 	echo PASSED
     26 	echo $@ $md5
     27 	test_cleanup
     28 	gen_cleanup
     29 }
     30 
     31 # dtest-mount - Exercise the -d directory option of genext2fs
     32 # Creates an image with a file of given size, verifies it
     33 # and returns the command line with which to invoke dtest()
     34 # Usage: dtest-mount file-size number-of-blocks 
     35 dtest_mount () {
     36 	size=$1; blocks=$2
     37 	echo Testing with file of size $size
     38 	dgen $size $blocks
     39 	/sbin/e2fsck -fn ext2.img || fail
     40 	mkdir -p mnt
     41 	mount -t ext2 -o ro,loop ext2.img mnt || fail
     42 	if (! [ -f mnt/file.$size ]) || \
     43 	      [ $size != "`ls -al mnt | grep file.$size |
     44 	                                awk '{print $5}'`" ] ; then
     45 		fail
     46 	fi
     47 	pass dtest $size $blocks
     48 }
     49 
     50 # ftest-mount - Exercise the -f spec-file option of genext2fs
     51 # Creates an image with the devices mentioned in the given spec 
     52 # file, verifies it, and returns the command line with which to
     53 # invoke ftest()
     54 # Usage: ftest-mount spec-file number-of-blocks 
     55 ftest_mount () {
     56 	fname=$1; blocks=$2 
     57 	echo Testing with devices file $fname
     58 	fgen $fname $blocks
     59 	/sbin/e2fsck -fn ext2.img || fail
     60 	mkdir -p mnt
     61 	mount -t ext2 -o ro,loop ext2.img mnt || fail
     62 	[ -d mnt/dev ] || fail
     63 	# Exclude those devices that have interpolated
     64 	# minor numbers, as being too hard to match.
     65 	egrep -v "(hda|hdb|tty|loop|ram|ubda)" $fname | \
     66 		grep '^[^	#]*	[bc]' | \
     67 		awk '{print $1,$4,$5,$6","$7}'| \
     68 		sort -d -k3.6 > fout
     69 	ls -aln mnt/dev | \
     70 		egrep -v "(hda|hdb|tty|loop|ram|ubda)" | \
     71 		grep ^[bc] | \
     72 		awk '{ print "/dev/"$10,$3,$4,$5$6}' | \
     73 		sort -d -k3.6 > lsout
     74 	diff fout lsout || fail
     75 	pass ftest $fname $blocks
     76 }
     77 
     78 dtest_mount 0 4096 
     79 dtest_mount 0 8193
     80 dtest_mount 0 8194
     81 dtest_mount 1 4096 
     82 dtest_mount 12288 4096 
     83 dtest_mount 274432 4096 
     84 dtest_mount 8388608 9000 
     85 dtest_mount 16777216 20000
     86 
     87 ftest_mount device_table.txt 4096 
     88