citrus icon indicating copy to clipboard operation
citrus copied to clipboard

Async container does not show the original error in case of test failure

Open svettwer opened this issue 7 years ago • 1 comments

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

svettwer avatar Nov 29 '18 09:11 svettwer

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.

svettwer avatar Dec 05 '18 11:12 svettwer