Данный проект содержит скрипт для сборки образа docker контейнера способного проверять решения задач, а также скрипты для взаимодействия с данным образом.
Для работа с данным проектом, необходимо иметь установленный docker и bash. Работоспособность протестирована на linux, работоспосбность на macos, вероятно потребует минорных изменений.
На схеме ниже представлен краткий обзор структуры проекта, подробнее о назначении конкретного файла можно прочитать в соответствующей главе.
├── docker
│ ├── Dockerfile -- Dockerfile TrikStudio
│ ├── echo_version.sh -- Утилита для получения версии TrikStudio
│ ├── grade.sh -- Внутренний скрипт проверки решений
│ ├── install_trik.qs -- Qt скрипт установки
│ └── install_trik.sh -- Скрипт установки
├── examples
│ └── straight_line
│ ├── task.png -- Снимок поля
│ ├── README.md -- Условие задачи
│ ├── solutions
│ │ ├── solution_zero.qrs -- Решение на 0 баллов
│ │ ├── solution_partial.qrs -- Решение на 40 баллов
│ │ └── solution_full.qrs -- Решение на 100 баллов
│ ├── expected
│ │ ├── solution_zero.txt -- Ожидаемые результаты для solution_zero
│ │ ├── solution_partial.txt -- Ожидаемые результаты для solution_partial
│ │ └── solution_full.txt -- Ожидаемые результаты для solution_full
│ └── fields
│ ├── 1_square.xml -- Поле проверки 1
│ └── 2_square.xml -- Поле проверки 2
├── build.sh -- Скрипт сборки образа
├── grade.sh -- Скрипт провреки решения
└── README.md
Для сборки образа предназначен скрипт ./build.sh, для подробной информации о скрипте:
./build.sh --help
Образ собирается с помощью официального установщика TrikStudio, из mater или release версии (конфигурируется флагом скрипта). Взаимодействие с UI установщика реализовано с помощью Qt скрипта install_trik.qs.
Далее подробное описание процесса сборки:
./build.sh [options]
├── Сборка образа
│ ├── Установка зависимостей TrikStudio
│ ├── Копирование скриптов из директории docker
│ └── Вызов install_trik.sh
│ ├── Скачивание соответствущего установщика
│ └── Выполнение установки с помощью install_trik.qs
├── Получение версии TrikStudio из собранного образа с помощью echo_version.sh
└── Тэгирование собранного образа
Для проверки решений предназначен скрипт ./build.sh, для подробной информации о скрипте:
./grade.sh --help
Тестами для решения задачи являются поля для робота, артефактом проверки является набор логов (в JSON формате) исполнения на каждом тесте. Классическим способ оценивания задачи является вывод набранных баллов в лог, последущий парсинг и суммирование результатов по тестам. Примеры полей можно найти в директории examples/straight_line/fields
Резульат проверки на поле с именем field.xml именуется field.json.
Проверка выполняется в несколько этапов, далее подробное описание процесса сборки:
./grade.sh [options]
├── Настройка параметров запуска docker образа
│ ├── Тестируемое решение
│ ├── Директория с полями
│ └── Директория для записи результатов
└── Запуск docker образа
├── Вызов внутреннего grade.sh
└── Для каждого поля
├── Копирование файла решения
├── <<Патчинг>> решения с соответствующем полем
├── Запуск пропатченного решения
└── Запись результатов в соответствующею директорию