diff --git a/Architecture.md b/Architecture.md index 99808c5..b0c1126 100644 --- a/Architecture.md +++ b/Architecture.md @@ -116,12 +116,13 @@ The frontend must send a multipart message that contains the following frames: - The `eval` command - The job id (ASCII or network byte order - to be specified) - A frame for each header (e.g. `hwgroup=group_1`) +- An URL of the file server where the submitted files are stored - A hash code of the assignment's configuration file - Hash codes of files submitted by the user, each in a separate frame If the broker is capable of routing the request to a worker, it responds with -`ack`. Otherwise (for example when the requirements specified by the headers -cannot be met), it responds with `nack`. +`accept`. Otherwise (for example when the requirements specified by the headers +cannot be met), it responds with `reject`. Note that we will need to store the job ID and the assignment configuration somewhere close to the submitted files so it's possible to check how a @@ -146,10 +147,12 @@ frontend. The worker has to: - Download the assignment configuration file - Download any supplementary files based on the configuration file, such as test - inputs or helper programs + inputs or helper programs (This can be done on demand, using a `fetch` command + in the assignment configuration) - Download the source codes of the student's submission - Evaluate the submission according to the assignment's configuration - Upload the results of the evaluation to the file server +- Notify the broker that the evaluation is finished Thanks to this message structure, it's possible to cache the configuration file and only download the student's submissions when the same assignment is