Serve.cfg:tester:check dir

From EjudgeWiki

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

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

Описание. Данная конфигурационная переменная устанавливает путь к рабочему каталогу, в котором тестируется решение участника. В этот каталог копируется исполняемая программа и входные данные для неё, в нём же создаются выходные файлы нулевого размера. Решение участника запускается с данным каталогом установленным в качестве текущего каталога. После каждого запуска этот каталог полностью очищается. Для того, чтобы ограничить максимальный размер выходных файлов, создаваемых программой участника, рекомендуется разместить этот каталог на файловой системе ограниченного размера, отдельной от основных файловых систем. Для этого можно использовать, например, loopback-устройство, указав в качестве флагов монтирования -o loop.

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

Пример.

Для создания небольшой файловой системы, монтируемой с помощью устройства-петли (loopback), можно воспользоваться следующей последовательностью команд.

  • Создаём файл требуемого размера (в нашем случае — 32 Мб).
dd if=/dev/zero of=/var/ejudge/image bs=1M count=32
  • Создаём на нём файловую систему.
mke2fs -f /var/ejudge/image
  • Создаём каталог монтирования.
mkdir /var/ejudge/disk
  • Монтируем новую файловую систему.
mount /var/ejudge/image /var/ejudge/disk -o loop
  • Создаём в нём нужный каталог и устанавливаем его права.
mkdir /var/ejudge/disk/work
chown user:user /var/ejudge/disk/work
chmod 755 /var/ejudge/disk/work

Здесь user — пользователь, из-под которого будет проводиться тестирование решений.

После этого в конфигурационном файле турнира serve.cfg можно установить глобальную конфигурационную переменную run_check_dir следующим образом:

run_check_dir = /var/ejudge/disk/work