Difference between revisions of "Подготовка задачи tests"

From EjudgeWiki
Line 3: Line 3:
 
Задачи этого типа являются самыми сложными для подготовки. При описании подготовки таких задач будет предполагаться, что турнир настраивается в [[Альтернативная раскладка файлов|альтернативной раскладке файлов]], то есть все файлы, относящиеся к задаче, размещаются в одном каталоге.
 
Задачи этого типа являются самыми сложными для подготовки. При описании подготовки таких задач будет предполагаться, что турнир настраивается в [[Альтернативная раскладка файлов|альтернативной раскладке файлов]], то есть все файлы, относящиеся к задаче, размещаются в одном каталоге.
  
=== Начальная настройка конфигурационных файлов ===
+
=== Настройка основных параметров задачи ===
 +
 
 +
Поскольку задача на написание тестов предполагает запуск программ на тестовых данных как и в стандартной задаче, в разделе конфигурации задачи должны быть установлены параметры, относящиеся к тестированию задач. Например:
 +
 
 +
# Идентификационные параметры задачи
 +
[[Serve.cfg:problem:id|id]] = ...
 +
short_name = ...
 +
long_name = ...
 +
# Основные параметры задачи
 +
test_sfx = ".dat"
 +
use_corr
 +
corr_dir = "%Ps"
 +
corr_sfx = ".ans"
 +
use_stdin
 +
use_stdout
 +
standard_checker = "cmp_int"
 +
time_limit = 1
 +
real_time_limit = 5
 +
max_stack_size = 8M
 +
max_vm_size = 64M
 +
 
 +
Идентификационные параметры задачи &mdash; это идентификатор задачи [[Serve.cfg:problem:id|<tt>id</tt>]], короткое название [[Serve.cfg:problem:short_name|<tt>short_name</tt>]], полное название [[Serve.cfg:problem:long_name|<tt>long_name</tt>]] и, возможно, внутреннее название задачи [[Serve.cfg:problem:internal_name|<tt>internal_name</tt>]].
 +
 
 +
=== Настройка дополнительных параметров для задач на разработку тестов ===
  
 
Для задачи на написание тестов должны быть установлены следующие параметры задачи.
 
Для задачи на написание тестов должны быть установлены следующие параметры задачи.
  
[problem]
 
# основные параметры задачи ...
 
# параметры для задач на разработку тестов
 
 
  type = "tests"
 
  type = "tests"
 
  binary
 
  binary
 
  enable_language = "application/x-gzip"
 
  enable_language = "application/x-gzip"
 
Основные параметры задачи &mdash; это идентификатор задачи [[Serve.cfg:problem:id|<tt>id</tt>]], короткое название [[Serve.cfg:problem:short_name|<tt>short_name</tt>]], полное название [[Serve.cfg:problem:long_name|<tt>long_name</tt>]] и, возможно, внутреннее название задачи [[Serve.cfg:problem:internal_name|<tt>internal_name</tt>]].
 
  
 
Параметр [[Serve.cfg:problem:type|<tt>type</tt>]] задает тип задачи как задачу на разработку тестов. Параметр [[Serve.cfg:problem:binary|<tt>binary</tt>]] разрешает прием двоичных файлов в качестве решений. Параметр [[Serve.cfg:problem:enable_language|<tt>enable_language</tt>]] разрешает прием файлов формата <tt>GZIP</tt> в качестве решений.
 
Параметр [[Serve.cfg:problem:type|<tt>type</tt>]] задает тип задачи как задачу на разработку тестов. Параметр [[Serve.cfg:problem:binary|<tt>binary</tt>]] разрешает прием двоичных файлов в качестве решений. Параметр [[Serve.cfg:problem:enable_language|<tt>enable_language</tt>]] разрешает прием файлов формата <tt>GZIP</tt> в качестве решений.
Line 39: Line 57:
  
 
Параметр <tt>style_checker_env</tt> может повторяться в разделе описания задачи несколько раз. Для полного описания поддерживаемых программой [[style_archive]] переменных окружения смотрите [[style_archive|ее описание]].
 
Параметр <tt>style_checker_env</tt> может повторяться в разделе описания задачи несколько раз. Для полного описания поддерживаемых программой [[style_archive]] переменных окружения смотрите [[style_archive|ее описание]].
 +
 +
=== Настройка проверки тестов ===
 +
 +
Файлы с тестовыми данными, сданные на проверку, должны быть предварительно проверены на корректность [[Test checkers|проверяющей программой для тестов]]. Провеяющая программа для тестов должна проверить входной и выходной форматы файлов, ограничения на входные данные. Кроме того, программа может проверить соответствие входных данных и ответа.
 +
 +
Имя проверяющей программы для тестов задается с помощью конфигурационной переменной [[Serve.cfg:problem:test_checker_cmd|<tt>test_checker_cmd</tt>]]. При необходимости дополнительные переменные окружения могут задаваться с помощью конфигурационной переменной [[Serve.cfg:problem:test_checker_env|<tt>test_checker_env</tt>]].
 +
 +
test_checker_cmd = "testcheck"
 +
 +
В этом примере имя проверяющей программы &mdash; <tt>testcheck</tt>.

Revision as of 11:01, 30 June 2010

Навигация: Главная страница/Система ejudge/Использование/Виды задач/Задача на написание тестов/Подготовка задачи

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

Настройка основных параметров задачи

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

# Идентификационные параметры задачи
id = ...
short_name = ...
long_name = ...
# Основные параметры задачи
test_sfx = ".dat"
use_corr
corr_dir = "%Ps"
corr_sfx = ".ans"
use_stdin
use_stdout
standard_checker = "cmp_int"
time_limit = 1
real_time_limit = 5
max_stack_size = 8M
max_vm_size = 64M

Идентификационные параметры задачи — это идентификатор задачи id, короткое название short_name, полное название long_name и, возможно, внутреннее название задачи internal_name.

Настройка дополнительных параметров для задач на разработку тестов

Для задачи на написание тестов должны быть установлены следующие параметры задачи.

type = "tests"
binary
enable_language = "application/x-gzip"

Параметр type задает тип задачи как задачу на разработку тестов. Параметр binary разрешает прием двоичных файлов в качестве решений. Параметр enable_language разрешает прием файлов формата GZIP в качестве решений.

Настройка проверки правильности сдаваемого архива

Архив, сдаваемый участником на проверку, должен быть проверен на корректность. Необходимо проверить, что файлы в архиве по отдельности и все в целом удовлетворяют ограничениям на размер и количество файлов, что имена всех файлов заданы корректно, что в архиве отсутствуют лишние файлы. Эта проверка должна быть выполнена без разархивирования архива в файловую систему во избежание потенциальных дыр в безопасности. Такая проверка выполняется программой style_archive, поставляемой в составе ejudge.

Чтобы включить проверку сдаваемых архивов необходимо добавить в раздел описания задачи определение конфигурационной переменной style_checker.

style_checker_cmd = "@prefix@/libexec/ejudge/checkers/style_archive"

Здесь @prefix@ будет автоматически заменен на каталог, в который проинсталлирована система ejudge. Параметры проверки архива на целостность программе style_archive можно передавать либо с помощью командной строки, либо с помощью переменных окружения. В разделе конфигурации задачи можно воспользоваться механизмом передачи параметров с помощью переменных окружения.

Чтобы установить максимальный размер файла в архиве равным 1 килобайт необходимо задать переменную окружения EJ_MAX_FILE_SIZE.

style_checker_env = "EJ_MAX_FILE_SIZE=1K"

Чтобы установить максимальное количество тестов (то есть пар файлов c входными данными и с правильным ответом) равным 10 необходимо задать переменую окружения EJ_MAX_TEST_COUNT.

style_checker_env = "EJ_MAX_TEST_COUNT=10"

Параметр style_checker_env может повторяться в разделе описания задачи несколько раз. Для полного описания поддерживаемых программой style_archive переменных окружения смотрите ее описание.

Настройка проверки тестов

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

Имя проверяющей программы для тестов задается с помощью конфигурационной переменной test_checker_cmd. При необходимости дополнительные переменные окружения могут задаваться с помощью конфигурационной переменной test_checker_env.

test_checker_cmd = "testcheck"

В этом примере имя проверяющей программы — testcheck.