summaryrefslogtreecommitdiffstats
path: root/sbin/sunlabel/runtest.sh
blob: d6ba1a5564ce28c9095dee15356ff55b4ebf2fa6 (plain)
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/bin/sh
# $FreeBSD$

TMP=/tmp/$$.
set -e
MD=`mdconfig -a -t malloc -s 2m`
trap "exec 7</dev/null; rm -f ${TMP}* ; mdconfig -d -u ${MD}" EXIT INT TERM

./sunlabel -w $MD auto

dd if=/dev/$MD of=${TMP}i0 count=16 > /dev/null 2>&1
./sunlabel $MD > ${TMP}l0

sed '
/  c:/{
p
s/c:/a:/
s/3969/1024/
}
' ${TMP}l0 > ${TMP}l1

./sunlabel -R $MD ${TMP}l1
dd if=/dev/$MD of=${TMP}i1 count=16 > /dev/null 2>&1
sed '
/  c:/{
p
s/c:/a:/
s/3969/2048/
}
' ${TMP}l0 > ${TMP}l2

./sunlabel -R $MD ${TMP}l2
dd if=/dev/$MD of=${TMP}i2 count=16 > /dev/null 2>&1

exec 7< /dev/${MD}a

for t in a c
do
	if dd if=${TMP}i2 of=/dev/${MD}$t 2>/dev/null ; then
		echo "PASS: Could rewrite same label to ...$t while ...a open" 1>&2
	else
		echo "FAIL: Could not rewrite same label to ...$t while ...a open" 1>&2
		exit 2
	fi

	if dd if=${TMP}i1 of=/dev/${MD}$t 2>/dev/null ; then
		echo "FAIL: Could label with smaller ...a to ...$t while ...a open" 1>&2
		exit 2
	else
		echo "PASS: Could not label with smaller ...a to ...$t while ...a open" 1>&2
	fi

	if dd if=${TMP}i0 of=/dev/${MD}$t 2>/dev/null ; then
		echo "FAIL: Could write label missing ...a to ...$t while ...a open" 1>&2
		exit 2
	else
		echo "PASS: Could not write label missing ...a to ...$t while ...a open" 1>&2
	fi
done

exec 7< /dev/null

if dd if=${TMP}i0 of=/dev/${MD}c 2>/dev/null ; then
	echo "PASS: Could write missing ...a label to ...c" 1>&2
else
	echo "FAIL: Could not write missing ...a label to ...c" 1>&2
	exit 2
fi

if dd if=${TMP}i2 of=/dev/${MD}c 2>/dev/null ; then
	echo "PASS: Could write large ...a label to ...c" 1>&2
else
	echo "FAIL: Could not write large ...a label to ...c" 1>&2
	exit 2
fi

if dd if=${TMP}i1 of=/dev/${MD}c 2>/dev/null ; then
	echo "PASS: Could write small ...a label to ...c" 1>&2
else
	echo "FAIL: Could not write small ...a label to ...c" 1>&2
	exit 2
fi

if dd if=${TMP}i2 of=/dev/${MD}a 2>/dev/null ; then
	echo "PASS: Could increase size of ...a by writing to ...a" 1>&2
else
	echo "FAIL: Could not increase size of ...a by writing to ...a" 1>&2
	exit 2
fi

if dd if=${TMP}i1 of=/dev/${MD}a 2>/dev/null ; then
	echo "FAIL: Could decrease size of ...a by writing to ...a" 1>&2
	exit 2
else
	echo "PASS: Could not decrease size of ...a by writing to ...a" 1>&2
fi

if dd if=${TMP}i0 of=/dev/${MD}a 2>/dev/null ; then
	echo "FAIL: Could delete ...a by writing to ...a" 1>&2
	exit 2
else
	echo "PASS: Could not delete ...a by writing to ...a" 1>&2
fi

if dd if=${TMP}i0 of=/dev/${MD}c 2>/dev/null ; then
	echo "PASS: Could delete ...a by writing to ...c" 1>&2
else
	echo "FAIL: Could not delete ...a by writing to ...c" 1>&2
	exit 2
fi

# XXX: need to add a 'b' partition and check for overlaps.

exit 0
OpenPOWER on IntegriCloud