2015-06-08 3 views
3

Система:Наилучшая практика для запуска процесса в фоновом режиме и ждать, пока он не будет готов

  • Backend приложений (RESTful HTTP API), написанных на Java (Play Framework 2.3.x)
  • Frontend приложений (GUI, потребляя API), написанный на Javascript (angularjs с ворчанием для строительства)
  • Travis CI используется для Continous интеграция

проблемы:

Я хочу запустить/запустить бэкэнд-приложение и после его успешного запуска, я хочу протестировать его с помощью транспортира (через задачи grunt).

Но запуска приложения бэкэнда не будет продолжаться, потому что это не процесс, концовка (сервер работает -> не заканчивается)

Ввод запуска сервера в качестве процесса бэкэнда путем добавления & может решить проблема, но тогда нет никакой гарантии, что сервер начал работать в то же время.

Некоторые советы в интернете говорят:

Добавить сон (х) и запустить тест после этого

Но сколько х?

Есть ли другой способ сделать это, вместо того, чтобы угадывать (или измерять) время запуска сервера и спать после запуска сервера в качестве фонового процесса?

Edit: Выход запуска сервера (например, сравнить вывод фоновой задачи в периодическом смысле) заключается в следующем:

$ activator run 
[info] Loading project definition from ... 
[info] Set current project to ... (in build file:...) 

--- (Running the application, auto-reloading is enabled) --- 

[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000 

(Server started, use Ctrl+D to stop and go back to the console...) 
+0

Если процесс запуска сервера запускает отдельный процесс и завершается, вы можете использовать 'wait'. В противном случае вы можете использовать подход, основанный на чтении вывода (например, дождаться, пока не будет напечатано определенное сообщение). –

+0

@TomFenech Да, второй подход был тем, что я изначально думал. У вас есть пример для этого? Я думаю, это может быть приемлемым ответом. – eav

+0

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

ответ

0

Вы можете сделать лучше, чем гадать, или оценить, как долго спать перед тестированием с помощью простого внешнего теста, чтобы узнать, поднят ли сервер, например,

while ! curl -s 0:0:0:0:0:0:0:0:9000 >/dev/null; do 
    sleep 1 
done 

# now start real tests 
... 
Смежные вопросы