Autolab Grading Scripts

Autolab Scripts
Instructions
  1. Untar the autolab_grading.tar
  2. In the directory that is created you should have 2 files. autograder.tar and Makefile
  3. Download your Autolab submission that you want to test and copy it to the above created directory
  4. Rename your submission tar to handin.tar
  5. Run make inside autolab_scripts
  6. This should give you your score.

Useful resources:

  1. FAQ
  2. Annotated Excerpted RFC 2616 Text - This helps you interpret some RFC text and better understand the exact features you should implement
  3. Lex Yacc Starter Package(For the HTTP Parser)
  4. dumper.py - Point a web browser to this Python web server and observe requests
  5. Static Site - Demo static website to serve with Liso
  6. Liso Prototype - Python web server demoing what requests from Liso should look like; not a full solution
  7. CP2_Test_Code - Sample test code for CP2
  1. Begin with your repository and state of work from Checkpoint 1
  2. Create a logging module for your project.
  3. Create an HTTP 1.1 parser and layer supporting GET, HEAD, and POST as defined in RFC 2616.

Checkpoint 2 builds on top of the foundation you built in Checkpoint 1. Try architecting these two checkpoints as 'layers' in your design. You have the low-level select() layer from Checkpoint 1 which serves as a blackbox handling the select() system call and associated recv() and send() calls. It should expose an API to Checkpoint 2 that also uses functions provided by Checkpoint 2. That is, Checkpoint 2 also provides functions used by Checkpoint 1 (you are free to design differently, this is only a suggestion). For example, Checkpoint 2 might provide an HTTP 1.1 finite state machine that interprets and parses bytes coming in on buffers from Checkpoint 1. It might also provide special disconnect handlers as needed to cleanup state if a connection closes inside Checkpoint 1 without sending a proper HTTP 1.1 close header option. In addition, Checkpoint 1 might provide functions or a method of passing back bytes in some buffer that Checkpoint 2 wants to be written back to the client. Architect this however you like, you are the software engineer here designing and building a web server based on select().

Files we expect to see in your submission: