Развертывание nsuts
Тестирующий сервер
Ниже рассматривается установка системы тестирования NSUts на linux-дистрибутивы, работающие на пакетном менеджере
dpkg (debian, ubuntu и прочие).
Установка сервера NSUts для ОС Windows с использованием
Denwer описана
здесь.
Пакеты
Для установки сервера используются два пакета:
nsuts-db используется для развертывания, обновления, удаления базы данных
nsuts содержит исполняемые скрипты приложения и статический контент.
Требования к окружению
Работа сервера ситемы тестирования была протестирована на ОС Debian Lenny и Debian Squeeze.
Для работы сервера системы тестирования необходим установленный веб-сервер apache2 с модулем mod_perl и интерпретатором perl версии >= 5.10, СУБД
My SQL?, утилиты zip, unzip, diff и некоторые другие. Некоторые модули языка perl из архива CPAN. Полный список зависимостей имеется в метаинформации пакетов nsuts-db и nsuts.
Установка
Чтобы установить систему тестирования NSUts, необходимо использовать пакеты
nsuts-db_<version>.deb и
nsuts_<version>.deb. Для установки данных пакетов необходимо воспользоваться программным обеспечением по управлению deb-пакетами, предоставленным ОС. В качестве таких программ можно использовать консольные утилиты dpkg или aptitude.
Для установки deb-пакетов, используя dpkg, необходимо в командной строке от пользователя root ввести: dpkg -i <имя_файла_пакета>. При использовании этой команды подразумевается, что все пакеты, от которых зависит данный пакет, уже установлены. В противном случае после выполнения данной команды необходимо исправить неудовлетворенные зависимости командой: apt-get -f install.
При первой установке пакетов nsuts-db необходимо запустить скрипт /usr/sbin/nsuts-db-setup, который позволяет сконфигурировать подключение к БД. Настройки подключения будут сохранены в файле /etc/nsuts/nsuts_new_db.cfg. При последующем обновлении пакета nsuts-db эти настройки будут использоваться для обновления БД.
После установки пакета nsuts-db необходимо выполнить установку пакета nsuts вышеприведенным способом.
В процессе установки пакета nsuts создаются необходимые для работы сервера директории в /var/filebase/ и временные директории в /tmp/htmlcache/. Для удаления созданных в процессе работы сервера файлом используется скрипт /usr/sbin/nsuts-fb-remove
После корректного завершения установки обоих пакетов стартовая страница системы тестирования NSUts будет доступна по адресу http://<SERVER>:82/nsuts-cgi/
Upd: начиная с версии nsuts-1.2.7 стартовая страница доступна по адресу http://<SERVER>/nsuts/
Примечание: Необходимо проверить, что доступ к базе данных для тестирующего клиента открыт (например, установить параметр bind-address=0.0.0.0 в файле /etc/mysql/my.cnf).
Удаление
Для удаления пакетов системы тестирования NSUts можно воспользоваться консольными утилитами apt-get или aptitude с оператором
remove.
Чтобы удалить пакеты вместе с конфигурационными файлами используется оператор
purge.
Примечание: Если необходимо выполнить удаление всех данных из БД mysql, созданных в процессе установки и использования системы тестирования, можно воспользоваться скриптом /usr/sbin/nsuts-db-remove.
Последовательность действий для полного удаления сервера NSUts имеет следующий вид:
- apt-get purge nsuts
- /usr/sbin/nsuts-db-remove
- apt-get purge nsuts-db
Дополнительная настройка
Предлагаемая в пакете по умолчанию конфигурация виртуального хоста nsuts веб-сервера apache может конфликтовать с существующей конфигурацией. Поэтому необходимо вручную внести необходимые изменения в настройки виртуального хоста nsuts.
Замечание (для nsuts-1.2.6): при использовании порта, отличного от 80 (в файле конфигурации пакета nsuts прописан порт 82) необходимо указать используемый порт в ports.conf.
Upd: Начиная с версии nsuts-1.2.7 дополнительные настройки не требуются :-)
Тестирующий клиент
Требования к окружению
Работа тестирующего клиента была протестирована на ОС Windows XP, ОС Windows 7.
Также необходимо наличие интерпретатора perl версии >=5.10.
Простая установка
(При использовании установщика Nsuts Client?-installer.exe необходимо выбрать опцию «текущий пользователь» во вкладке «Выбор пользователя Nsuts Client?")
В процессе работы установщика нужно в разделе «Выбор директории установки» указать базовую директорию для установки NSUtsClient.
Внимание: базовая директория NSUtsClient не должна содержать пробелов (в пути).
В результате установки по указанной в установщике директории будет создан каталог NSUtsClient с вложенными подкаталогами checker/, compiler/, perl/. При этом текущий пользователь должен иметь права на чтение/запись в каталог checker/TEST/.
Простая установка позволяет использовать тестирующий клиент, но не включает в себя дополнительные действия по обеспечению безопасности работы приложения и ОС, на которой запущен клиент.
Сложная установка
(При использовании установщика Nsuts Client?-installer.exe необходимо выбрать опцию «новый пользователь» во вкладке «Выбор пользователя Nsuts Client?")
Внимание: для использования этой опции необходимы права администратора!
В процессе работы установщика нужно ввести имя и пароль нового пользователя в разделе «Выбор пользователя NSUtsClient», а также в разделе «Выбор директории установки» указать базовую директорию для установки NSUtsClient.
Внимание: базовая директория NSUtsClient не должна содержать пробелов (в пути).
Поскольку используемая для запуска приложений изолирующая среда (Winkill) не обеспечивает полной изоляции запускаемых приложений, может понадобится выполнить дополнительные операции по обеспечению безопасности работы системы:
- Создание отдельного пользователя с ограниченными правами для запуска иестируемх программ от его имени. Данный пользователь должен иметь права на чтение и запись только длля директирии, из которой он запущен (по умолчанию: checker\TEST).
- Данные аутентификации созданного пользователя должны быть прописаны в файле checker\param.ini (параметр Security определяет, используется ли запись от указанного имени пользователя)
Данные операции в автоматическом режиме осуществляются утсановщиком nsuts-client (см. также «Ошибки»)
Запуск тестирующего клиента
Для того чтобы запустить процесс тестирования необходимо проделать следующие действия:
- Распаковать содержимое архива nsuts-client (или установить, в случае использования инсталлятора) в некоторую директорию.
- В файле checker\tester2.cfg необходимо прописать правильные настройки подключения к СУБД, url скрипта get2.cgi и параметр fbauth. Эти настройки используются для взаимодействия с сервером системы тестирования.
- Настроить и подключить компиляторы (см. «Настройка компиляторов»)
- Запуск тестирующего клиента осуществляется скриптом loop.bat.
Настройка компиляторов
В директории .\checker\ должны быть расположены bat-файлы для запуска компиляции исходных кодов программ и компиляторы (опционально).
В качестве примера такого bat-файла приложен файл gcc.bat. Данный bat-файл использует для компиляции компилятор, распаковынный в директорию .\checker\gcc-4.4.3\
Описание параметров, передаваемые bat-файлу:
- %1 – Полный путь до файла с исходным кодом
- %2 – Путь до директории, куда должен быть помещен откомпилированный файл (task.exe; для java – Task.class?)
- %3 – Базовая директория для тестирующего клиента (.\checker\)
- %4 – Базовая директория для компиляторов (.\compiler\)
- %5 – Полное имя файла программы winkill (опционально)
- %6 – Полное имя файла программы noacm (опционально)
В файле checker\tester2.cfg в значение параметра supported прописать список идентификаторов поддерживаемых клиентом компиляторов (см. далее).
Для того, чтобы иметь возможность использовать компилятор на сервере системы тестирования, необходимо добавить запись об этом компиляторе на странице «Лог» -> "
Языки / Компиляторы?", причем идентификатор компилятора («Id») должен совпадать с указанным значением в списке supported файла checker\tester2.cfg.
Для того, чтобы иметь возможность использовать компилятор в туре олимпиады необходимо указать его в списке доступных компиляторов на странице «Настройка».
Конфигурационный файл тестирующего клиента
Описание основных параметров файла checker\tester2.cfg:
fbauth – строка использующаяся для авторизации тестирующего клиента. Должна совпадать со значением парамнтра
authstr в файле /etc/nsuts/nsuts_new_get.cfg на сервере.
fburl – url скрипта http://<SERVER>/<PATH-TO>/nsuts_new_get2.cgi. В версии 1.2.7 по-умолчанию будет иметь вид http://<SERVER>/nsuts/nsuts_new_get2.cgi, где <SERVER> – адрес сервера.
[database] – группа параметров, указывающая настройки подключения к базе данным. Настройки должны коррелировать с настройками, указанными на сервере в файле /etc/nsuts/nsuts_new_db.cfg
sleep – интервал между подключениями к базе данных при холостом цикле в секундах.
supported – список идентификаторов поддерживаемых клиентом компиляторов. Значения должны быть разделены запятой.
include_tasks – список идентификаторов задач, тестируемых этим клиентом. Используется для проверки задач, требующих специальной настройки тестирующего клиента.
Если параметр не указан, тестируются все задачи.
exclude_tasks – список идентификаторов задач, НЕ тестируемых этим клиентом. Если параметр не указан, задачи не исключаются из тестирования.
Безопасность
Следует обратить особое внимание на настройки подлючения к БД, и параметр fbauth хранящиеся в файле checker\tester2.cfg тестирующего клиента. Параметр fbauth используется для авторизации тестирующего клиента сервером: значение данного параметра должно совпадать со значением authstr в файле /etc/nsuts/nsuts_new_get.cfg
Ошибки
- Установщик nsuts-client может некорректно выполнять создание/удаление пользователя на некоторых версиях ОС Windows
- Базовая директория nsuts-client не должна содержать пробелов (в пути).