Рабочий стол > DL Руководство пользователя > ... > Вспомогательные средства установки задач по программированию > Установка интерактивных задач NEERC (Питер) > Просмотр
Установка интерактивных задач NEERC (Питер) Войти | Зарегистрироваться   Просмотр версии для печати текущей страницы.

Добавлено Гуленко Алексей, последний раз изменено Гуленко Алексей Feb 02, 2014  (просмотр изменений)
Метки: 
(нет)

Установка интерактивных задач NEERC

В этом году на NEERC начали cтавить интерактивные задачи с тестированием на Java. Эти задачи удалось поставить на DL; здесь задокументирован процесс установки.

Jan 2014. Автоматически обнаруживаются и устанавливаются задачи данного типа при загрузке DL Master'ом.

Содержание

Описание системы
Слой совместимости для DL
Процесс установки
TODO

Описание системы

В папке с задачей есть следующие файлы:

  • problem.xml (файл конфигурации)
  • Interact.jar (программа-собеседник) + исходники
  • coact.exe (программа-тестер)
  • Check.jar (программа-чекер) + исходники

В problem.xml (файл конфигурации) есть тег <interactor type="%simple">. В нём указан файл программы-собеседника (Interact.jar) и способ запуска (Java7).

Interact.jar - программа-собеседник (читает <taskname>.in, даёт вывод для решения, получает ввод для него же и выводит информацию о процессе тестирования в <taskname>.out).

coact.exe запускается со следующими параметрами:

coact.exe <timelimit(seconds)> <memlimit(bytes)> <interactor> <solution>

Например:

coact.exe 2s 268435456 interact.exe sol.exe

При этом он умеет обрабатывать кавычки в параметрах:

coact.exe 2s 268435456 "java -jar Interact.jar" sol.exe

Check.jar - реализация класса чекера для библиотеки testlib4j.jar. Он запускается следующей командой:

java -cp "<путь>testlib4j.jar;Check.jar" ru.ifmo.testlib.CheckerFramework Check <infile> <chkfile> <outfile>

Он читает <taskname>.out, генерирует комментарий и завершает работу; результат он возвращает кодом выполнения:

  • 0: OK
  • 1: Wrong Answer
  • 2: Presentation Error

Слой совместимости для DL

Задача ставится как интерактивная, с чекером, все файлы забираются с собой:

task.cfg
CHECKER = 1
CHECKSUBJECT = FILE
CHECKFILES = {*.*}
TYPE = INTERACTIVE

Для запуска coact.exe был написан скрипт coact.bat с одним параметром (скомпилированный файл решения). В StdSwp был добавлен код, передающий управление этому скрипту при его наличии; также добавлен код, обнаруживающий файл solution.bat и передающий его первую непустую строку как команду запуска решения (файл генерируется при компиляции Java-решений). Поскольку ограничение по времени проверяет coact.exe, оно же для StdSwp повышено:

task.cfg
TIME_LIMIT = 5

На данный момент TIME_LIMIT вычисляется как ограничение задачи + 3 секунды.

Для обработки чекера был написан вспомогательный чекер InteractChecker.jar (исходники), запускаемый с помощью скрипта checker.bat (из-за особенностей Delta пришлось дописать checker.exe, просто вызывающий этот скрипт).

Процесс установки

  • Убираем все посторонние файлы из корня задачи, в первую очередь авторские решения и скомпилированные из них экзешники.
    • Для переноса в подпапку old/ можно запускать команду вроде
      move *.exe *.cpp *.pas *.py *.java old/
    • В корне нужно оставить (или вернуть после переноса) следующие файлы:
      coact.exe
      checker.exe
  • Устанавливаем слой совместимости с DL
    • Копируем файлы из release.rar в папку с задачей
    • Добавляем в начало task.cfg следующие строки:
      task.cfg
      CHECKER = 1
      CHECKSUBJECT = FILE
      CHECKFILES = {*.*}
      TYPE = INTERACTIVE
    • Меняем TIME_LIMIT в task.cfg; ставим ограничения в coact.bat
  • Тестируем
    • Пробуем отсылать авторские решения на Pascal/C++/Java
      • При наличии непонятных проблем проверить папку установленной задачи на наличие посторонних файлов (в частности, *.exe)

TODO

  • Интерфейс:
    • Изменить отображаемое ограничение по времени (значение в task.cfg больше фактического)
  • Тестирование:
    • прикрутить тестирование решений на Java (прежде всего авторских):
      • добавил в скрипты компиляции Java генерацию solution.bat, в stdswp – передачу его содержимого как команды запуска решения
        • разнести изменения файлов compile_java?.cmd и stdswp.exe по машинам (нету на Nit5)
    • установить Java 7 на сервер тестирования (нету на Nit и Nit3)
      • или можно портировать Interact и Check под Java 6:
        • копируем файлы из prepare.rar в папку с задачей
        • запускаем prepare.bat
        • при наличии ошибок компиляции правим код в указанных местах и снова запускаем prepare.bat
        • удаляем содержимое prepare.rar из папки с задачей
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: http://www.atlassian.com/software/confluence Build:#2.6.1 916) - Ошибка/новая особенность - Свяжитесь с Администраторами