mirror of https://github.com/01-edu/public.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Michele Sessa
8d1b0b182a
|
2 years ago | |
---|---|---|
.. | ||
README.md | 2 years ago |
README.md
Localhost is about creating your own HTTP server and test it with an actual browser.
Take the necessary time to understand the project and to test it, looking into the source code will help a lot.
Functional
Is the student able to justify his choices and explain the following: Note: Ask the student to show you the implementation in the source code when necessary.
How does an HTTP server works?
Which function was used for I/O Multiplexing and how does it works?
Is the server using only one select (or equivalent) to read the client requests and write answers?
Why is it important to use only one select and how was it achieved?
Read the code that goes from the select (or equivalent) to the read and write of a client, is there only one read or write per client per select (or equivalent)?
Are the return values for I/O functions checked properly?
If an error is returned by the previous functions on a socket, is the client removed?
Is writing and reading ALWAYS done through a select (or equivalent)?
Configuration file
Check the configuration file and modify it if necessary. Are the following configurations working properly:
Setup a single server with a single port.
Setup multiple servers with different port.
Setup multiple servers with different hostnames (for example: curl --resolve test.com:80:127.0.0.1 http://test.com/).
Setup custom error pages.
Limit the client body (for example: curl -X POST -H "Content-Type: plain/text" --data "BODY with something shorter or longer than body limit").
Setup routes and ensure they are taken into account.
Setup a default file in case the path is a directory.
Setup a list of accepted methods for a route (for example: try to DELETE something with and without permission).
Methods and cookies
For each method be sure to check the status code (200, 404 etc):
Are the GET requests working properly?
Are the POST requests working properly?
Are the DELETE requests working properly?
Test a WRONG request, is the server still working properly?
Upload some files to the server and get them back to test they were not corrupted.
A working session and cookies system is present on the server?
Interaction with the browser
Open the browser used by the team during tests and its developer tools panel to help you with tests.