73027a4083e496d22dac61ea0da26899c580109e
[pintos-anon] / grading / userprog / tests.txt
1 CORRECTNESS [[total]]
2 ---------------------
3
4 Argument passing
5   -3 args-argc: argc is not set correctly
6   -3 args-argv0: executable name not passed as argv[0]
7   -3 args-argvn: argv[argc] is not a null pointer
8   -3 args-single: passing single argument fails
9   -3 args-multiple: passing multiple arguments fails
10   -3 args-dbl-space: using multiple spaces between arguments fails
11 Score: /18
12
13 System calls
14   -3 sc-bad-sp: system call with a bad stack pointer must not crash OS
15   -3 sc-bad-arg: syscall with argument off top of stack must not crash OS
16   -3 sc-boundary: syscall with args across page boundary must work
17 Score: /9
18
19 System calls: halt, exec 
20   -1 halt: halt system call fails
21   -2 exit: exit system call malfunctions
22 Score: /3
23
24 System calls: create
25   -2 create-normal: create a file in the most normal way
26   -1 create-empty: pass empty string to create system call
27   -1 create-null: pass null pointer to create system call
28   -1 create-bad-ptr: pass invalid pointer to create system call
29   -1 create-long: pass long file name to create system call
30   -1 create-exists: pass name of an existing file to create system call
31   -1 create-bound: pass name of file crossing page boundary
32 Score: /8
33
34 System calls: open
35   -2 open-normal: open a file in the most normal way
36   -2 open-missing: try to open a file that doesn't exist
37   -2 open-boundary: pass name of file crossing page boundary
38   -1 open-empty: pass empty string to open system call
39   -1 open-null: pass null pointer to open system call
40   -1 open-twice: open the same file twice
41 Score: /9
42
43 System calls: close
44   -2 close-normal: close an open file in the most normal way
45   -2 close-twice: try to close an open file twice
46   -1 close-stdin: try to close stdin
47   -1 close-stdout: try to close stdout
48   -1 close-bad-fd: try to close invalid file descriptor
49 Score: /7
50
51 System calls: read
52   -2 read-normal: read from open file in most normal way
53   -2 read-bad-ptr: pass invalid pointer to read system call
54   -2 read-boundary: pass buffer crossing page boundary
55   -1 read-zero: try to read zero bytes
56   -1 read-stdout: try to read from stdout
57   -1 read-bad-fd: try to read from invalid file descriptor
58 Score: /9
59
60 System calls: write
61   -2 write-normal: write to open file in most normal way
62   -2 write-bad-ptr: pass invalid pointer to write system call
63   -2 write-boundary: pass buffer crossing page boundary
64   -1 write-zero: try to write zero bytes
65   -1 write-stdin: try to write to stdin
66   -1 write-bad-fd: try to write to invalid file descriptor
67 Score: /9
68
69 System calls: exec
70   -2 exec-once: call exec/join once
71   -2 exec-multiple: call exec/join multiple times
72   -2 exec-missing: exec of nonexistent file must return -1
73   -1 exec-bad-ptr: pass invalid pointer to exec system call
74 Score: /7
75
76 System calls: join
77   -2 join-simple: join must return proper value
78   -2 join-twice: join a subprocess two times
79   -2 join-killed: join must return -1 if subprocess killed by kernel
80   -1 join-bad-pid: join must return if passed bad pid
81 Score: /7
82
83 Multiprogramming
84   -2 multi-recurse: test recursively executing subprocesses
85   -2 multi-oom: exhausting user memory must not crash OS
86   -2 multi-fragment: programs must load even if user memory is fragmented
87   -2 multi-parent-fd: child must not be able to close parent's fds
88 Score: /8