-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathgrade-lab4.sh
147 lines (121 loc) · 3.45 KB
/
grade-lab4.sh
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#!/bin/sh
qemuopts="-hda obj/kern/kernel.img"
. ./grade-functions.sh
$make
run
score=0
total=0
timeout=10
runtest1 dumbfork \
'.00000000. new env 00001000' \
'.00000000. new env 00001001' \
'0: I am the parent!' \
'9: I am the parent!' \
'0: I am the child!' \
'9: I am the child!' \
'19: I am the child!' \
'.00001001. exiting gracefully' \
'.00001001. free env 00001001' \
'.00001002. exiting gracefully' \
'.00001002. free env 00001002'
echo "Part A score: $score/5"
echo
total=`expr $total + $score`
score=0
runtest1 faultread \
! 'I read ........ from location 0!' \
'.00001001. user fault va 00000000 ip 008.....' \
'TRAP frame at 0xf.......' \
' trap 0x0000000e Page Fault' \
' err 0x00000004' \
'.00001001. free env 00001001'
runtest1 faultwrite \
'.00001001. user fault va 00000000 ip 008.....' \
'TRAP frame at 0xf.......' \
' trap 0x0000000e Page Fault' \
' err 0x00000006' \
'.00001001. free env 00001001'
runtest1 faultdie \
'i faulted at va deadbeef, err 6' \
'.00001001. exiting gracefully' \
'.00001001. free env 00001001'
runtest1 faultalloc \
'fault deadbeef' \
'this string was faulted in at deadbeef' \
'fault cafebffe' \
'fault cafec000' \
'this string was faulted in at cafebffe' \
'.00001001. exiting gracefully' \
'.00001001. free env 00001001'
runtest1 faultallocbad \
'.00001001. user_mem_check assertion failure for va deadbeef' \
'.00001001. free env 00001001'
runtest1 faultnostack \
'.00001001. user_mem_check assertion failure for va eebfff..' \
'.00001001. free env 00001001'
runtest1 faultbadhandler \
'.00001001. user_mem_check assertion failure for va (deadb|eebfe)...' \
'.00001001. free env 00001001'
runtest1 faultevilhandler \
'.00001001. user_mem_check assertion failure for va (f0100|eebfe)...' \
'.00001001. free env 00001001'
runtest1 forktree \
'....: I am .0.' \
'....: I am .1.' \
'....: I am .000.' \
'....: I am .100.' \
'....: I am .110.' \
'....: I am .111.' \
'....: I am .011.' \
'....: I am .001.' \
'.00001001. exiting gracefully' \
'.00001002. exiting gracefully' \
'.0000200.. exiting gracefully' \
'.0000200.. free env 0000200.'
echo "Part B score: $score/45"
echo
total=`expr $total + $score`
score=0
runtest1 spin \
'.00000000. new env 00001000' \
'.00000000. new env 00001001' \
'I am the parent. Forking the child...' \
'.00001001. new env 00001002' \
'I am the parent. Running the child...' \
'I am the child. Spinning...' \
'I am the parent. Killing the child...' \
'.00001001. destroying 00001002' \
'.00001001. free env 00001002' \
'.00001001. exiting gracefully' \
'.00001001. free env 00001001'
runtest1 pingpong \
'.00000000. new env 00001000' \
'.00000000. new env 00001001' \
'.00001001. new env 00001002' \
'send 0 from 1001 to 1002' \
'1002 got 0 from 1001' \
'1001 got 1 from 1002' \
'1002 got 8 from 1001' \
'1001 got 9 from 1002' \
'1002 got 10 from 1001' \
'.00001001. exiting gracefully' \
'.00001001. free env 00001001' \
'.00001002. exiting gracefully' \
'.00001002. free env 00001002' \
timeout=20
runtest1 primes \
'.00000000. new env 00001000' \
'.00000000. new env 00001001' \
'.00001001. new env 00001002' \
'2 .00001002. new env 00001003' \
'3 .00001003. new env 00001004' \
'5 .00001004. new env 00001005' \
'7 .00001005. new env 00001006' \
'11 .00001006. new env 00001007'
echo "Part C score: $score/15"
echo
total=`expr $total + $score`
echo "Score: $total/65"
if [ $total -lt 65 ]; then
exit 1
fi