]> CyberLeo.Net >> Repos - FreeBSD/releng/8.1.git/blob - sbin/bsdlabel/runtest.sh
Copy stable/8 to releng/8.1 in preparation for 8.1-RC1.
[FreeBSD/releng/8.1.git] / sbin / bsdlabel / runtest.sh
1 #!/bin/sh
2 # $FreeBSD$
3
4 TMP=/tmp/$$.
5 set -e
6 for TEST in "i386 512" "i386 4096" "alpha 512"
7 do
8         set $TEST
9         ARCH=$1
10         SEC=$2
11         echo "ARCH $ARCH SEC $SEC"
12         MD=`mdconfig -a -t malloc -s 2m -S $SEC`
13         trap "exec 7</dev/null; rm -f ${TMP}* ; mdconfig -d -u ${MD}" EXIT INT TERM
14
15         ./bsdlabel -m ${ARCH} -r -w $MD auto
16
17         dd if=/dev/$MD of=${TMP}i0 count=1 bs=8k > /dev/null 2>&1
18         if [ "$ARCH" = "alpha" ] ; then
19                 dd if=${TMP}i0 of=${TMP}b0 iseek=1 count=15 > /dev/null 2>&1
20         else
21                 cp ${TMP}i0 ${TMP}b0
22         fi
23         ./bsdlabel -m ${ARCH} $MD > ${TMP}l0
24
25         sed '
26         /  c:/{
27         p
28         s/c:/a:/
29         s/4096/1024/
30         s/512/64/
31         }
32         ' ${TMP}l0 > ${TMP}l1
33
34         ./bsdlabel -m ${ARCH} -R $MD ${TMP}l1
35         if [ -c /dev/${MD}a ] ; then
36                 echo "PASS: Created a: partition" 1>&2
37         else
38                 echo "FAIL: Did not create a: partition" 1>&2
39                 exit 2
40         fi
41
42         # Spoil and rediscover
43
44         true > /dev/${MD}
45         if [ -c /dev/${MD}a ] ; then
46                 echo "PASS: Recreated a: partition after spoilage" 1>&2
47         else
48                 echo "FAIL: Did not recreate a: partition after spoilage" 1>&2
49                 exit 2
50         fi
51
52         dd if=/dev/$MD of=${TMP}i1 count=1 bs=8k > /dev/null 2>&1
53         sed '
54         /  c:/{
55         p
56         s/c:/a:/
57         s/4096/2048/
58         s/512/256/
59         }
60         ' ${TMP}l0 > ${TMP}l2
61
62         ./bsdlabel -m ${ARCH} -R $MD ${TMP}l2
63         dd if=/dev/$MD of=${TMP}i2 count=1 bs=8k > /dev/null 2>&1
64
65         exec 7< /dev/${MD}a
66
67         for t in a c
68         do
69                 if dd if=${TMP}i2 of=/dev/${MD}$t bs=8k 2>/dev/null ; then
70                         echo "PASS: Could rewrite same label to ...$t while ...a open" 1>&2
71                 else
72                         echo "FAIL: Could not rewrite same label to ...$t while ...a open" 1>&2
73                         exit 2
74                 fi
75
76                 if dd if=${TMP}i1 of=/dev/${MD}$t bs=8k 2>/dev/null ; then
77                         echo "FAIL: Could label with smaller ...a to ...$t while ...a open" 1>&2
78                         exit 2
79                 else
80                         echo "PASS: Could not label with smaller ...a to ...$t while ...a open" 1>&2
81                 fi
82
83                 if dd if=${TMP}i0 of=/dev/${MD}$t 2>/dev/null ; then
84                         echo "FAIL: Could write label missing ...a to ...$t while ...a open" 1>&2
85                         exit 2
86                 else
87                         echo "PASS: Could not write label missing ...a to ...$t while ...a open" 1>&2
88                 fi
89         done
90
91         exec 7< /dev/null
92
93         if dd if=${TMP}i0 of=/dev/${MD}c bs=8k 2>/dev/null ; then
94                 echo "PASS: Could write missing ...a label to ...c" 1>&2
95         else
96                 echo "FAIL: Could not write missing ...a label to ...c" 1>&2
97                 exit 2
98         fi
99
100         if dd if=${TMP}i2 of=/dev/${MD}c bs=8k 2>/dev/null ; then
101                 echo "PASS: Could write large ...a label to ...c" 1>&2
102         else
103                 echo "FAIL: Could not write large ...a label to ...c" 1>&2
104                 exit 2
105         fi
106
107         if dd if=${TMP}i1 of=/dev/${MD}c bs=8k 2>/dev/null ; then
108                 echo "PASS: Could write small ...a label to ...c" 1>&2
109         else
110                 echo "FAIL: Could not write small ...a label to ...c" 1>&2
111                 exit 2
112         fi
113
114         if dd if=${TMP}i2 of=/dev/${MD}a bs=8k 2>/dev/null ; then
115                 echo "PASS: Could increase size of ...a by writing to ...a" 1>&2
116         else
117                 echo "FAIL: Could not increase size of ...a by writing to ...a" 1>&2
118                 exit 2
119         fi
120
121         if dd if=${TMP}i1 of=/dev/${MD}a bs=8k 2>/dev/null ; then
122                 echo "FAIL: Could decrease size of ...a by writing to ...a" 1>&2
123                 exit 2
124         else
125                 echo "PASS: Could not decrease size of ...a by writing to ...a" 1>&2
126         fi
127
128         if dd if=${TMP}i0 of=/dev/${MD}a bs=8k 2>/dev/null ; then
129                 echo "FAIL: Could delete ...a by writing to ...a" 1>&2
130                 exit 2
131         else
132                 echo "PASS: Could not delete ...a by writing to ...a" 1>&2
133         fi
134
135         if ./bsdlabel -m ${ARCH} -B -b ${TMP}b0 ${MD} ; then
136                 if [ ! -c /dev/${MD}a ] ; then
137                         echo "FAILED: Writing bootcode killed ...a" 1>&2
138                         exit 2
139                 else
140                         echo "PASS: Could write bootcode while closed" 1>&2
141                 fi
142         else
143                 echo "FAILED: Could not write bootcode while closed" 1>&2
144                 exit 2
145         fi
146
147         exec 7> /dev/${MD}c
148         if ./bsdlabel -m ${ARCH} -B -b ${TMP}b0 ${MD} ; then
149                 if [ ! -c /dev/${MD}a ] ; then
150                         echo "FAILED: Writing bootcode killed ...a" 1>&2
151                         exit 2
152                 else
153                         echo "PASS: Could write bootcode while open" 1>&2
154                 fi
155         else
156                 echo "FAILED: Could not write bootcode while open" 1>&2
157                 exit 2
158         fi
159         exec 7> /dev/null
160
161         if dd if=${TMP}i0 of=/dev/${MD}c bs=8k 2>/dev/null ; then
162                 echo "PASS: Could delete ...a by writing to ...c" 1>&2
163         else
164                 echo "FAIL: Could not delete ...a by writing to ...c" 1>&2
165                 exit 2
166         fi
167
168         # XXX: need to add a 'b' partition and check for overlaps.
169
170         rm -f ${TMP}*
171         mdconfig -d -u ${MD} 
172
173 done
174 trap "" EXIT INT TERM
175 exit 0