SIO2 is a free platform for carrying out algorithmic contests and OIOIOI is its main component — the web interface.
You can easily install and run oioioi out of the box with oioioi_easy_installer. Just download the oioioi_easy_installer archive, unpack it and run:
./oioioi.sh install
to install oioioi. Then you can run:
./oioioi.sh start ./oioioi.sh stop
to start and stop oioioi.
- 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.
You can also update your oioioi instance by typing:
./oioioi.sh update
The easy installer method above uses Docker under the hood. Additionally, you can manually use docker files to create images containing our services.
To run the infrastructure simply:
"OIOIOI_CONFIGDIR=<config directory>" "OIOIOI_VERSION=<oioioi_version>" docker-compose up
Make sure to change default superuser password, same as in the automatic method.
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.
First prepare the image with:
OIOIOI_UID=$(id -u) docker-compose -f docker-compose-dev.yml -f extra/docker/docker-compose-dev-noserver.yml build
Then you can start oioioi with:
OIOIOI_UID=$(id -u) docker-compose -f docker-compose-dev.yml -f extra/docker/docker-compose-dev-noserver.yml up OIOIOI_UID=$(id -u) docker-compose -f docker-compose-dev.yml -f extra/docker/docker-compose-dev-noserver.yml exec web python manage.py runserver
to start the infrastructure in the development mode. Current dirrectory with the source code will be bound to /sio2/oioioi/ inside the running container.
oioioi web interface will be available at localhost:8000, and the user admin with password admin will be created.
Additionally you can bind config files and logs folder to the host:
id=$(docker create oioioi-dev) #Create oioioi container docker cp $id:/sio2/deployment deployment #Copy initial deployment folder from oioioi contanier docker rm -v $id #Remove unneeded container
Remember to also uncomment the appropriate volume binding in the web service description in the docker-compose-dev.yml.
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:
- tutorial,
- 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)