組み込みInfinispanデータグリッドクラスターに基づくアプリケーションを開発しています。アプリケーションのターゲット環境では、データグリッドの各メンバーが独立したJVMで実行されjgroup
、クラスターの使用が形成されます(これは実際にはInfinispanによって行われます)。
maven-surefire-plugin
この構成で作業していた(またはmaven-failsafe-plugin
)このデータグリッドに対して自動テストを実行するには、次のようにします。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkMode>perthread</forkMode>
<threadCount>4</threadCount>
</configuration>
</plugin>
この構成では、テストケースクラスごとにフォークを作成する必要があるため(4つの並列プロセスを使用)、4つのテストクラスを作成します。各テストクラスは、1つのクラスターメンバーをシミュレートします。各テストケースクラス内では、次のようなTestNGのおかげで、テストメソッドを並行して実行する複数のスレッドがあります。
@Test(threadPoolSize = 3, invocationCount = 2, timeOut = 10000, testName="Test 1")
public void testSomething() throws Throwable { ... }
問題は、maven-surefire-plugin
forkMode="perthread"
とthreadCount=4
にバグがあることです。クラスごとに1つのフォークを作成するのではなく、同じクラスのフォークを数回作成します。したがって、私のシナリオでは、テストケースの1つを取り、それを4回並行して実行します!!!
注:ここでjiraのバグを確認してください。投票してください!!!!
誰かがこれの回避策を知っていますか?私たちはを使っていくつかの努力をしてant
いますが、非常に厄介になっています。