Remove selinux support code
[project/make_ext4fs.git] / test_ext4fixup
1 #!/bin/bash
2
3 typeset -i I ITERATIONS PHASE LOC COUNT MAXCOUNT
4
5 ME=`basename $0`
6
7 if [ "$#" -ne 3 ]
8 then
9 echo "$ME: Usage: $ME <iterations> <maxcount> <filesystem_image>" >&2
10 exit 1;
11 fi
12
13 ITERATIONS="$1"
14 MAXCOUNT="$2"
15 ORIG_FS_IMAGE="$3"
16 FIXED_FS_IMAGE="/tmp/fixedfsimage.$$"
17 NEW_FS_IMAGE="/tmp/newfsimage.$$"
18
19 if [ ! -f "$ORIG_FS_IMAGE" ]
20 then
21 echo "$ME: Filesystem image $NEW_FS_IMAGE does not exist" >&2
22 exit 1
23 fi
24
25 trap "rm -f $NEW_FS_IMAGE $FIXED_FS_IMAGE" 0 1 2 3 15
26
27 rm -f "$NEW_FS_IMAGE" "$FIXED_FS_IMAGE"
28
29 # Create the fixed image to compare against
30 cp "$ORIG_FS_IMAGE" "$FIXED_FS_IMAGE"
31 ext4fixup "$FIXED_FS_IMAGE"
32
33 if [ "$?" -ne 0 ]
34 then
35 echo "$ME: ext4fixup failed!\n"
36 exit 1
37 fi
38
39 I=0
40 while [ "$I" -lt "$ITERATIONS" ]
41 do
42 # There is also a phase 4, which is writing out the updated superblocks and
43 # block group descriptors. Test the with a separate script.
44 let PHASE="$RANDOM"%3 # 0 to 2
45 let PHASE++ # 1 to 3
46 let LOC="$RANDOM"%2 # 0 to 1
47 let LOC++ # 1 to 2
48 let COUNT="$RANDOM"%"$MAXCOUNT"
49
50 # Make a copy of the original image to fixup
51 cp "$ORIG_FS_IMAGE" "$NEW_FS_IMAGE"
52
53 # Run the fixup tool, but die partway through to see if we can recover
54 ext4fixup -d "$PHASE,$LOC,$COUNT" "$NEW_FS_IMAGE" 2>/dev/null
55
56 # run it again without -d to have it finish the job
57 ext4fixup "$NEW_FS_IMAGE"
58
59 if cmp "$FIXED_FS_IMAGE" "$NEW_FS_IMAGE"
60 then
61 :
62 else
63 echo "$ME: test failed with parameters $PHASE, $LOC, $COUNT"
64 exit 1
65 fi
66
67 rm -f "$NEW_FS_IMAGE"
68
69 let I++
70 done
71