1

有一些测试在应用服务器(JBoss)中运行;我们想将这些测试集成到 Jenkins 中。

在 Jenkins 中有这些步骤(所有步骤都是 Ant 步骤):

  • ...(其他步骤)
  • 在后台启动服务器
  • 运行测试
  • 停止服务器
  • ...(其他步骤)

服务器需要在后台启动才能让以下任务完成它们的工作。我编写了以下脚本来模仿这一点:

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 启动服务器并在启动后将 JVM 进程 ID 存储在 jboss.pid 中。

在正常方式(前台进程)中,JBoss 需要大约 100 秒才能启动,但在这里它需要一个取决于 sleep 参数的值。如果我放 200 秒,则需要 ~ 190 - 210 秒,如果是 300 秒,则需要 290 - 310 秒;问题是,如果在服务器启动之前触发测试,它们显然会失败。有没有办法同步这个?或者也许是另一种方式来做到这一点?

4

1 回答 1

0

您可能想考虑使用一个简单的进程管理器,例如supervisordGod,它可以在您运行测试时为您守护进程。

就我而言,使用上帝我会运行:

 god -c my-project.god
 ruby test-runner.rb
 god terminate
于 2013-02-27T17:03:29.673 回答