Difference between revisions of "Serve.cfg:tester:check cmd"

From EjudgeWiki
 
(One intermediate revision by the same user not shown)
Line 16: Line 16:
 
|'''Может повторяться:''' || ''нет''  
 
|'''Может повторяться:''' || ''нет''  
 
|}
 
|}
'''Описание.'''  
+
'''Описание.''' Данная конфигурационная переменная устанавливает путь к проверяющей
Описание. Данная конфигурационная переменная устанавливает путь к проверяющей
 
 
программе, которая запускается каждый раз после завершения работы тестируемой программы на очередном тесте и проверяет правильность ответа тестируемой программы. Проверяющая программа запускается только если тестируемая программа уложилась в отведённое
 
программе, которая запускается каждый раз после завершения работы тестируемой программы на очередном тесте и проверяет правильность ответа тестируемой программы. Проверяющая программа запускается только если тестируемая программа уложилась в отведённое
 
на работу над одним тестом время (см. переменную <tt>[[serve.cfg:problem:time_limit|time_limit]]</tt>) и завершилась успешно,
 
на работу над одним тестом время (см. переменную <tt>[[serve.cfg:problem:time_limit|time_limit]]</tt>) и завершилась успешно,
Line 23: Line 22:
 
есть используется ли при тестировании решения заранее заготовленный файл с правильным
 
есть используется ли при тестировании решения заранее заготовленный файл с правильным
 
ответом.
 
ответом.
* Первый параметр (<tt>argv[1]</tt>) проверяющей программы — путь к файлу, в котором находятся входные данные текущего теста. Передаётся путь к файлу, находящемуся в тестовом каталоге (см. переменную <tt>[[serve.cfg:problem:test_dir|test_dir]]</tt>), а не к файлу, скопированному в каталог тестирования перед запуском тестируемой программы. Таким образом, вне зависимости от значения переменной <tt>[[serve.cfg:tester:is_dos|is_dos]]</tt> проверяющая программа работает с
+
* Первый параметр (<tt>argv[1]</tt>) проверяющей программы — путь к файлу, в котором находятся входные данные текущего теста. Передаётся путь к файлу, находящемуся в тестовом каталоге (см. переменную <tt>[[serve.cfg:problem:test_dir|test_dir]]</tt>), а не к файлу, скопированному в каталог тестирования перед запуском тестируемой программы. Таким образом, вне зависимости от значения переменной <tt>[[serve.cfg:tester:is_dos|is_dos]]</tt> проверяющая программа работает с непреобразованным входным файлом.
непреобразованным входным файлом.
 
 
* Второй параметр (<tt>argv[2]</tt>) проверяющей программы — путь к файлу, в котором находится результат работы тестируемой программы. Преобразования формата файла не выполняется, поэтому проверяющая программа должна обрабатывать концы строк в и стиле <tt>DOS</tt> (<tt>’\r’</tt>, <tt>’\n’</tt>) для проверки решения <tt>DOS</tt>- или <tt>win3</tt>2-программ, и в стиле <tt>Unix</tt> (<tt>’\n’</tt>) для проверки решения <tt>Linux</tt>-программ.
 
* Второй параметр (<tt>argv[2]</tt>) проверяющей программы — путь к файлу, в котором находится результат работы тестируемой программы. Преобразования формата файла не выполняется, поэтому проверяющая программа должна обрабатывать концы строк в и стиле <tt>DOS</tt> (<tt>’\r’</tt>, <tt>’\n’</tt>) для проверки решения <tt>DOS</tt>- или <tt>win3</tt>2-программ, и в стиле <tt>Unix</tt> (<tt>’\n’</tt>) для проверки решения <tt>Linux</tt>-программ.
 
* Если установлена конфигурационная переменная <tt>[[serve.cfg:problem:use_corr|use_corr]]</tt>, третий параметр (<tt>argv[3]</tt>) проверяющей программы — путь к файлу, содержащему правильный ответ на текущий тест (см. переменную <tt>[[serve.cfg:problem:corr_dir|corr_dir]]</tt>). Если конфигурационная переменная <tt>use_corr</tt> не установлена, третий параметр в проверяющую программу не передаётся.
 
* Если установлена конфигурационная переменная <tt>[[serve.cfg:problem:use_corr|use_corr]]</tt>, третий параметр (<tt>argv[3]</tt>) проверяющей программы — путь к файлу, содержащему правильный ответ на текущий тест (см. переменную <tt>[[serve.cfg:problem:corr_dir|corr_dir]]</tt>). Если конфигурационная переменная <tt>use_corr</tt> не установлена, третий параметр в проверяющую программу не передаётся.

Latest revision as of 09:43, 20 February 2012

Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/serve.cfg/Конфигурационные параметры тестирования/check_cmd

Имя переменной: check_cmd
Содержится в: tester
Используется: run
Тип содержимого: путь к файлу
Может отсутствовать: нет
Наследуется: да
Может повторяться: нет

Описание. Данная конфигурационная переменная устанавливает путь к проверяющей программе, которая запускается каждый раз после завершения работы тестируемой программы на очередном тесте и проверяет правильность ответа тестируемой программы. Проверяющая программа запускается только если тестируемая программа уложилась в отведённое на работу над одним тестом время (см. переменную time_limit) и завершилась успешно, то есть выработав код возврата 0. Проверяющей программе передаются два или три параметра в зависимости от того, установлена ли переменная use_corr описания задачи, то есть используется ли при тестировании решения заранее заготовленный файл с правильным ответом.

  • Первый параметр (argv[1]) проверяющей программы — путь к файлу, в котором находятся входные данные текущего теста. Передаётся путь к файлу, находящемуся в тестовом каталоге (см. переменную test_dir), а не к файлу, скопированному в каталог тестирования перед запуском тестируемой программы. Таким образом, вне зависимости от значения переменной is_dos проверяющая программа работает с непреобразованным входным файлом.
  • Второй параметр (argv[2]) проверяющей программы — путь к файлу, в котором находится результат работы тестируемой программы. Преобразования формата файла не выполняется, поэтому проверяющая программа должна обрабатывать концы строк в и стиле DOS (’\r’, ’\n’) для проверки решения DOS- или win32-программ, и в стиле Unix (’\n’) для проверки решения Linux-программ.
  • Если установлена конфигурационная переменная use_corr, третий параметр (argv[3]) проверяющей программы — путь к файлу, содержащему правильный ответ на текущий тест (см. переменную corr_dir). Если конфигурационная переменная use_corr не установлена, третий параметр в проверяющую программу не передаётся.

Проверяющая программа запускается с текущим каталогом, установленным в рабочий каталог тестирования. Вывод проверяющей программы на стандартный поток вывода или стандартный поток ошибок сохраняется и добавляется в файл протокола. Результат тестирования определяется по коду возврата, выработанному проверяющей программой.

0 OK — тестируемая программа выдала верный ответ.
4 “Presentation error”
5 “Wrong answer”

Если проверяющая программа выработала любой другой код завершения, завершилась из-за прихода сигнала (любого), или превысила отведённый ей лимит времени (см. переменную checker_real_time_limit), тестирование программы участника завершается со статусом “Check failed”.

Если данная конфигурационная переменная не установлена, но абстрактный тестировщик, указанный в переменной super, устанавливает эту переменную, используется значение переменной из описания абстрактного тестировщика, при этом выполняются форматные подстановки. Если после этого значение данной переменной check_cmd всё ещё не определено, программа run выдаёт ошибку и отказывается запускаться. Если значение переменной check_cmd не начинается с символа ’/’, то есть является относительным путём, оно добавляется к значению глобальной конфигурационной переменной checker_dir.

Пример.

check_cmd = "check_a"