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