|
|
|
@ -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
|
|
|
|
|