@ -91,73 +91,103 @@ If not specified otherwise than its mandatory item! Mandatory items are bold, op
#### Configuration example
#### Configuration example
This configuration example is written in YAML and serves only for demostration purposes. Therefore it is not working example which can be used in real traffic. Some items can be omitted and defaults will be used.
This configuration example is written in YAML and serves only for demostration purposes. Therefore it is not working example which can be used in real traffic. Some items can be omitted and defaults will be used.
```{.yml}
```{.yml}
--- # only one document which contains job, aka. list of tasks and some general infos
--- # only one document which contains job, aka. list of tasks and some general infos
submission:
submission: # happy hippoes fence
job-id: eval_5
job-id: hippoes
language: "cpp"
language: c
file-collector: "http://localhost:36587"
file-collector: http://localhost:9999/tasks
log: true
log: true
tasks:
tasks:
- task-id: "fetch_input"
- task-id: "compilation"
priority: 2
priority: 2
fatal-failure: true
fatal-failure: true
cmd:
cmd:
bin: "fetch"
bin: "/usr/bin/gcc"
args:
args:
- "94549d889ae96210ff2a73bd0a5bbe3185f05ff6"
- "solution.c"
- "01.in"
- "-o"
- task-id: "move_test01"
- "a.out"
priority: 3
sandbox:
fatal-failure: true
name: "isolate"
dependencies:
limits:
- compile_test01
- hw-group-id: group1
cmd:
parallel: 0
bin: "mv"
chdir: ${EVAL_DIR}
args:
bound-directories:
- "recodex.cpp"
- src: ${SOURCE_DIR}
- "/tmp/isoeval/1/eval_5/recodex.cpp"
dst: ${EVAL_DIR}
- task-id: "eval_test01"
mode: RW
priority: 4
- task-id: "fetch_test_1"
fatal-failure: false
priority: 4
dependencies:
fatal-failure: false
- move_test01
dependencies:
cmd:
- compilation
bin: "recodex"
cmd:
args:
bin: "fetch"
- "-v"
args:
- "-f 01.in"
- "1.in"
stdin: "01.in"
- "${SOURCE_DIR}/kuly.in"
stdout: "01.out"
- task-id: "evaluation_test_1"
stderr: "01.err"
priority: 5
sandbox:
fatal-failure: false
name: "isolate"
dependencies:
limits:
- fetch_test_1
- hw-group-id: group1
cmd:
time: 5 # seconds
bin: "a.out"
wall-time: 6 # seconds
sandbox:
extra-time: 2 # seconds
name: "isolate"
stack-size: 50000 # KB
limits:
memory: 50000 # in KB
- hw-group-id: group1
parallel: false # time and memory limits are merged from all potential processes/threads
time: 0.5
disk-size: 50
memory: 8192
disk-files: 5
chdir: ${EVAL_DIR}
environ-variable:
bound-directories:
ISOLATE_BOX: "/box"
- src: ${SOURCE_DIR}
ISOLATE_TMP: "/tmp"
dst: ${EVAL_DIR}
chdir: /evaluate
mode: RW
bound-directories:
- task-id: "fetch_test_solution_1"
- src: /tmp/isoeval/eval_5
priority: 6
dst: /evaluate
fatal-failure: false
mode: RW,NOEXEC
dependencies:
- hw-group-id: group2
- evaluation_test_1
time: 6 # seconds
cmd:
wall-time: 7 # seconds
bin: "fetch"
extra-time: 3 # seconds
args:
memory: 60000 # in KB
- "1.out"
parallel: false # time and memory limits are merged from all potential processes/threads
- "${SOURCE_DIR}/1.out"
disk-size: 50
- task-id: "judging_test_1"
disk-files: 5
priority: 7
fatal-failure: false
dependencies:
- fetch_test_solution_1
cmd:
bin: "${JUDGES_DIR}/recodex-judge-normal"
args:
- "1.out"
- "plot.out"
sandbox:
name: "isolate"
limits:
- hw-group-id: group1
parallel: 0
chdir: ${EVAL_DIR}
bound-directories:
- src: ${SOURCE_DIR}
dst: ${EVAL_DIR}
mode: RW
- task-id: "rm_junk_test_1"
priority: 8
fatal-failure: false
dependencies:
- judging_test_1
cmd:
bin: "rm"
args:
- "${SOURCE_DIR}/kuly.in"
- "${SOURCE_DIR}/plot.out"
- "${SOURCE_DIR}/1.out"
...
...
```
```
@ -170,7 +200,7 @@ List of usable variables in job configuration:
- **WORKER_ID** - integral identification of worker, unique on server
- **WORKER_ID** - integral identification of worker, unique on server
- **JOB_ID** - identification of this job
- **JOB_ID** - identification of this job
- **SOURCE_DIR** - directory where source codes of job are stored
- **SOURCE_DIR** - directory where source codes of job are stored
- **EVAL_DIR** - evaluation directory which should point inside sandbox
- **EVAL_DIR** - evaluation directory which should point inside sandbox. Note, that some existing directory must be bound inside sanbox under **EVAL_DIR** name using _bound-directories_ directive inside limits section.
- **RESULT_DIR** - results from job can be copied here, but only with internal task
- **RESULT_DIR** - results from job can be copied here, but only with internal task
- **TEMP_DIR** - general temp directory which is not dependent on operating system
- **TEMP_DIR** - general temp directory which is not dependent on operating system
- **JUDGES_DIR** - directory in which judges are stored (outside sandbox)
- **JUDGES_DIR** - directory in which judges are stored (outside sandbox)