Система:Наилучшая практика для запуска процесса в фоновом режиме и ждать, пока он не будет готов
- 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...)
Если процесс запуска сервера запускает отдельный процесс и завершается, вы можете использовать 'wait'. В противном случае вы можете использовать подход, основанный на чтении вывода (например, дождаться, пока не будет напечатано определенное сообщение). –
@TomFenech Да, второй подход был тем, что я изначально думал. У вас есть пример для этого? Я думаю, это может быть приемлемым ответом. – eav
Для этого нам нужно будет увидеть образец результата процесса запуска, указав, какая часть должна указывать, что сервер был успешно запущен. –