2013-02-27 5 views
1

Есть несколько тестов, которые запускаются на сервере приложений (JBoss); мы хотим интегрировать эти тесты в Jenkins.Запуск процесса в зависимости от фонового процесса

В Дженкинс есть эти шаги (все шаги Ant шагов):

  • ... (другие шаги)
  • запуска сервера в фоновом режиме
  • выполнения тестов
  • остановка сервера
  • ... (другие этапы)

Необходимо запустить сервер в ba ckground, чтобы выполнять следующие задачи. Я написал следующий сценарий, чтобы имитировать это:

export LAUNCH_JBOSS_IN_BACKGROUND=1 
./run.sh & 
sleep 400 
cd /testTriggerLocation 
ant run-tests 
kill `cat $jBossHome/4.0.5/bin/jboss.pid` 

run.sh запускает сервер и после его запуска он хранит идентификатор процесса виртуальной машины Java в jboss.pid.

В обычном режиме (процесс переднего плана) JBoss занимает около 100 с, но здесь он принимает значение, зависящее от аргумента сна. Если я положил 200 с, то это займет от ~ 190 до 210 с, если оно составляет 300 с, оно занимает 290 - 310 с; проблема в том, что если тесты запускаются до запуска сервера, они явно терпят неудачу. Есть ли способ синхронизировать это? Или, может быть, еще один способ сделать это?

+0

Зачем вам нужно раскошелиться run.sh? –

+0

Происходит ли run.sh или что-то из этого запуска? Если так, у вас может быть что-то здесь, которое следит за чем-то в этом журнале .. скажите «началось» или что-то там, где он печатает, заявив, что он готов к работе ... затем пусть сценарий продолжается .. а не просто спать. –

+0

@EarlGray Потому что, если бы это был процесс переднего плана, он продлился бы бесконечно в Дженкинсе, а затем тесты не были бы запущены. – m3th0dman

ответ

0

Возможно, вы захотите изучить простой диспетчер процессов, такой как supervisord или God, который может демонтировать процессы для вас во время выполнения ваших тестов.

В моем случае, с помощью Бога, я бы запустить:

god -c my-project.god 
ruby test-runner.rb 
god terminate 
Смежные вопросы