Проект простой проверялки Д/З
Концепция:
- вся информация хранится в Moin, код просто вставляется в страницу
- вставка специально оформляется (например, вход и выход в тесте)
запуск тестов в статически развёрнутом ALT:Hasher-е (без сети) с переписыванием только тестирующей и пользовательской частей
Можно ли сделать из страницы «форму», т. е. проверять исходник на наличие каких-то обязательных частей и вообще синтаксическую правильность, и не давать записывать, если испорчено?
Интерфейс/база на основе MoinMoin
Одна страничка вида Contests/Name на каждое тестирование
Подстраничка вида /TaskName для задачи
Недоступна пользоватлеям на запись
Подстранички вида /TaskName/TestName для тестов
недоступны пользователям
как задаётся тестирующая программа?
Всякие другие подстранички (например, Makefile или что-то такое)
- Индивидуальные странички пользователей
Подстранички UserName/ContestName/TaskName для решений
недоступные другим пользователям
- Кнопка «проверить»
Сгенерированная тестером страница отчёта UserName/ContestName/TaskName\Report
неизменяемая
с подсчётом количества запусков
Сводная страница со всеми Report-ами UserName/ContestName/Reports
Удобно отформатированная
пользователь в группе ContestName
- Макросы:
- Создание тестирования
- Создание задачи
- Создание теста
не забыть про указание/задание тестирующей программы
- Волшебный макрос, показывающий, каких решений ещё нет, и позволяющий создать страничку с решением по шаблону
Тестер на другой машине (передача по ssh?)
Тестер в чруте без сети (hasher)
Первичное развёртывание ALT:Hasher, один раз на запуск системы
тип окружения (что ставить в ALT:Hasher)
Каждый тест — с перезатиранием $HOME и $TEST ⇒ не нужно переразворачивать ALT:Hasher
Пользовательские файлы копируются в $HOME от builder
Это вынутое содержимое UserName/ContestName/TaskName
Тесты и тестирующие программы копируются в $TEST от rooter
Это вынутое содержимое Contests/Name/TaskName/*
- Стадии теста:
Компиляция исходника (с ограничением по времени)
- Запуск тестирующей программы, на входе — первый тест (с ограничением по времени и памяти)
- Второй…
- …
- Генерация отчёта
Дерево страниц
UserName0
ContestName0
TaskName0
Report
TaskName1
- …
Reports
ContestName1
- …
UserName1
- …
Contest
Name0
TaskName0
TestName0
TestName1
- …
TaskName1
- …
Name1
- …