Project 6 Grading Criteria

  1. File Operations using /c/p6test.exe

    p6test.exe tests the following functionality.

    Functionality Behavior Weightage
    BasicCreateDestroy Create/Destroy a meesage queue 10
    CreateBigSize Tries to create a message queue with too large a size 3
    ReadFromUnopened Tries to read from an unopened message queue 3
    WriteToUnopened Tries to write to an unopened message queue 3
    DestroyTwice Tries to destroy a message queue twice 3
    DestroyUnopened Tries to destroy an message queue with an invalid id 3
    BasicReadWrite Send followed by Receive, and compare 15
    WriteOverflow Tries to write a quantity larger than the message queue size 5
    StressReadWrite Stresses messages queue API by reading/writing lots of data 15
         
    TOTAL   60


    Executing p6test.exe will run through each of these. The ouput will be lines with the functionality listed in the first column, the output (PASSED/FAILED) and the score of the particular test. Correct implementation is worth 60 points.

  2. Synchronization using /c/ppstart.exe, /c/ping6.exe, /c/pong6.exe
    This is a straightforward bidirectional send/receive test. A process can't go to the next send/receive round until it has both sent and received a message.

    At the shell prompt, typing:

     /c/ppstart.exe 
    should output
    Starting ping-pong tests...
    
    Starting process X (PING)...
    Starting process Y (PONG)...
    
    Process X sent PING, awaiting PONG, got 'PONG'
    Process Y sent PONG, awaiting PING, got 'PING'
    Process X sent PING, awaiting PONG, got 'PONG'
    Process Y sent PONG, awaiting PING, got 'PING'
    Process X sent PING, awaiting PONG, got 'PONG'
    Process Y sent PONG, awaiting PING, got 'PING'
    Process X sent PING, awaiting PONG, got 'PONG'
    Process Y sent PONG, awaiting PING, got 'PING'
    Process X sent PING, awaiting PONG, got 'PONG'
    Process Y sent PONG, awaiting PING, got 'PING'
    
    Process X (PING) is done !
    
    Process Y (PONG) is done !
    
    Ping-pong tests completed.
    

    The 'Starting...' and 'Process ...done' may come in a different order, but no deadlock should occur. Obviously, X and Y are to be replaced by some pid's.

    A correct run is worth 20 points.

  3. Fragmentation using /c/fstart.exe, /c/fsend.exe, /c/frecv.exe
    This is a slightly harder test; the sender will have to block because its buffer is larger than the mailbox size.

    At the shell prompt, typing:

     /c/fstart.exe 
    should output
    Starting fragmentation send/receive tests...
    
    
    Starting process X (Sender)...
    Starting process Y (Receiver)...
    
    Process Y (Receiver) received 5 bytes
    Process Y (Receiver) received 5 bytes
    Process X (Sender) sent 10 bytes
    
    Process Y (Receiver) received 5 bytes
    Process Y (Receiver) received 5 bytes
    Process X (Sender) sent 10 bytes
    
    Process Y (Receiver) received 5 bytes
    Process Y (Receiver) received 5 bytes
    Process X (Sender) sent 10 bytes
    
    Process Y (Receiver) received 5 bytes
    Process Y (Receiver) received 5 bytes
    Process X (Sender) sent 10 bytes
    
    Process Y (Receiver) received 5 bytes
    Process Y (Receiver) received 5 bytes
    Process X (Sender) sent 10 bytes
    
    Process X (Sender) is done !
    
    Process Y (Receiver) is done !
    
    Fragmentation tests completed.
    

    The 'Starting...' / 'Process ...done' and 'sent' / 'received' (for one round) may come in a different order, but no deadlock should occur. Obviously, X and Y are to be replaced by some pid's.

    A correct run is worth 20 points.