Skip to content

Pupsen-Vupsen/trik-testsys-grading-scripts

Repository files navigation

Проверка решений задач для TrikStudio

Данный проект содержит скрипт для сборки образа 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
    └── Для каждого поля
        ├── Копирование файла решения
        ├── <<Патчинг>> решения с соответствующем полем
        ├── Запуск пропатченного решения
        └── Запись результатов в соответствующею директорию