You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Launch the installation of siege with homebrew. @iker-gonzalez
Ask explanations about the basics of an HTTP server. @iker-gonzalez
Ask what function the group used for I/O Multiplexing. @zcanales
Ask for an explanation of how does select() (or equivalent) work. @zcanales
Ask if they use only one select() (or equivalent) and how they've managed the server to accept and the client to read/write. @zcanales
The select() (or equivalent) should be in the main loop and should check file descriptors for read and write AT THE SAME TIME. If not, the grade is 0 and the evaluation process ends now. @zcanales
There should be only one read or one write per client per select() (or equivalent). Ask the group to show you the code from the select() (or equivalent) to the read and write of a client. @zcanales
Search for all read/recv/write/send on a socket and check that, if an error is returned, the client is removed. @zcanales
Search for all read/recv/write/send and check if the returned value is correctly checked (checking only -1 or 0 values is not enough, both should be checked). @zcanales
If errno is checked after read/recv/write/send, the grade is 0 and the evaluation process ends now. -> eliminate all references to errno. Currently are some of them.
Writing or reading ANY file descriptor without going through the select() (or equivalent) is strictly FORBIDDEN. @zcanales
The project must compile without any re-link issue. If not, use the 'Invalid compilation' flag. @iker-gonzalez
If any point is unclear or is not correct, use the flag for 'Incomplete work'.
Configuration:
In the configuration file, check whether you can do the following and test the result:
Search for the HTTP response status codes list on the internet. During this evaluation, if any status codes is wrong, don't give any related points. @iker-gonzalez
Setup multiple servers with different ports. @iker-gonzalez
Setup multiple servers with different hostnames (use something like: curl --resolve example.com:80:127.0.0.1 http://example.com/). @iker-gonzalez
Setup default error page (try to change the error 404). @iker-gonzalez
Limit the client body (use: curl -X POST -H "Content-Type: plain/text" --data "BODY IS HERE write something shorter or longer than body limit"). @iker-gonzalez
Setup routes in a server to different directories. @iker-gonzalez
Setup a default file to search for if you ask for a directory. @iker-gonzalez
Setup a list of methods accepted for a certain route (e.g., try to delete something with and without permission). @iker-gonzalez
Basic checks:
Using telnet, curl, prepared files, demonstrate that the following features work properly:
GET requests -> should work
POST requests -> should work
DELETE requests -> should work
UNKNOWN requests -> should not produce any crash
For every test the status code must be correct @iker-gonzalez
The CGI should be run in the correct directory for relative path file access.
With the help of the evaluation group you should check that everything is working properly. You have to test the CGI with the methods "GET", "POST" and "DELETE".
You need to test with files containing errors to see if the error handling works properly.
You need to test with files containing errors to see if the error handling works properly. You can use a script containing an infinite loop or an error; you are free to do whatever tests you want within the limits of acceptability that remain at your discretion. The group being evaluated should help you with this.
The server should never crash and an error should be visible in case of a problem.
Check with a browser
Use the reference browser of the team. Open the network part of it, and try to connect to the server using it. @iker-gonzalez
Look at the request header and response header. @iker-gonzalez
It should be compatible to serve a fully static website. @iker-gonzalez
In the configuration file setup multiple ports and use different websites. Use the browser to ensure that the configuration works as expected and shows the right website. @iker-gonzalez
In the configuration, try to setup the same port multiple times. It should not work. @iker-gonzalez
Launch multiple servers at the same time with different configurations but with common ports. Does it work? If it does, ask why the server should work if one of the configurations isn't functional. Keep going. @iker-gonzalez
Check the code and ask questions
Configuration:
Basic checks:
Check CGI: @zcanales
Check with a browser
Port issues
Siege & stress test
The text was updated successfully, but these errors were encountered: