在后台运行进程并等待其准备就绪的最佳实践

时间:2015-06-08 11:34:25

标签: shell unix travis-ci

系统:

  • 用Java编写的后端应用程序(RESTful HTTP API)(Play Framework 2.3.x)
  • 使用Javascript编写的前端应用程序(GUI,使用API​​)(带有用于构建的grunt的angularjs)
  • Travis CI用于连续集成

问题:

我想启动/运行后端应用程序,在成功启动之后,我想用量角器(通过grunt任务)进行测试。

启动后端应用程序将无法继续,因为它不是结束进程(服务器正在运行 - >未结束)

通过添加&将服务器作为后端进程启动可以解决问题,但是不能保证服务器同时启动。

互联网上的一些建议说:

  

添加sleep(x)并在此之后运行测试

但x多少钱?

有没有其他方法可以做到这一点,而不是猜测(或测量)启动服务器的时间并在将服务器启动作为后台进程运行后进入休眠状态?

编辑: 启动服务器的输出(例如以周期性方式比较后台任务的输出)是:

$ 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...)

1 个答案:

答案 0 :(得分:1)

在通过简单的外部测试进行测试之前,您可以做出更好的猜测或估计睡眠时间,以查看服务器是否已启动,例如,

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

# now start real tests
...