diff --git a/test/Makefile b/test/Makefile index ffeda323e..0be26cab0 100644 --- a/test/Makefile +++ b/test/Makefile @@ -74,7 +74,7 @@ PROGS+= test${t} PROGS+= t10a t11a t11b t40a t40b t40c t40d t40e t40f t60a t60b \ t67a t67b t68a t68b -SCRIPTS+= run testinterp.sh testsh1.sh testsh2.sh +SCRIPTS+= run testinterp.sh testsh1.sh testsh2.sh testmfs.sh testisofs.sh .if ${MKPIC} == "yes" # Build them as dynamic executables by default if shared libraries diff --git a/test/run b/test/run index 453126e08..5d5ef23d6 100755 --- a/test/run +++ b/test/run @@ -25,7 +25,7 @@ alltests=" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 \ 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 \ 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 \ 61 62 63 64 65 66 67 68 69 70 71 72 75 \ - sh1.sh sh2.sh interp.sh" + sh1 sh2 interp mfs isofs" tests_no=`expr 0` # test mmap only if enabled in sysenv @@ -147,6 +147,7 @@ do rm -f $out fi else + echo "${diagprefix}warning: skipping test$i" skipped=`expr $skipped + 1` fi done diff --git a/test/testisofs.sh b/test/testisofs.sh new file mode 100644 index 000000000..0118f390a --- /dev/null +++ b/test/testisofs.sh @@ -0,0 +1,67 @@ +# Create and verify a simple ISO filesystem +# +#!/bin/sh + +set -e + +echo -n "isofs test " + +ramdev=/dev/ram +mp=/mnt +testdir=isofstest +fsimage=isofsimage +contents=CONTENTS +out1=v1 +out2=v2 +rm -rf $testdir $fsimage $out1 $out2 + +if [ -d $testdir ] +then + echo "dir?" + exit 1 +fi + +mkdir -p $testdir $testdir/$contents + +if [ ! -d $testdir ] +then + echo "no dir?" + exit 1 +fi + +# Make some small & big & bigger files + +prevf=$testdir/$contents/FILE +echo "Test contents 123" >$prevf +for double in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 +do fn=$testdir/$contents/FN.$double + cat $prevf $prevf >$fn + prevf=$fn +done + +# Make an ISO filesystem image out of it +writeisofs -s0x0 -l MINIX $testdir $fsimage >/dev/null 2>&1 + +# umount previous things +su root -c "umount $ramdev >/dev/null 2>&1 || true" +su root -c "umount $mp >/dev/null 2>&1 || true" + +# Mount it on a RAM disk +su root -c "ramdisk 50000 $ramdev >/dev/null 2>&1" +su root -c "cp $fsimage $ramdev" +su root -c "mount -t isofs $ramdev $mp >/dev/null 2>&1" + +# compare contents +(cd $testdir/$contents && sha1 * | sort) >$out1 +(cd $mp/$contents && sha1 * | sort) >$out2 + +diff -u $out1 $out2 + +su root -c "umount $ramdev >/dev/null 2>&1" + +# cleanup +rm -rf $testdir $fsimage $out1 $out2 + +echo ok + +exit 0 diff --git a/test/testmfs.sh b/test/testmfs.sh new file mode 100755 index 000000000..f597a993f --- /dev/null +++ b/test/testmfs.sh @@ -0,0 +1,85 @@ +#!/bin/sh + +# expected sha1sum of the FS image +expect=55d61f457204c206628c848771a1f9d75cfa3afa + +set -e + +# ownership matters for the proto file. +# the run script runs us with uid 2, gid 0. +if [ "`id -u`" != 2 -o "`id -g`" != 0 ] +then + echo "test script should be run with uid 2, gid 0." + exit 1 +fi + +echo -n "mfs test " + +testdir=fstest +protofile=proto +fsimage=fsimage +rm -rf $testdir $protofile $fsimage + +if [ -d $testdir ] +then + echo "dir?" + exit 1 +fi + +mkdir -p $testdir $testdir/contents $testdir/modes + +if [ ! -d $testdir ] +then + echo "no dir?" + exit 1 +fi + +# Make some small & big & bigger files + +prevf=$testdir/contents/file +echo "Test contents 123" >$prevf +for double in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 +do fn=$testdir/contents/fn.$double + cat $prevf $prevf >$fn + prevf=$fn +done + +# Make some files with various modes & mtimes + +for many in 0 1 2 3 4 5 6 7 8 9 +do for m1 in 0 1 2 3 4 5 6 7 + do for m2 in 0 1 2 3 4 5 6 7 + do for m3 in 0 1 2 3 4 5 6 7 + do + mode=${m1}${m2}${m3} + fn=$testdir/modes/m${mode}${many} + echo "$many $m1 $m2 $m3 $mode" > $fn + chmod $mode $fn + done + done + done +done + +# Make an MFS filesystem image out of it + +BS=4096 +BLOCKS=15000 +INODES=6000 +dd if=/dev/zero seek=$BLOCKS of=$fsimage count=1 bs=$BS >/dev/null 2>&1 + +# -s keeps modes +mkproto -s -b $BLOCKS -i $INODES $testdir >$protofile + +mkfs.mfs -T 1 -b $BLOCKS -i $INODES $fsimage $protofile >/dev/null 2>&1 +sum="`sha1 $fsimage | awk '{ print $4 }'`" + +if [ $sum != $expect ] +then + echo sum $sum is not expected $expect + exit 1 +fi + +echo ok + +exit 0 +