You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
2.0 KiB
Markdown
26 lines
2.0 KiB
Markdown
# Worker
|
|
|
|
## Description
|
|
**Worker's** main role is securely execute given submission and possibly _evaluate_ results against model solutions provided by submitter. **Worker** is logicaly divided into two parts:
|
|
- **Listener** - listens and communicates with **Broker** through [ZeroMQ](http://zeromq.org/). It receives new jobs, communicates with **Evaluator** part and sends back results or progress.
|
|
- **Evaluator** - gets jobs to evaluate from **Listener** part, evaluate them (possibly in sandbox) and get to know to other part that evaluation ended. This part also communicates with **Fileserver**, downloads needed files and uploads detailed results.
|
|
|
|
**Worker** after getting evaluation request has to:
|
|
|
|
- Download the archive containing submitted source files and configuration file
|
|
- Download any supplementary files based on the configuration file, such as test
|
|
inputs or helper programs (This is done on demand, using a `fetch` command
|
|
in the assignment configuration)
|
|
- Evaluate the submission accordingly to job configuration
|
|
- During evaluation progress states can be sent back to **Broker**
|
|
- Upload the results of the evaluation to the **Fileserver**
|
|
- Notify **Broker** that the evaluation finished
|
|
|
|
## Architecture
|
|
Picture below is overall internal architecture of worker which shows its defined classes with private variables and public functions. Vector version of this picture is available [here](https://github.com/ReCodEx/GlobalWiki/raw/master/images/Worker_Internal_Architecture.pdf).
|
|
![Internal Worker architecture](https://github.com/ReCodEx/GlobalWiki/blob/master/images/Worker_Internal_Architecture.png)
|
|
|
|
## Installation
|
|
|
|
## Configuration and usage
|
|
Following text describes how to set up and run worker program. It's supposed to have required binaries installed. For instructions see [[Installation|Worker#installation]] section. Also, using systemd is recommended for best user experience, but it's not required. Almost all modern Linux distributions are using systemd now. |