【发布时间】:2017-07-07 08:25:41
【问题描述】:
我很难找出节点设置中的问题(centos+gnome+swarm 作为服务),因为它确实连接,正确运行 gui 测试但返回“损坏”(全白或“出现问题)截图。
在我们的 CI 环境中,我们使用 Eclipse 工具 RCPTT 构建和测试 GUI 应用程序(RED - 机器人编辑器),该工具可以单击 GUI 元素来验证功能。
测试在 Centos7 节点上使用 metacity+gnome+vncserver 执行,当 GUI 出现问题时(未找到 GUI 元素,验证与测试标准不一致),报告与屏幕截图一起创建,因此测试人员能够看看测试的应用发生了什么变化。
当手动配置节点(从 Jenkins 节点配置页面)或用户在节点上执行 swarm 脚本(通过 ssh)时,截图很好。
当 swarm as a service 执行时(节点已连接,systemctl 状态为绿色,由同一用户手动运行),除了截图关闭(屏幕分辨率正常,全屏为白色或出现错误“哦,不!出了点问题”。
我在作业控制台中的 RCPTT、xvnc 的日志中没有看到任何错误。 屏幕截图损坏的根本原因是什么?
环境设置: 服务定义
[Unit]
Description=Swarm client to create Jenkins slave
After=network.target
After=display-manager.service
[Service]
ExecStart=<path>/swarm_client.sh start
ExecStop=<path>/swarm_client.sh stop
Type=forking
PIDFile=<path>/slave.pid
User=root
Group=root
[Install]
WantedBy=graphical.target
swarm_client.sh
function startclient {
PUBIP=`public ip string`
java \
-jar ${SWARM_HOME}/swarm-client-3.3.jar \
-executors 1 \
-deleteExistingClients \
-disableClientsUniqueId \
-fsroot ${CLIENT_HOME} \
-labels "linux" \
-master <jenkins> \
-name node-Swarm-${PUBIP} 2>&1 > ${CLIENT_HOME}/slave.log &
PID=$!
RETCODE=$?
echo $PID > ${CLIENT_HOME}/slave.pid
exit $RETCODE
}
function stopclient {
if [ -f ${CLIENT_HOME}/slave.pid ];then
PID=`head -n1 ${CLIENT_HOME}/slave.pid`
kill $PID
rm -f ${CLIENT_HOME}/slave.pid
fi
}
SWARM_HOME=<path>/jenkins/swarm
CLIENT_HOME=<path>/jenkins
case "$1" in
start)
startclient
;;
stop)
stopclient
;;
*)
echo "Usage: systemctl {start|stop} swarm_client.service" || true
exit 1
esac
xvnc 日志:
Fri Jul 7 11:05:40 2017
vncext: VNC extension running!
vncext: Listening for VNC connections on all interface(s), port 5942
vncext: created VNC server for screen 0
gnome-session-is-accelerated: llvmpipe detected.
【问题讨论】: