2016-04-19 12 views
1

Java8でmaven + testngを使用してlinuxコマンドラインから一連のパフォーマンステストを実行しています。破損したJVMで複数のテストを自動的に連鎖させる

これらのテストのほとんどは、JVMを破壊する(通常はメモリが足りなくなるまで)まで実行されます。その時点で、手動で新しいJVMから別のテストを設定して実行します。

複数のテストを自動的に連鎖させて連続して実行したいと考えていますが、これまでのテストでJVMが使用できなくなった場合にこれを達成する方法はわかりません。

Java/Maven/Linux /その他のプログラム/フレームワークを介して壊れたJVM(またはそれらの行に沿ったもの)をリセットする方法はありますか?

OracleのJDKまたはOpenJDKのいずれかにアクセスできますが、必要に応じて、サーバー管理者に別のJDKをインストールするように納得させることができます。

+0

あなたのテストはJUnit/Maven Surefireプラグインで実行されていますか?次に、@After(またはケースに応じて@AfterClass)を使用できると仮定します。このメソッドでは、 'System.gc()'を呼び出してガベージコレクションを強制します。おそらくOOMを支援し、_working_状態に戻る必要があります。 – JChrist

+0

@JChrist ['System.gc()'](http://docs.oracle.com/javase/8/docs/api/java/lang/System.html#gc--)は、JVMの単なる提案です。何かがまったく行われていることは保証されていません。 –

答えて

2

maven-surefire-pluginは、フォークされたJVMでテストを実行できるようにします。情報はon the plugin pageですが、あなたのようなものが必要です:各テスト実行のための新しいJVMを作成します

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.19.1</version> 
    <configuration> 
     <forkCount>1</forkCount> 
     <reuseForks>false</reuseForks> 
    </configuration> 
</plugin> 

を。 forkCountを変更する(たとえば、テストが並行して実行されないようにするか、reuseForksを使用してJVMをリサイクルする必要があるかどうかを判断するなど)。

関連する問題