如何为我在 Java 上编写的硒测试增加 travis-ci 的超时时间?
Posted
技术标签:
【中文标题】如何为我在 Java 上编写的硒测试增加 travis-ci 的超时时间?【英文标题】:How to increase timeout in travis-ci for my selenium tests written on java? 【发布时间】:2015-07-02 10:16:45 【问题描述】:我在 java 上编写了一个测试(在本地机器上通过,测试运行大约 30 分钟),我需要增加 travis-ci 中的超时,我可以通过更改 .tavis.yml 来更改超时吗? 这是我的 .tavis.yml 文件:
language: java
cache: apt
before_install:
- sudo apt-get update -qq
- sudo apt-get install -qq default-jdk maven
env:
- JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64
script:
- travis_wait mvn package -Dtestng=test.xml
我问是因为我在 travis 上有一个错误:
Timeout (20 minutes) reached. Terminating "mvn package -Dtestng=test.xml"
那么,我可以选择更改超时时间吗?可能我需要写一些东西到 .tavis.yml 吗?谢谢你。
【问题讨论】:
【参考方案1】:您可以通过修改脚本命令来增加超时。例如,将超时时间增加到半小时:
- travis_wait 30 mvn package -Dtestng=test.xml
请参阅 Mor 的回答,了解不会“挂起”构建输出 30 分钟的绝佳替代方案。
【讨论】:
【参考方案2】:您的测试似乎没有产生任何输出,这通常会导致 10 分钟后超时。
但是,由于您在构建命令前加上 travis_wait
,因此超时会增加到 20 分钟。
我们构建系统中的 shell 环境提供了一个函数来帮助解决这个问题,至少持续 10 分钟以上。
travis_wait 在 20 分钟内每分钟向构建日志写入一个短行,从而延长了您的命令必须完成的时间。
仔细检查您的测试是否挂起。
【讨论】:
输出是什么意思?你的意思是 System.out.println()? maven 或您的代码打印到标准输出的任何内容。 显然travis_wait
会缓冲所有输出,直到命令完成执行,这不太理想,因为这意味着如果您的构建需要很长时间,那么看到错误也需要很长时间出现。【参考方案3】:
我找到了适合我的以下解决方案taken from a GitHub Issue:
script:
- .travis/test.sh
test.sh
看起来像这样:
# send the long living command to background
./long-running-operation.sh &
# Constants
RED='\033[0;31m'
minutes=0
limit=3
while kill -0 $! >/dev/null 2>&1; do
echo -n -e " \b" # never leave evidences!
if [ $minutes == $limit ]; then
echo -e "\n"
echo -e "$REDTest has reached a $minutes minutes timeout limit"
exit 1
fi
minutes=$((minutes+1))
sleep 60
done
exit 0
【讨论】:
以上是关于如何为我在 Java 上编写的硒测试增加 travis-ci 的超时时间?的主要内容,如果未能解决你的问题,请参考以下文章