複雑なWebベースのアプリケーションの受け入れテストにfitnesseを使用しています。フルスイートには数時間かかるので、複数のプロセスを使用しています。次のようにセットアップは次のとおりです。マルチプロセスフィットネステスト環境のJava OOM
- MavenのフォークますFitnesseサーバプロセス
- MavenはHTTPがバック2に戻り、各呼び出しのためのフォークテストランナー
- HTTP呼び出しが戻るサーバー
- ますFitnesseサーバーをFitNesseのために呼び出しを行います
3でjvmを起動するコマンドラインは、http呼び出しパラメータに基づいてfitnesse jarファイル内に構築されています。つまり、サポートされているものだけを任意のjvm引数で渡すことはできません。
今、私たちが直面している問題は、プロセスが3つのハングアップを開始することがあることです。私たちが複数の時間にわたってぶら下がっているのを見たので、タイムアウトのようには見えません。
これらのjvmプロセスはjmx経由で何も公開しないため、jconsoleなどを使用してこれらのjvmプロセスに接続することはできません。各プロセスが消費するメモリ量(1-1.5G)に基づいて、ランナープロセスのどこかでOOMが発生し、正常に終了しないことが強く疑われます。また、サーバープロセスで "kill -3"を試すと、起動されたランナープロセスからstdoutと思われるものが生成されますが、わかりません。
私は現在、コマンドラインを制御するクラスのコピーを作成して、すべてのプロセスがランダム化されたjmxポートとデバッグポートで開始されるようにしているため、接続して調査することができます。
だから、問題は、それを行うより良い方法はありますか?私は何かここに明白な行方不明ですか?
テストランナーを生み出すプロセスが1つ必要ですか?私は並列化した同様のテストスイートを持っていますが、私のサブスイートはそれぞれ完全に独立しています。それはあなたのために働くことができますか? –
@FriedHoeben、原則として可能です。しかし、それは私が全部を書き直さなければならないことを意味するでしょう。私たちのテストインフラストラクチャのこの部分は継承されており、最初から書き直すのに多くの時間を費やしたくありません。 – ilj