Skip to content

Digital-tutors/sandbox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Песочница для автоматической проверки программ студентов

Данный репозиторий содержит исходный код песочницы, используемой в целях автоматической проверки программ студентов.

Установка

Предварительные настройки

Настройка сервера RabbitMQ

Убедитесь, что запущен образ сервера RabbitMQ. Создать его можно с помощью команды

docker run -d --hostname my-rabbit --name my-rabbit -p 8088:15672 -p 5672:5672 --net=mynet rabbitmq:management

Запуск сервера

docker start my-rabbit

Настройка переменных окружения

Первы делом необходимо задать переменные окружения в файле .env в корневой папке проекта. Список параметров окружения приведен в таблице ниже:

Переменная Описание
DOCKER_NETWORK Наименование сети в docker. Тип: строка
CODE_STORAGE_PATH Путь к хранилищу решений на хосте. Тип: строка
LANG_CONFIG_FILE_PATH Путь к файлу конфигурации компиляторов на хосте. Тип: строка
TASK_QUEUE Наименование очереди решений в RabbitMQ. Тип: строка
SUPPORT_QUEUE Наименование очереди поддержки в RabbitMQ. Тип: строка
QUEUE_EXCHANGE Наименование exchange в RabbitMQ. Тип: строка
RESULT_QUEUE Наименование очереди результатов в RabbitMQ. Тип: строка
AMQPS_SCHEME AMQP/AMQPS URL в RabbitMQ. Тип: строка
DOCKER_AMQPS_SCHEME AMQP/AMQPS URL в RabbitMQ в контейнере. Тип: строка
DOCKER_NETWORK_ID ID сети DOCKER_NETWORK в docker. Тип: строка
TARGET_FILE_STORAGE_PATH Путь к хранилищу решений в контейнере. Тип: строка
RABBIT_HOST_NAME Наименование хоста контейнера RabbitMQ. Тип: строка
TASK_STORAGE_URL URL хранилища тасков, где taskID есть $taskID. Тип: строка
DOCKER_URL_OF_TASK_STORAGE URL хранилища тасков, где taskID есть $taskID для контейнера. На not-Linux машинах для доступа к localhost хоста необходимо прописывать как docker.host.internal. Тип: строка
IS_CONTAINER_STARTED true или false. По умолчанию false. Тип: строка

Настройка переменных окружения

Для работы программы необходимо построить образы для каждого из языков программирования. Опишите свои языки в массивах "Images" файлов "prepare-images.sh" и "config.go". В случае необходимости для поддержки новых языков программирования добавьте свои файлы Dockerfile в соответствующую папку по образцу.

Команда запуска скрипта

./prepare-images.sh

В случае возникновения ошибки "Permission denied" сперва выполните команду

sudo chmod +x prepare-images.sh

Некоторые вопросы касательно сервиса

Описание кодов возврата программы

Код возрата Описание
524 Timeout expired. Сработка ограничения по времени
137 Memory expired. Сработка ограничения по времени
200 Success. Успешный запуск решения и прохождение всех тестов
409 Conflict. Успешный запуск решения. Провален один из тестов
-1 Compilation error/Runtime error. Ошибка компиляции или запуска решения
1 Ошибка работы системы. Сообщение отправлено в очередь поддержки