Difference between revisions of "Подготовка задачи tests"
Line 9: | Line 9: | ||
# Идентификационные параметры задачи | # Идентификационные параметры задачи | ||
[[Serve.cfg:problem:id|id]] = ... | [[Serve.cfg:problem:id|id]] = ... | ||
− | short_name = ... | + | [[Serve.cfg:problem:short_name|short_name]] = ... |
− | long_name = ... | + | [[Serve.cfg:problem:long_name|long_name]] = ... |
# Основные параметры задачи | # Основные параметры задачи | ||
− | test_sfx = ".dat" | + | [[Serve.cfg:problem:test_sfx|test_sfx]] = ".dat" |
− | use_corr | + | [[Serve.cfg:problem:use_corr|use_corr]] |
− | corr_dir = "%Ps" | + | [[Serve.cfg:problem:corr_dir|corr_dir]] = "%Ps" |
− | corr_sfx = ".ans" | + | [[Serve.cfg:problem:corr_sfx|corr_sfx]] = ".ans" |
− | use_stdin | + | [[Serve.cfg:problem:use_stdin|use_stdin]] |
− | use_stdout | + | [[Serve.cfg:problem:use_stdout|use_stdout]] |
− | standard_checker = "cmp_int" | + | [[Serve.cfg:problem:standard_checker|standard_checker]] = "[[cmp_int]]" # Проверка - сравнение двух целых чисел |
− | time_limit = 1 | + | [[Serve.cfg:problem:time_limit|time_limit]] = 1 # Ограничение времени ЦП - 1 секунда |
− | real_time_limit = 5 | + | [[Serve.cfg:problem:real_time_limit|real_time_limit]] = 5 |
− | max_stack_size = 8M | + | [[Serve.cfg:problem:max_stack_size|max_stack_size]] = 8M |
− | max_vm_size = 64M | + | [[Serve.cfg:problem:max_vm_size|max_vm_size]] = 64M |
Идентификационные параметры задачи — это идентификатор задачи [[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: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>]]. |
Revision as of 11:07, 30 June 2010
Навигация: Главная страница/Система ejudge/Использование/Виды задач/Задача на написание тестов/Подготовка задачи
Задачи этого типа являются самыми сложными для подготовки. При описании подготовки таких задач будет предполагаться, что турнир настраивается в альтернативной раскладке файлов, то есть все файлы, относящиеся к задаче, размещаются в одном каталоге.
Contents
Настройка основных параметров задачи
Поскольку задача на написание тестов предполагает запуск программ на тестовых данных как и в стандартной задаче, в разделе конфигурации задачи должны быть установлены параметры, относящиеся к тестированию задач. Например:
# Идентификационные параметры задачи 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 # Ограничение времени ЦП - 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.