Get rid of unnecessary barrier. Improve comment.
[pintos-anon] / grading / userprog / tests.txt
index 794fad1283087cd99e6096ae8f7ce3f513bbe48c..e6d659964f9655a7ba97aa854ab78867c0086e29 100644 (file)
@@ -2,15 +2,24 @@ CORRECTNESS [[total]]
 ---------------------
 
 Argument passing
-  -5 args-argc: argc is not set correctly
-  -5 args-argv0: executable name not passed as argv[0]
-  -5 args-multiple: passing multiple arguments fails
-  -5 args-dblspace: using multiple spaces between arguments fails
+  -4 args-argc: argc is not set correctly
+  -4 args-single: passing single argument fails
+  -3 args-argv0: executable name not passed as argv[0]
+  -3 args-argvn: argv[argc] is not a null pointer
+  -3 args-multiple: passing multiple arguments fails
+  -3 args-dbl-space: using multiple spaces between arguments fails
+Score: /20
+
+System calls
+  -4 sc-boundary: syscall with args across page boundary must work
+  -3 sc-bad-sp: system call with a bad stack pointer must not crash OS
+  -3 sc-bad-arg: syscall with argument off top of stack must not crash OS
+Score: /10
 
 System calls: halt, exec 
   -1 halt: halt system call fails
-  -2 exit: exit system call malfunctions
-Score: /3
+  -1 exit: exit system call malfunctions
+Score: /2
 
 System calls: create
   -2 create-normal: create a file in the most normal way
@@ -19,15 +28,18 @@ System calls: create
   -1 create-bad-ptr: pass invalid pointer to create system call
   -1 create-long: pass long file name to create system call
   -1 create-exists: pass name of an existing file to create system call
-Score: /7
+  -1 create-bound: pass name of file crossing page boundary
+Score: /8
 
 System calls: open
   -2 open-normal: open a file in the most normal way
   -2 open-missing: try to open a file that doesn't exist
+  -2 open-boundary: pass name of file crossing page boundary
   -1 open-empty: pass empty string to open system call
   -1 open-null: pass null pointer to open system call
+  -1 open-bad-ptr: pass invalid pointer to open system call
   -1 open-twice: open the same file twice
-Score: /7
+Score: /10
 
 System calls: close
   -2 close-normal: close an open file in the most normal way
@@ -40,57 +52,45 @@ Score: /7
 System calls: read
   -2 read-normal: read from open file in most normal way
   -2 read-bad-ptr: pass invalid pointer to read system call
+  -2 read-boundary: pass buffer crossing page boundary
   -1 read-zero: try to read zero bytes
   -1 read-stdout: try to read from stdout
   -1 read-bad-fd: try to read from invalid file descriptor
-Score: /7
+Score: /9
 
 System calls: write
   -2 write-normal: write to open file in most normal way
   -2 write-bad-ptr: pass invalid pointer to write system call
+  -2 write-boundary: pass buffer crossing page boundary
   -1 write-zero: try to write zero bytes
   -1 write-stdin: try to write to stdin
   -1 write-bad-fd: try to write to invalid file descriptor
-Score: /7
+Score: /9
 
 System calls: exec
-  -2 exec-once: call exec/join once
-  -2 exec-multiple: call exec/join multiple times
+  -2 exec-once: call exec/wait once
+  -2 exec-arg: check command-line passing on exec
+  -2 exec-multiple: call exec/wait multiple times
   -2 exec-missing: exec of nonexistent file must return -1
   -1 exec-bad-ptr: pass invalid pointer to exec system call
-Score: /7
+Score: /9
+
+System calls: wait
+  -2 wait-once: A creates B, A waits for B
+  -2 wait-twice: A creates B, A waits for B, A waits for B again
+  -2 wait-quick: A creates B, A waits for B, with different details
+  -2 wait-multiple: A creates B and C, A waits for B, A waits for C
+  -2 wait-nested: A creates B, B creates C, ..., B waits for C, A waits for B
+  -2 wait-dummy: A creates B, A waits for B, A waits for B
+  -2 wait-invalid: Waiting for an invalid pid must return immediately
+  -2 wait-other: Waiting for a child of another process must return immediately
+  -2 wait-no: A creates B and never waits for it (must not crash or hang)
+Score: /14
 
-System calls: join
-  -2 join-simple: join must return proper value
-  -2 join-twice: join a subprocess two times
-  -2 join-killed: join must return -1 if subprocess killed by kernel
-  -1 join-bad-pid: join must return if passed bad pid
 Score: /7
 
 Multiprogramming
-  -
-
-3. Multiprogramming / Page boundary checking (/50 points)
-        Multiprogramming: Exec'ing two simple programs                  -30 
-                          from another program doesn't work
-        Open/Create fails on page boundary                              -5
-        Read/Write fails on page boundary                               -5
-        Can close file opened by parent                                 -5
-        Running out of physical memory crashes OS                       -5
-        Shell test doesn't work with normal page size                   -5 
-        Shell test doesn't work with smaller page size                  -5
-        Exec/Join tests 0 and 1 fail when we substitute a new 
-        bitmap.cc that returns pages in a random order.                 -5 
-
------------
-Notes on the shell tests :
-
-Large page size echo/matmult test
-  -5 if nothing works no matter what you do
-  -4 if shell works in either case but matmult doesn't work in either case
-
-Small page size echo/matmult test
-  -5 if nothing works no matter what you do
-  -4 if shell works in either case but matmult doesn't work in either case
-------------
-
+  -3 multi-recurse: test recursively executing subprocesses
+  -3 multi-oom: exhausting user memory must not crash OS
+  -3 multi-child-fd: child must not be able to close parent's fds
+Score: /9