5

PyQt4 を使用する Python パッケージの Jenkins でテストを実行しようとしていますが、テストによってウィンドウが作成されます。Jenkins でテストを実行しているため、グラフィック出力をリダイレクトする必要があるため、xvfb-run を使用しています。ほとんどの場合、これは機能しますが、ごく一部の時間で、テストはランダムに次のように失敗します。

/usr/bin/xvfb-run: line 171: kill: (27375) - No such process

テストを再実行すると、ほとんどの場合問題なく動作します (つまり、これは 1 回限りの問題です)。

以前にこの問題に遭遇した人はいますか? テストの安定性を向上させるための回避策のアイデアはありますか?

4

2 に答える 2

3

Xvfb プロセスを見つけて強制終了します。

ps auwx | grep "Xvfb" | grep -v grep
于 2015-03-26T05:42:20.137 に答える
1

xvfb-runのコピーが私のものと同じである場合、私もこれを見たことを確認できます。

私の場合、ターゲットプロセスが原因でXvfbがクラッシュしました。これは、実行されなくなったXvfbを破棄すると、ラッパースクリプト自体が行171で失敗することを意味します。これを回避するためkill $XVFBPIDに、set +e/set -eブロックでラップしました。また--error-file=、ターゲットプロセスの実行中にxvfb-runがXvfbからの非同期標準エラー出力を保存するように指定すると、根本的な原因を修正できるので役立ちます。

回避策:

# Kill Xvfb now that the command has exited.
# Ignore failure of kill since we want to be forgiving of Xvfb itself crashing
set +e
kill $XVFBPID
set -e
于 2012-10-30T16:30:18.643 に答える