@ -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:
bin: "/usr/bin/gcc"
args:
- "solution.c"
- "-o"
- "a.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: "fetch_test_1"
priority: 4
fatal-failure: false
dependencies:
- compilation
cmd:
cmd:
bin: "fetch"
bin: "fetch"
args:
args:
- "94549d889ae96210ff2a73bd0a5bbe3185f05ff6"
- "1.in"
- "01.in"
- "${SOURCE_DIR}/kuly.in"
- task-id: "move_test01"
- task-id: "evaluation_test_1"
priority: 3
priority: 5
fatal-failure: true
fatal-failure: false
dependencies:
- fetch_test_1
cmd:
bin: "a.out"
sandbox:
name: "isolate"
limits:
- hw-group-id: group1
time: 0.5
memory: 8192
chdir: ${EVAL_DIR}
bound-directories:
- src: ${SOURCE_DIR}
dst: ${EVAL_DIR}
mode: RW
- task-id: "fetch_test_solution_1"
priority: 6
fatal-failure: false
dependencies:
dependencies:
- compile_test01
- evaluation_test_1
cmd:
cmd:
bin: "mv"
bin: "fetch"
args:
args:
- "recodex.cpp"
- "1.out"
- "/tmp/isoeval/1/eval_5/recodex.cpp"
- "${SOURCE_DIR}/1.out"
- task-id: "eval_test01"
- task-id: "judging_test_1"
priority: 4
priority: 7
fatal-failure: false
fatal-failure: false
dependencies:
dependencies:
- move_test01
- fetch_test_solution_1
cmd:
cmd:
bin: "recodex"
bin: "${JUDGES_DIR}/recodex-judge-normal"
args:
args:
- "-v"
- "1.out"
- "-f 01.in"
- "plot.out"
stdin: "01.in"
stdout: "01.out"
stderr: "01.err"
sandbox:
sandbox:
name: "isolate"
name: "isolate"
limits:
limits:
- hw-group-id: group1
- hw-group-id: group1
time: 5 # seconds
parallel: 0
wall-time: 6 # seconds
chdir: ${EVAL_DIR}
extra-time: 2 # seconds
stack-size: 50000 # KB
memory: 50000 # in KB
parallel: false # time and memory limits are merged from all potential processes/threads
disk-size: 50
disk-files: 5
environ-variable:
ISOLATE_BOX: "/box"
ISOLATE_TMP: "/tmp"
chdir: /evaluate
bound-directories:
bound-directories:
- src: /tmp/isoeval/eval_5
- src: ${SOURCE_DIR}
dst: /evaluate
dst: ${EVAL_DIR}
mode: RW,NOEXEC
mode: RW
- hw-group-id: group2
- task-id: "rm_junk_test_1"
time: 6 # seconds
priority: 8
wall-time: 7 # seconds
fatal-failure: false
extra-time: 3 # seconds
dependencies:
memory: 60000 # in KB
- judging_test_1
parallel: false # time and memory limits are merged from all potential processes/threads
cmd:
disk-size: 50
bin: "rm"
disk-files: 5
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)