@ -91,73 +91,103 @@ If not specified otherwise than its mandatory item! Mandatory items are bold, op
#### 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.
```{.yml}
--- # only one document which contains job, aka. list of tasks and some general infos
submission:
job-id: eval_5
language: "cpp"
file-collector: "http://localhost:36587"
submission: # happy hippoes fence
job-id: hippoes
language: c
file-collector: http://localhost:9999/tasks
log: true
tasks:
- task-id: "fetch_input"
- task-id: "compilation"
priority: 2
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:
bin: "fetch"
args:
- "94549d889ae96210ff2a73bd0a5bbe3185f05ff6"
- "01.in"
- task-id: "move_test01"
priority: 3
fatal-failure: true
- "1.in"
- "${SOURCE_DIR}/kuly.in"
- task-id: "evaluation_test_1"
priority: 5
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:
- compile_test01
- evaluation_test_1
cmd:
bin: "mv"
bin: "fetch"
args:
- "recodex.cpp"
- "/tmp/isoeval/1/eval_5/recodex.cpp"
- task-id: "eval_test01"
priority: 4
- "1.out"
- "${SOURCE_DIR}/1.out"
- task-id: "judging_test_1"
priority: 7
fatal-failure: false
dependencies:
- move_test01
- fetch_test_solution_1
cmd:
bin: "recodex"
bin: "${JUDGES_DIR}/recodex-judge-normal"
args:
- "-v"
- "-f 01.in"
stdin: "01.in"
stdout: "01.out"
stderr: "01.err"
- "1.out"
- "plot.out"
sandbox:
name: "isolate"
limits:
- hw-group-id: group1
time: 5 # seconds
wall-time: 6 # seconds
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
parallel: 0
chdir: ${EVAL_DIR}
bound-directories:
- src: /tmp/isoeval/eval_5
dst: /evaluate
mode: RW,NOEXEC
- hw-group-id: group2
time: 6 # seconds
wall-time: 7 # seconds
extra-time: 3 # seconds
memory: 60000 # in KB
parallel: false # time and memory limits are merged from all potential processes/threads
disk-size: 50
disk-files: 5
- 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
- **JOB_ID** - identification of this job
- **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
- **TEMP_DIR** - general temp directory which is not dependent on operating system
- **JUDGES_DIR** - directory in which judges are stored (outside sandbox)