Async container does not show the original error in case of test failure
User story As a citrus test programmer, I want the async container to forward the root cause of a test failure, so that I'm able to investigate the issue straight forward without removing the async container from the test for debugging purposes.
Additional context We had a test case where a jms message was not received correctly because of a missing message selector. The async container failed with the following stack trace without showing the root cause.
com.consol.citrus.exceptions.TestCaseFailedException: Failed to wait for test container to finish properly
at com.consol.citrus.TestCase.finish(TestCase.java:280)
at com.consol.citrus.dsl.runner.DefaultTestRunner.stop(DefaultTestRunner.java:152)
at com.consol.citrus.dsl.testng.TestNGCitrusTest.invokeTestMethod(TestNGCitrusTest.java:133)
at com.consol.citrus.dsl.testng.TestNGCitrusTest.run(TestNGCitrusTest.java:110)
at com.consol.citrus.dsl.testng.TestNGCitrusTest.run(TestNGCitrusTest.java:56)
at org.testng.internal.MethodInvocationHelper.invokeHookable(MethodInvocationHelper.java:242)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:567)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:707)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:979)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1187)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1116)
at org.testng.TestNG.runSuites(TestNG.java:1028)
at org.testng.TestNG.run(TestNG.java:996)
at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:73)
at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)
Caused by: com.consol.citrus.exceptions.CitrusRuntimeException: Failed to wait for test container to finish properly
at com.consol.citrus.util.TestUtils.waitForCompletion(TestUtils.java:101)
at com.consol.citrus.util.TestUtils.waitForCompletion(TestUtils.java:74)
at com.consol.citrus.TestCase.finish(TestCase.java:248)
... 24 more
Caused by: java.util.concurrent.TimeoutException
at java.util.concurrent.CompletableFuture.timedGet(CompletableFuture.java:1771)
at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1915)
at com.consol.citrus.util.TestUtils.waitForCompletion(TestUtils.java:99)
... 26 more
BR, Sven
As evaluated during #550, the timeout for the async containers is hard coded. If the hard coded timeout is lower than the timeout of the endpoint, this message occurs.
I'll have to look into this whether it's fixable is a reasonable amount of time.