SIO2 is a free platform for carrying out algorithmic contests and OIOIOI is its main component — the web interface.
Additionally, there are available docker files to create images containing our services. We do not recommend this method of running OIOIOI. Please inspect Docker files and startup scripts before using in production.
To run the infrastructure simply:
"OIOIOI_CONFIGDIR=<config directory>" "OIOIOI_VERSION=<oioioi_version>" docker-compose up
- Make sure to change default superuser password. To do that:
- Login to the superuser with default credentials (username:admin, password:admin)
- Click username ("admin") in upper-right corner of the webpage.
- Click "Change password"
- Fill and submit password change form
To start additional number of workers:
"OIOIOI_CONFIGDIR=<config directory>" "OIOIOI_VERSION=<oioioi_version>" docker-compose up --scale worker=<number>
as described in Docker docs.
See INSTALL for instructions.
See UPGRADING for instructions.
Amanda is recommended for doing OIOIOI backups. Sample configuration with README
is available in extra/amanda
directory.
Documentation for developers:
OIOIOI has a big suite of unit tests. You can run them in following way:
test.sh
- a simple test runner, use from virtualenvtest_selenium.sh
- long selenium tests, use from virtualenvtox [path/to/module[::TestClass[::test_method]]] [-- arg1 arg2 ...]
- runs pytest in isolated environemnt
Supported args:
-n NUM
- run tests using NUM CPUs-v
- increase verbosity-q
- decrease verbosity-x
- exit after first failure-lf
- runs only tests that failed last time--runslow
- runs also tests marked as slow
Well, we don't have a full-fledged User's Guide, but feel free to propose what should be added here.
To run a contest, you obviously need some tasks. To add a task to a contest in OIOIOI, you need to create an archive, called task package. Here are some pointers, how it should look like:
- example task packages used by our tests,
- a rudimentary task package format specification.
Here are some useful links:
- our mailing list
- GitHub issues system (English only)