Я недавно установил Hudson как сервер непрерывной интеграции для моего проекта на работе. Я предпочел установить Hudson а не Cruise Control или Continuum по двум причинам: Hudson очень рекомендовал мне мой бывший сотрудник (спасибо Майк!), и, когда я выбирал между ними, сайт Hudson был значительно понятнее, а его навигация была значительно проще. Я не буду тут писать об установке Hudson, потому, что это очень просто и делается буквально за минуту, а также, в самом интерфейсе есть масса подсказок для установки. В этой серии постов я собираюсь рассказать, как настроить Hudson на проведение тестирования с Selenium на headless Linux server. Также хочу заметить что буду расказывать о Linux только на высоком уровне, так-как, в то время, когда я решился на эту авантюру, знания и опыт с Linux у меня были довольно базовыми, и мне пришлось самому сводить всю информацию, полученную из разных источников. Но, это все же не для полных новичков в Linux. Вам необходимо знать, как минимум, как установить пакеты и навигацию файловой системы с командной строки, перед тем как читать это.
Примечание для непосвященных: Selenium – свободное программное обеспечение для тестирования веб- приложений на уровне UI level. В нем JavaScript используется для взаимодействия с веб-страницами, таким образом, есть возможность прописать серию действий пользователя и гарантировать, что приложение в браузере функционирует так, как это и ожидалось. Но, эта серия постов не расскажет ничего непосредственно об установке Selenium, точно также, как она не рассказывает и об установке Hudson.
Итак, давайте перейдем к Части один. Предположим, что в вашем пакете тестирования уже есть несколько тестов с Selenium и вы хотите, чтобы они работали с надстройки Hudson на вашем headless server. Headless означает, что высока возможность того, что у вас нет работающего X server , а вы не можете использовать Firefox или выбранный вами браузер без X server, проще говоря, это означает, что вы не можете использовать ваше веб-приложение. Как насчет того, чтобы вместо установки полнофункционального X server только для проведения нескольких UI тестов, использовать виртуальный дисплей? С этим вам поможет отличный инструмент, который называется Xvfb. Xvfb запускает базовый виртуальный дисплей в памяти и, таким образом приложения, которым необходимы функциональные возможности графических средств, могут работать на машинах без X server.
Шаг один необходим для того, чтобы убедиться, что приложение Xvfb установлено. Примите во внимание, что это означает, что у вас также должен быть установлен X server. Да, Xvfb создает легкий виртуальный дисплей, но он все же использует для этого X server. Если Xvfb установлен, у вас должен где-то появиться исполняемый двоичный код с названием Xvfb: возможно в /usr/bin. Думаю, он будет именно там. Далее необходимо его запустить:
{syntaxhighlighter brush: bash;fontsize: 100; first-line: 1; }/usr/bin/Xvfb :5 -ac -screen 0 1024x768x8{/syntaxhighlighter}
Как это разделяется:
{syntaxhighlighter brush: bash;fontsize: 100; first-line: 1; }/usr/bin/Xvfb{/syntaxhighlighter}
Ну вот и код, который запускает Xvfb. Есть.
-
:5
Говорит Xvfb использовать дисплей 5. X серверы могут иметь несколько "дисплеев " с несколькими "экранами" на один дисплей. Как правило, дисплей по умолчанию это 0. Я выбрал использование 5, потому, что иногда реальный X server запускается на оговоренной машине (для VNC соединений ), и мне не хотелось потом разбираться с тем, что может случиться, если будет коллизия.
-
-ac
Отключает контроль доступа X server, давая возможность доступа любому хосту. Вот что говорит Linux, "Вы можете использовать этот сервер с любого хоста, локального или удаленного". Относительно страницы справочника man Xserver , "Используйте с большой осторожностью. Эта функция существует в первую очередь для работы пакета программ для удаленного тестирования." Мы и собираемся тестировать, так что все нормально.
-
-screen 0 1024x768x8
Создает экран номер 0 на дисплее 5 с разрешением 1024x768 и 8-битной разрядностью цветов. Очевидно, эти показатели могут быть такими, какие вы хотите.
Теперь Xvfb должно работать и незаметно показывать необходимое вам. Значения, которые вы установили для "дисплея" и "номер экрана" важны, и объединяются в форме ":." Для того, чтобы точно указать Linux какую комбинацию дисплей/экран использовать для показа. В примере, приведенном выше вы использовали бы ":5.0" для того, чтобы указать Linux использовать единственный сконфигурированный экран. Мне также следует добавить, что, по всей видимости, не важно, какой пользователь запускает Xvfb, так что, вы можете создать скрипт для запуска в /etc/init.d и дать ему возможность работать с правами администратора, если вам этого захочется. Можете протестировать Xvfb, запустив графическое приложение и сделав скриншот. И об этом я напишу в Части 2--xwd and xwud.