-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathgrade-lab7
executable file
·73 lines (62 loc) · 2 KB
/
grade-lab7
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
#!/usr/bin/env python
from gradelib import *
r = Runner(save("jos.out"),
stop_breakpoint("cons_getc"))
@test(10, "PTE_SHARE [testpteshare]")
def test_pte_share():
r.user_test("testpteshare")
r.match('fork handles PTE_SHARE right',
'spawn handles PTE_SHARE right')
@test(20, "start the shell [icode]")
def test_icode():
r.user_test("icode")
r.match('icode: read /motd',
'This is /motd, the message of the day.',
'icode: spawn /init',
'init: running',
'init: data seems okay',
'icode: exiting',
'init: bss seems okay',
"init: args: 'init' 'initarg1' 'initarg2'",
'init: running sh',
'\$ ')
@test(20)
def test_testshell():
r.user_test("testshell", timeout=60)
r.match("shell ran correctly")
# Obsolete
#@test(10)
def test_testpipe():
r.user_test("testpipe", stop_on_line("pipe tests passed"),
stop_on_line(".*panic"))
r.match("pipe read closed properly",
"pipe write closed properly")
# Obsolete
#@test(10)
def test_testpiperace():
r.user_test("testpiperace", stop_on_line("race didn't happen"),
stop_on_line(".*panic"))
r.match("race didn't happen",
no=["child detected race",
"RACE: pipe appears closed"])
# Obsolete
#@test(10)
def test_testpiperace2():
r.user_test("testpiperace2", stop_on_line("race didn't happen"),
stop_on_line(".*panic"))
r.match("race didn't happen",
no=["child detected race",
"RACE: pipe appears closed"])
def gen_primes(n):
rest = range(2, n)
while rest:
yield rest[0]
rest = [n for n in rest if n % rest[0]]
@test(10)
def test_primespipe():
r.user_test("primespipe", stop_on_line("[0-9]{4}$"), timeout=120)
primes = set(gen_primes(1000))
nonprimes = set(range(1000)) - primes
r.match(no=["%d$" % np for np in nonprimes],
*["%d$" % p for p in primes])
run_tests()