Ej-polygon

From EjudgeWiki
Revision as of 23:50, 20 October 2014 by Cher (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Навигация: Главная страница/Система ejudge/Использование/Общая архитектура системы/ej-polygon

Программа ej-polygon предназначена для взаимодействия с системой Polygon. Она предназначена для загрузки из системы Polygon пакетов для OS Linux для последних ревизий задач и импорта задач в систему ejudge. Если в системе Polygon не сгенерирован пакет для последней ревизии задачи, автоматически запускается генерация такого пакета.

Программа запускается следующим образом:

ej-polygon CONFIG-FILE

Где CONFIG-FILE - это путь к конфигурационному файлу, содержащему всю необходимую информацию для работы программы. Конфигурационный файл записывается в стандартном формате .cfg-файлов, например:

login = "USER"
password = "PASSWORD"
log_file = "/home/judges/000263/log.txt"
status_file = "/home/judges/000263/status.txt"
pid_file = "/home/judges/000263/pid.txt"
download_dir = "/home/judges/000263/download"
problem_dir = "/home/judges/000263/problems"
id = "3780"
id = "3197"
id = "cdecl"
id = "git"
id = "abatjour"
id = "n-dice-average"
id = "a-plus-b-2012"
id = "weekend-shift"
id = "backup"
id = "z2-matrix"

Статус выполнения программы записывается в указанный файл или выводится на стандартный поток вывода. Статус выполнения программы имеет следующий вид:

0
10
3780;ACTUAL;3780;3-net;
3197;ACTUAL;3197;3-shortest-paths;
cdecl;ACTUAL;2477;cdecl;
git;ACTUAL;3700;git;
abatjour;ACTUAL;3193;abatjour;
n-dice-average;ACTUAL;3199;n-dice-average;
a-plus-b-2012;ACTUAL;3751;a-plus-b-2012;
weekend-shift;ACTUAL;3762;weekend-shift;
backup;ACTUAL;3529;backup;
z2-matrix;ACTUAL;3297;z2-matrix;

Первая строка - это код завершения программы: 0, если программа завершилась успешно, или 1, если при выполнении программы возникли ошибки.

Вторая строка - это число задач для скачивания, которые были заданы в полях id конфигурационного файла.

Далее идут статусы скачивания задачи, каждый статус занимает одну строку и имеет следующий вид:

CFG-ID;STATUS;POLYGON-ID;POLYGON-NAME;

CFG-ID - идентификатор задачи в точности в том виде, в котором он был указан в конфигурационном файле

STATUS - статус скачивания задачи: NOT_STARTED - загрузка задачи не была начата (из-за ошибки подключения, ошибки в конфигурационном файле и т. п.), NOT_FOUND - задача не найдена в системе Polygon, FAILED - скачивание задачи не выполнено, UPDATED - скачивание задачи выполнено, ACTUAL - задача была в актуальном состоянии.

POLYGON-ID - идентификатор задачи в системе Polygon.

POLYGON-NAME - имя задачи в системе Polygon.

Все конфигурационные переменные, допустимые в конфигурационном файле, перечислены ниже.

Обязательные параметры

login = LOGIN

Задает login в систему Polygon.

password = PASSWORD

Задает пароль в систему Polygon.

download_dir = DOWNLOAD-DIR

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

problem_dir = PROBLEM-DIR

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

id = ID

Задает идентификатор задачи для импорта. В качестве идентификатора задачи поддерживается как problemId (например, 3780), так и problemName (weekend-shift). Если идентификатор начинается со строки polygon:, данный префикс отбрасывается, например, polygon:3780 преобразовывается в 3780.

В конфигурационном файле может быть указано несколько идентификаторов задач. Если не указан ни один идентификатор задачи, должен быть указан идентификатор турнира.

polygon_contest_id = ID

Задает идентификатор или имя турнира для импорта. Турнир рассматривается просто как совокупность входящих в него задач.

Дополнительные параметры

language_priority = PRIORITY

Задает приоритет языков. Поддерживаются два значения: en,ru и ru,en. В первом случае приоритет будет отдаваться английскому названию задачи и английской версии условия. Во втором случае — русскому названию и русской версии условия.

log_file = LOG-FILE

Задает путь к файлу, в который будет сохранен диагностический вывод программы ej-polygon. Если параметр не задан, для этих целей используется стандартный поток ошибок.

status_file = STATUS-FILE

Задает путь к файлу, в который будет сохранен итоговый статус работы программы ej-polygon. Если параметр не задан, итоговый статус работы будет выведен на стандартный поток вывода.

pid_file = PID-FILE

Задает путь к файлу, в который будет записан идентификатор процесса ej-polygon. Этот файл удаляется при завершении работы ej-polygon. Если параметр не задан, файл создаваться не будет.

dir_mode = DIR-MODE

Задает права доступа к создаваемым каталогам. Права доступа записываются в восьмеричной нотации, например, 755. Если права доступа не заданы, будет использовано стандартное значение (777 & ~umask).

dir_group = DIR-GROUP

Задает имя группы пользователей, которой будут принадлежать создаваемые каталоги. Если параметр не задан, будет использоваться основной идентификатор группы пользователя, запустившего ej-polygon.

file_mode = FILE-MODE

Задает права доступа к создаваемым файлам. Права доступа записываются в восьмеричной нотации, например, 644. Если права доступа не заданы, будет использовано стандартное значение (666 & ~umask).

file_group = FILE-GROUP

Задает имя группы пользователей, которой будут принадлежать создаваемые файлы. Если параметр не задан, будет использоваться основной идентификатор группы пользователя, запустившего ej-polygon.

enable_max_stack_size = 1

Если этот конфигурационный параметр установлен, то в создаваемом конфигурационном файле турнира ejudge ограничение размера стека автоматически устанавливается равным ограничению на объем памяти, заданным в описании задачи в архиве Polygon.

ignore_solutions = 1

Если этот конфигурационный параметр установлен, то дополнительные решения задачи помещаются в каталог "solutions1" вместо "solutions", и при последующей операции "Check contest settings" эти решения будут проигнорированы. (С версии 3.1.0)

create_mode = 1

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

ejudge_id = ID

Данный конфигурационный параметр позволяет задавать идентификатор задачи в системе ejudge. Этот идентификатор без изменений записывается в конфигурационный файл problem.cfg в каталоге задачи. Параметр может использоваться несколько раз. Каждое использование параметра должно соответствовать использованию параметра id.

ejudge_short_name = NAME

Данный конфигурационный параметр позволяет задавать краткое название задачи в системе ejudge. Он без изменений записывается в конфигурационный файл problem.cfg в каталоге задачи. Параметр может использоваться несколько раз. Каждое использование параметра должно соответствовать использованию параметра id.

Параметры настройки

working_dir = WORKING-DIR

Позволяет установить рабочий каталог, в котором будет работать программа ej-polygon. Если параметр не задан, программа не будет изменять рабочий каталог.

sleep_interval = SLEEP-INTERVAL

Позволяет установить паузу между последовательными опросами состояния готовности пакетов в системе Polygon. Значение по умолчанию - 10 (секунд).

retry_count = COUNT

Позволяет установить максимальное значение числа попыток скачивания задачи. Значение по умолчанию - 10.

polygon_url = URL

Позволяет задать URL системы Polygon. Значение по умолчанию: http://codecenter.sgu.ru/polygon.

user_agent = USER-AGENT

Позволяет задать поле user-agent. Значение по умолчанию включает в себя версию ejudge и время компиляции.

arch = ARCH

Позволяет задать суффикс архитектуры .zip-пакета. Значение по умолчанию - $linux.

problem_xml_name = PROBLEM-XML-NAME

Позволяет задать имя XML-файла с конфигурацией задачи в .zip-архиве. Значение по умолчанию - problem.xml.

testset = TESTSET

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