Coder Social home page Coder Social logo

citrus-remote's People

Contributors

christophd avatar

Watchers

 avatar  avatar  avatar

Forkers

turing85

citrus-remote's Issues

HTTP server cannot be started due to Context intialization failure

Citrus Version: at least 3.2.0 & 3.2.1


Expected behavior:

When a fat jar is built, started and then triggered, the http server should be started.


Actual behavior:

Tests are skipped, and an error is shown:

2022-07-07 15:27:40.436 ERROR --- [pool-2-thread-1] c.c.c.h.s.CitrusDispatcherServlet        : Context initialization failed
2022-07-07T15:27:40.439671823Z org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/context]
2022-07-07T15:27:40.439680911Z Offending resource: class path resource [com/consol/citrus/http/citrus-servlet-context.xml]
2022-07-07T15:27:40.439688175Z 
2022-07-07T15:27:40.439694296Z 	at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:72)
2022-07-07T15:27:40.439700278Z 	at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:119)
2022-07-07T15:27:40.439707492Z 	at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:111)
2022-07-07T15:27:40.439715537Z 	at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:281)
2022-07-07T15:27:40.439737780Z 	at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1388)
2022-07-07T15:27:40.439744352Z 	at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1371)
2022-07-07T15:27:40.439750284Z 	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:179)
2022-07-07T15:27:40.439756486Z 	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:149)
2022-07-07T15:27:40.439762798Z 	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:96)
2022-07-07T15:27:40.439770693Z 	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:511)
2022-07-07T15:27:40.439782776Z 	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391)
2022-07-07T15:27:40.439790892Z 	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:338)
2022-07-07T15:27:40.439797685Z 	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
2022-07-07T15:27:40.439806492Z 	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:196)
2022-07-07T15:27:40.439812403Z 	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:232)
2022-07-07T15:27:40.439818375Z 	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:203)
2022-07-07T15:27:40.439824767Z 	at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
2022-07-07T15:27:40.449548764Z 	at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
2022-07-07T15:27:40.449664286Z 	at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
2022-07-07T15:27:40.449763165Z 	at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:671)
2022-07-07T15:27:40.449857216Z 	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553)
2022-07-07T15:27:40.449969892Z 	at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:702)
2022-07-07T15:27:40.450081216Z 	at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:668)
2022-07-07T15:27:40.450191408Z 	at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:716)
2022-07-07T15:27:40.450333661Z 	at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:591)
2022-07-07T15:27:40.451071457Z 	at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:530)
2022-07-07T15:27:40.451332479Z 	at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:170)
2022-07-07T15:27:40.451453591Z 	at javax.servlet.GenericServlet.init(GenericServlet.java:180)
2022-07-07T15:27:40.451555056Z 	at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:632)
2022-07-07T15:27:40.451652453Z 	at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:415)
2022-07-07T15:27:40.451752255Z 	at org.eclipse.jetty.servlet.ServletHandler.lambda$initialize$0(ServletHandler.java:731)
2022-07-07T15:27:40.451877706Z 	at java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357)
2022-07-07T15:27:40.451976335Z 	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510)
2022-07-07T15:27:40.452075515Z 	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2022-07-07T15:27:40.452173263Z 	at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:310)
2022-07-07T15:27:40.452276030Z 	at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735)
2022-07-07T15:27:40.452380010Z 	at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
2022-07-07T15:27:40.452480423Z 	at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:755)
2022-07-07T15:27:40.452576638Z 	at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:379)
2022-07-07T15:27:40.452674325Z 	at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:910)
2022-07-07T15:27:40.452771181Z 	at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:288)
2022-07-07T15:27:40.452895460Z 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
2022-07-07T15:27:40.452990843Z 	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
2022-07-07T15:27:40.453087679Z 	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
2022-07-07T15:27:40.453190536Z 	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
2022-07-07T15:27:40.453323261Z 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
2022-07-07T15:27:40.453424365Z 	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
2022-07-07T15:27:40.453520470Z 	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
2022-07-07T15:27:40.453617596Z 	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
2022-07-07T15:27:40.453712398Z 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
2022-07-07T15:27:40.453823191Z 	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
2022-07-07T15:27:40.453943302Z 	at org.eclipse.jetty.server.Server.start(Server.java:423)
2022-07-07T15:27:40.454040959Z 	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
2022-07-07T15:27:40.454137264Z 	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
2022-07-07T15:27:40.454237486Z 	at org.eclipse.jetty.server.Server.doStart(Server.java:387)
2022-07-07T15:27:40.454343139Z 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
2022-07-07T15:27:40.454444524Z 	at com.consol.citrus.http.server.HttpServer.startup(HttpServer.java:210)
2022-07-07T15:27:40.454543504Z 	at com.consol.citrus.server.AbstractServer.start(AbstractServer.java:93)
2022-07-07T15:27:40.454638977Z 	at com.consol.citrus.server.AbstractServer.initialize(AbstractServer.java:165)
2022-07-07T15:27:40.454734871Z 	at com.consol.citrus.http.server.HttpServer.initialize(HttpServer.java:219)
2022-07-07T15:27:40.454832379Z 	at com.consol.citrus.config.ComponentLifecycleProcessor.postProcessBeforeInitialization(ComponentLifecycleProcessor.java:59)
2022-07-07T15:27:40.454956667Z 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:440)
2022-07-07T15:27:40.455053373Z 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796)
2022-07-07T15:27:40.455148987Z 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620)
2022-07-07T15:27:40.455246564Z 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
2022-07-07T15:27:40.455355513Z 	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
2022-07-07T15:27:40.455472578Z 	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
2022-07-07T15:27:40.455598119Z 	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
2022-07-07T15:27:40.455707399Z 	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
2022-07-07T15:27:40.455809144Z 	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:953)
2022-07-07T15:27:40.455949103Z 	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
2022-07-07T15:27:40.456051309Z 	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
2022-07-07T15:27:40.456171730Z 	at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:93)
2022-07-07T15:27:40.456274518Z 	at com.consol.citrus.CitrusSpringContext.create(CitrusSpringContext.java:67)
2022-07-07T15:27:40.456375241Z 	at com.consol.citrus.CitrusSpringContextProvider.create(CitrusSpringContextProvider.java:38)
2022-07-07T15:27:40.456484100Z 	at com.consol.citrus.CitrusInstanceManager.newInstance(CitrusInstanceManager.java:45)
2022-07-07T15:27:40.456587749Z 	at com.consol.citrus.Citrus.newInstance(Citrus.java:65)
2022-07-07T15:27:40.456689124Z 	at com.consol.citrus.testng.spring.TestNGCitrusSpringSupport.before(TestNGCitrusSpringSupport.java:176)
2022-07-07T15:27:40.456743695Z 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2022-07-07T15:27:40.456760127Z 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
2022-07-07T15:27:40.456766129Z 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2022-07-07T15:27:40.456770146Z 	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
2022-07-07T15:27:40.456774134Z 	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:132)
2022-07-07T15:27:40.456778262Z 	at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:61)
2022-07-07T15:27:40.456809973Z 	at org.testng.internal.ConfigInvoker.invokeConfigurationMethod(ConfigInvoker.java:366)
2022-07-07T15:27:40.456817016Z 	at org.testng.internal.ConfigInvoker.invokeConfigurations(ConfigInvoker.java:320)
2022-07-07T15:27:40.456821385Z 	at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:176)
2022-07-07T15:27:40.456825072Z 	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
2022-07-07T15:27:40.456828639Z 	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
2022-07-07T15:27:40.456832306Z 	at org.testng.TestRunner.privateRun(TestRunner.java:764)
2022-07-07T15:27:40.456835943Z 	at org.testng.TestRunner.run(TestRunner.java:585)
2022-07-07T15:27:40.456839730Z 	at org.testng.SuiteRunner.runTest(SuiteRunner.java:384)
2022-07-07T15:27:40.456843397Z 	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:378)
2022-07-07T15:27:40.456872994Z 	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:337)
2022-07-07T15:27:40.456877813Z 	at org.testng.SuiteRunner.run(SuiteRunner.java:286)
2022-07-07T15:27:40.456881390Z 	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
2022-07-07T15:27:40.456886259Z 	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
2022-07-07T15:27:40.456889826Z 	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1218)
2022-07-07T15:27:40.456893373Z 	at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
2022-07-07T15:27:40.456913071Z 	at org.testng.TestNG.runSuites(TestNG.java:1069)
2022-07-07T15:27:40.456920255Z 	at org.testng.TestNG.run(TestNG.java:1037)
2022-07-07T15:27:40.456924553Z 	at com.consol.citrus.testng.TestNGEngine.run(TestNGEngine.java:151)
2022-07-07T15:27:40.456928320Z 	at com.consol.citrus.main.CitrusApp.run(CitrusApp.java:125)
2022-07-07T15:27:40.456931887Z 	at com.consol.citrus.remote.controller.RunController.run(RunController.java:107)
2022-07-07T15:27:40.456935303Z 	at com.consol.citrus.remote.controller.RunController.runPackages(RunController.java:75)
2022-07-07T15:27:40.456938930Z 	at com.consol.citrus.remote.controller.RunController.runAll(RunController.java:60)
2022-07-07T15:27:40.456942587Z 	at com.consol.citrus.remote.CitrusRemoteApplication.runTests(CitrusRemoteApplication.java:262)
2022-07-07T15:27:40.456946535Z 	at com.consol.citrus.remote.CitrusRemoteApplication$1.run(CitrusRemoteApplication.java:215)
2022-07-07T15:27:40.456950182Z 	at com.consol.citrus.remote.job.RunJob.call(RunJob.java:43)
2022-07-07T15:27:40.456953729Z 	at com.consol.citrus.remote.job.RunJob.call(RunJob.java:29)
2022-07-07T15:27:40.456957416Z 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
2022-07-07T15:27:40.456960973Z 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
2022-07-07T15:27:40.456964650Z 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
2022-07-07T15:27:40.456968347Z 	at java.base/java.lang.Thread.run(Thread.java:833)
2022-07-07T15:27:40.456971984Z 2022-07-07 15:27:40.440  WARN --- [pool-2-thread-1] o.e.j.s.h.C.ROOT                         : unavailable
2022-07-07T15:27:40.456976232Z org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/context]
2022-07-07T15:27:40.456980119Z Offending resource: class path resource [com/consol/citrus/http/citrus-servlet-context.xml]
2022-07-07T15:27:40.456983807Z 
2022-07-07T15:27:40.456987123Z 	at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:72)
2022-07-07T15:27:40.456990900Z 	at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:119)
2022-07-07T15:27:40.456994527Z 	at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:111)
2022-07-07T15:27:40.456997924Z 	at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:281)
2022-07-07T15:27:40.457001911Z 	at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1388)
2022-07-07T15:27:40.457006450Z 	at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1371)
2022-07-07T15:27:40.457010498Z 	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:179)
2022-07-07T15:27:40.457019495Z 	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:149)
2022-07-07T15:27:40.457023553Z 	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:96)
2022-07-07T15:27:40.457027250Z 	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:511)
2022-07-07T15:27:40.457030767Z 	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391)
2022-07-07T15:27:40.457060804Z 	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:338)
2022-07-07T15:27:40.457069070Z 	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
2022-07-07T15:27:40.457073298Z 	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:196)
2022-07-07T15:27:40.457077246Z 	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:232)
2022-07-07T15:27:40.457081214Z 	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:203)
2022-07-07T15:27:40.457084881Z 	at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
2022-07-07T15:27:40.457088638Z 	at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
2022-07-07T15:27:40.457092395Z 	at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
2022-07-07T15:27:40.457096363Z 	at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:671)
2022-07-07T15:27:40.457100160Z 	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553)
2022-07-07T15:27:40.457106001Z 	at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:702)
2022-07-07T15:27:40.457109979Z 	at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:668)
2022-07-07T15:27:40.457114928Z 	at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:716)
2022-07-07T15:27:40.457118525Z 	at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:591)
2022-07-07T15:27:40.457121862Z 	at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:530)
2022-07-07T15:27:40.457125619Z 	at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:170)
2022-07-07T15:27:40.457134887Z 	at javax.servlet.GenericServlet.init(GenericServlet.java:180)
2022-07-07T15:27:40.457139065Z 	at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:632)
2022-07-07T15:27:40.457142832Z 	at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:415)
2022-07-07T15:27:40.457146449Z 	at org.eclipse.jetty.servlet.ServletHandler.lambda$initialize$0(ServletHandler.java:731)
2022-07-07T15:27:40.457150006Z 	at java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357)
2022-07-07T15:27:40.457153532Z 	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510)
2022-07-07T15:27:40.457157199Z 	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2022-07-07T15:27:40.457160877Z 	at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:310)
2022-07-07T15:27:40.457164774Z 	at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735)
2022-07-07T15:27:40.457168431Z 	at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
2022-07-07T15:27:40.457172138Z 	at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:755)
2022-07-07T15:27:40.457175705Z 	at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:379)
2022-07-07T15:27:40.457179502Z 	at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:910)
2022-07-07T15:27:40.457183169Z 	at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:288)
2022-07-07T15:27:40.457186786Z 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
2022-07-07T15:27:40.457190273Z 	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
2022-07-07T15:27:40.457194772Z 	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
2022-07-07T15:27:40.457198549Z 	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
2022-07-07T15:27:40.457202336Z 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
2022-07-07T15:27:40.457206224Z 	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
2022-07-07T15:27:40.457209911Z 	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
2022-07-07T15:27:40.457213528Z 	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
2022-07-07T15:27:40.457217074Z 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
2022-07-07T15:27:40.457220571Z 	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
2022-07-07T15:27:40.457224068Z 	at org.eclipse.jetty.server.Server.start(Server.java:423)
2022-07-07T15:27:40.457231612Z 	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
2022-07-07T15:27:40.457235500Z 	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
2022-07-07T15:27:40.457239217Z 	at org.eclipse.jetty.server.Server.doStart(Server.java:387)
2022-07-07T15:27:40.457242674Z 	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
2022-07-07T15:27:40.457246250Z 	at com.consol.citrus.http.server.HttpServer.startup(HttpServer.java:210)
2022-07-07T15:27:40.457249807Z 	at com.consol.citrus.server.AbstractServer.start(AbstractServer.java:93)
2022-07-07T15:27:40.457253364Z 	at com.consol.citrus.server.AbstractServer.initialize(AbstractServer.java:165)
2022-07-07T15:27:40.457256871Z 	at com.consol.citrus.http.server.HttpServer.initialize(HttpServer.java:219)
2022-07-07T15:27:40.457260358Z 	at com.consol.citrus.config.ComponentLifecycleProcessor.postProcessBeforeInitialization(ComponentLifecycleProcessor.java:59)
2022-07-07T15:27:40.457264255Z 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:440)
2022-07-07T15:27:40.457268183Z 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796)
2022-07-07T15:27:40.457271749Z 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620)
2022-07-07T15:27:40.457276218Z 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
2022-07-07T15:27:40.457280035Z 	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
2022-07-07T15:27:40.457283712Z 	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
2022-07-07T15:27:40.457287430Z 	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
2022-07-07T15:27:40.457290846Z 	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
2022-07-07T15:27:40.457294623Z 	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:953)
2022-07-07T15:27:40.457298330Z 	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
2022-07-07T15:27:40.457302098Z 	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
2022-07-07T15:27:40.457305745Z 	at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:93)
2022-07-07T15:27:40.457309752Z 	at com.consol.citrus.CitrusSpringContext.create(CitrusSpringContext.java:67)
2022-07-07T15:27:40.457313279Z 	at com.consol.citrus.CitrusSpringContextProvider.create(CitrusSpringContextProvider.java:38)
2022-07-07T15:27:40.457321074Z 	at com.consol.citrus.CitrusInstanceManager.newInstance(CitrusInstanceManager.java:45)
2022-07-07T15:27:40.457325002Z 	at com.consol.citrus.Citrus.newInstance(Citrus.java:65)
2022-07-07T15:27:40.457328679Z 	at com.consol.citrus.testng.spring.TestNGCitrusSpringSupport.before(TestNGCitrusSpringSupport.java:176)
2022-07-07T15:27:40.457332276Z 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2022-07-07T15:27:40.457335822Z 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
2022-07-07T15:27:40.457339399Z 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2022-07-07T15:27:40.457343126Z 	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
2022-07-07T15:27:40.457346443Z 	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:132)
2022-07-07T15:27:40.457350070Z 	at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:61)
2022-07-07T15:27:40.457353787Z 	at org.testng.internal.ConfigInvoker.invokeConfigurationMethod(ConfigInvoker.java:366)
2022-07-07T15:27:40.457358686Z 	at org.testng.internal.ConfigInvoker.invokeConfigurations(ConfigInvoker.java:320)
2022-07-07T15:27:40.457362383Z 	at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:176)
2022-07-07T15:27:40.457365910Z 	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
2022-07-07T15:27:40.457369357Z 	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
2022-07-07T15:27:40.457372854Z 	at org.testng.TestRunner.privateRun(TestRunner.java:764)
2022-07-07T15:27:40.457376480Z 	at org.testng.TestRunner.run(TestRunner.java:585)
2022-07-07T15:27:40.457380047Z 	at org.testng.SuiteRunner.runTest(SuiteRunner.java:384)
2022-07-07T15:27:40.457383634Z 	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:378)
2022-07-07T15:27:40.457387141Z 	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:337)
2022-07-07T15:27:40.457390628Z 	at org.testng.SuiteRunner.run(SuiteRunner.java:286)
2022-07-07T15:27:40.457394134Z 	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
2022-07-07T15:27:40.457397681Z 	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
2022-07-07T15:27:40.457401388Z 	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1218)
2022-07-07T15:27:40.457404865Z 	at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
2022-07-07T15:27:40.457408372Z 	at org.testng.TestNG.runSuites(TestNG.java:1069)
2022-07-07T15:27:40.457411909Z 	at org.testng.TestNG.run(TestNG.java:1037)
2022-07-07T15:27:40.457415475Z 	at com.consol.citrus.testng.TestNGEngine.run(TestNGEngine.java:151)
2022-07-07T15:27:40.457423511Z 	at com.consol.citrus.main.CitrusApp.run(CitrusApp.java:125)
2022-07-07T15:27:40.457427408Z 	at com.consol.citrus.remote.controller.RunController.run(RunController.java:107)
2022-07-07T15:27:40.457430955Z 	at com.consol.citrus.remote.controller.RunController.runPackages(RunController.java:75)
2022-07-07T15:27:40.457434562Z 	at com.consol.citrus.remote.controller.RunController.runAll(RunController.java:60)
2022-07-07T15:27:40.457438219Z 	at com.consol.citrus.remote.CitrusRemoteApplication.runTests(CitrusRemoteApplication.java:262)
2022-07-07T15:27:40.457442267Z 	at com.consol.citrus.remote.CitrusRemoteApplication$1.run(CitrusRemoteApplication.java:215)
2022-07-07T15:27:40.457445713Z 	at com.consol.citrus.remote.job.RunJob.call(RunJob.java:43)
2022-07-07T15:27:40.457449350Z 	at com.consol.citrus.remote.job.RunJob.call(RunJob.java:29)
2022-07-07T15:27:40.457453017Z 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
2022-07-07T15:27:40.457456534Z 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
2022-07-07T15:27:40.457460131Z 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
2022-07-07T15:27:40.457463748Z 	at java.base/java.lang.Thread.run(Thread.java:833)
2022-07-07T15:27:40.460245673Z 2022-07-07 15:27:40.457  WARN --- [pool-2-thread-1] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'fooServer' defined in class path resource [de/turing85/citrus/tests/citrus/configuration/HttpServers.class]: Initialization of bean failed; nested exception is com.consol.citrus.exceptions.CitrusRuntimeException: javax.servlet.ServletException: fooServer-servlet==com.consol.citrus.http.servlet.CitrusDispatcherServlet@6b7c7821{jsp=null,order=-1,inst=true,async=true,src=EMBEDDED:null,STARTED}
2022-07-07T15:27:40.563627961Z 
2022-07-07T15:27:40.563678337Z ===============================================
2022-07-07T15:27:40.563692665Z Default Suite
2022-07-07T15:27:40.563698717Z Total tests run: 1, Passes: 0, Failures: 0, Skips: 1
2022-07-07T15:27:40.563702404Z Configuration Failures: 3, Skips: 0
2022-07-07T15:27:40.563706972Z ===============================================
2022-07-07T15:27:40.563710209Z 
2022-07-07T15:27:40.902364645Z 2022-07-07 15:27:40.901  INFO --- [tp1875706559-24] c.c.c.r.CitrusRemoteApplication          : GET http://localhost:4567/results/files
2022-07-07T15:27:40.912969404Z 2022-07-07 15:27:40.912  INFO --- [tp1875706559-25] c.c.c.r.CitrusRemoteApplication          : GET http://localhost:4567/results/suite
2022-07-07T15:27:40.924088634Z 2022-07-07 15:27:40.923  INFO --- [tp1875706559-24] c.c.c.r.CitrusRemoteApplication          : GET http://localhost:4567/results/file/TEST-de.turing85.citrus.tests.citrus.GetHelloIT.xml

Reproducer:

  • checkout https://github.com/turing85/citrus-playground/tree/http-server-not-working
  • build both applications (sut and citrus tests): ./mwnv -P build-test-jar package
  • deploy the test setup via docker compose: cd local-deployment && docker compose up -d --build && cd ..
  • start the tests through maven directly: ./mvnw -f citrus verify
  • observe that the tests succeed
  • start the tests deployed in docker through the remote-plugin. ./mvnw -f citrus -P trigger-citrus-remote verify
  • observe that the tests fail. The above error can be found in the logs of the citrus-tests container.

progress bar in citrus-remote-maven-plugin not working

Citrus Version: 3.2.1


Expected behavior:

When we trigger tests asynchronously through the citrus-remote-maven-plugin, we can normally see a simple ascii progress bar with the state of all test cases executed so far:


Actual behavior:

The progress bar is empty until the test execution was triggered once and succeded. If the tests are re-run again, they will show the results of the previous run with each poll.


Reproducer:

  • checkout this git-repository

  • build service and tests:

    ./mvnw -Pbuild-citrus-jar package
    
  • deploy service and tests:

    cd local-deployment && docker compose up -d && cd ..
    
  • trigger the tests through the citrus-maven-remote-plugin:

    ./mvn -Ptrigger-citrus-remote -pl citrus verify
    
  • notice that with each tick, we get an empty line:

    [INFO] --- citrus-remote-maven-plugin:3.2.1:test (trigger-citrus-remote) @ citrus-playground-citrus ---
    [INFO] Waiting for remote tests to finish ...
    [INFO] 
    [INFO] Waiting for remote tests to finish ...
    [INFO] 
    [INFO] Waiting for remote tests to finish ...
    [INFO] 
    [INFO]
    
  • re-trigger the tests once more:

    ./mvn -Ptrigger-citrus-remote -pl citrus verify
    
  • notice that we see the results of the previous run with each tick:

    [INFO] --- citrus-remote-maven-plugin:3.2.1:test (trigger-citrus-remote) @ citrus-playground-citrus ---
    [INFO] Waiting for remote tests to finish ...
    [INFO] +++
    [INFO] Waiting for remote tests to finish ...
    [INFO] +++
    [INFO] Waiting for remote tests to finish ...
    [INFO] +++
    [INFO] 
    

Additional information:

The behavior is most likely triggered by the fact that

curl -H 'Accept: application/json' http://localhost:4567/results

returns

[ ]%

before and during the 1st execution, and

[ {
  "testName" : "GetHealthIT.getHealth",
  "testClass" : "de.turing85.citrus.tests.citrus.GetHealthIT",
  "cause" : null,
  "errorMessage" : null,
  "failureStack" : null,
  "success" : true,
  "failed" : false,
  "skipped" : false
}, {
  "testName" : "GetHelloIT.getHello",
  "testClass" : "de.turing85.citrus.tests.citrus.GetHelloIT",
  "cause" : null,
  "errorMessage" : null,
  "failureStack" : null,
  "success" : true,
  "failed" : false,
  "skipped" : false
}, {
  "testName" : "GetMetricsIT.getMetrics",
  "testClass" : "de.turing85.citrus.tests.citrus.GetMetricsIT",
  "cause" : null,
  "errorMessage" : null,
  "failureStack" : null,
  "success" : true,
  "failed" : false,
  "skipped" : false
} ]%

afterwards. This, in return, is most probaly triggered by the fact that remoteResultFuture in CitrusRemoteApplication is not initialized.

Log4j2 plugins do not work in remote-jar

Citrus Version : 3.2.1, 3.3.0


Expected behavior:

When we use log4j2-plugins, e.g the JsonTemplateFormat, the plugin should work.


Actual behavior:

On application startup, we see the following messages in the console:

Picked up JAVA_TOOL_OPTIONS: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
Listening for transport dt_socket at address: 5005
2022-09-26 17:14:14,520 main ERROR Unable to locate plugin type for JsonTemplateLayout
2022-09-26 17:14:14,555 main ERROR Unable to locate plugin for JsonTemplateLayout
2022-09-26 17:14:14,562 main ERROR Could not create plugin of type class org.apache.logging.log4j.core.appender.ConsoleAppender for element Console: java.lang.NullPointerException: Cannot invoke "org.apache.logging.log4j.core.config.plugins.util.PluginType.getElementName()" because "childType" is null java.lang.NullPointerException: Cannot invoke "org.apache.logging.log4j.core.config.plugins.util.PluginType.getElementName()" because "childType" is null
	at org.apache.logging.log4j.core.config.plugins.visitors.PluginElementVisitor.findNamedNode(PluginElementVisitor.java:104)
	at org.apache.logging.log4j.core.config.plugins.visitors.PluginElementVisitor.visit(PluginElementVisitor.java:88)
	at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.injectFields(PluginBuilder.java:189)
	at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:123)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1122)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1047)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1039)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:651)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:249)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:295)
	at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:621)
	at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:694)
	at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:711)
	at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:253)
	at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
	at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
	at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
	at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:137)
	at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:55)
	at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:47)
	at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:33)
	at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
	at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:388)
	at com.consol.citrus.remote.CitrusRemoteServer.<clinit>(CitrusRemoteServer.java:37)

2022-09-26 17:14:14,564 main ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.appender.ConsoleAppender for element Console: java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.ConsoleAppender java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.ConsoleAppender
	at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.findFactoryMethod(PluginBuilder.java:238)
	at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:136)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1122)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1047)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1039)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:651)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:249)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:295)
	at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:621)
	at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:694)
	at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:711)
	at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:253)
	at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
	at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
	at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
	at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:137)
	at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:55)
	at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:47)
	at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:33)
	at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
	at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:388)
	at com.consol.citrus.remote.CitrusRemoteServer.<clinit>(CitrusRemoteServer.java:37)

2022-09-26 17:14:14,582 main ERROR Null object returned for Console in Appenders.
2022-09-26 17:14:14,582 main ERROR Unable to locate appender "STDOUT" for logger config "root"

Reproducer:

  • checkout this git-repository, switch to branch [jog4j2-plugin-not-working]

  • build service and tests:

    ./mvnw -Pbuild-test-jar package
    
  • deploy the service:

    cd local-deployment && docker compose up -d service && cd ..
    
  • trigger the tests through failsafe:

    ./mvnw -pl citrus verify
    
  • observe that the tests succeed

  • deploy the citrus tests:

    cd local-deployment && docker compose up -d citrus-tests && cd ..
    
  • observe the error in the container logs through

    docker logs citrus-tests-citrus-tests-1
    

Logs of the successful, local run:

citrus-reports-from-surefire-successful.tar.gz


Additional information:

There is this maven-shade transformer, describing a similar (or possibly the same?) issue.

Remote plugin: Test case fails, but citrus succeeds

Citrus Version: 3.4.0 (earlier version probably as well)

Expected behavior
Test case fails and citrus report an error, or test case succeeds and citrus succeeds.

Actual behavior
Test case fails, but citrus succeeds.

Test case sample

  • Checkout https://github.com/turing85/citrus-playground/tree/bug/test-fails-wrongly-citrus-succeeds:
    git clone https://github.com/turing85/citrus-playground.git
    cd citrus-playground
    git fetch
    git switch bug/test-fails-wrongly-citrus-succeeds
  • Build service and citrus:
    ./mvnw clean package
  • Deploy service and citrus through docker-compose,
    docker-compose -f local-deployment/docker-compose.yml up --build --detach
  • Attach to service-logs:
    docker logs -f service
  • In a separate console, attach to the citrus-logs:
    docker logs -f citrus-tests
  • In another shell, trigger remote execution:
    cd citrus-playground
    ./mvnw --projects citrus --activate-profiles trigger-citrus-remote verify
  • Observe that the execution of the citrus-remote-maven-plugin succeeds:
    [INFO] Scanning for projects...
    [INFO] 
    [INFO] ----------------< de.turing85:citrus-playground-citrus >----------------
    [INFO] Building Citrus Playground :: Citrus 1.0-SNAPSHOT
    [INFO] --------------------------------[ jar ]---------------------------------
    [INFO] 
    [INFO] --- citrus-remote-maven-plugin:3.4.0:test (trigger-citrus-remote) @ citrus-playground-citrus ---
    [INFO] Waiting for remote tests to finish ...
    [INFO] 
    [INFO] 
    INFO	| ------------------------------------------------------------------------
    INFO	| 
    INFO	| CITRUS TEST RESULTS
    INFO	| 
    INFO	|  GetMetricsIT.getMetrics ........................................ SUCCESS
    INFO	|  GetHealthIT.getHealth .......................................... SUCCESS
    INFO	|  GetHelloIT.getHello ............................................ SUCCESS
    INFO	| 
    INFO	| TOTAL:	3
    INFO	| FAILED:	0 (0.0%)
    INFO	| SUCCESS:	3 (100.0%)
    INFO	| 
    INFO	| ------------------------------------------------------------------------
    ...
    
  • Observe that the test execution within the citrus-tests-container throws a MessageTimeoutException, but the test still succeeds:
    ...
    2023-05-29 00:56:59.089  INFO --- [pool-2-thread-1] c.c.c.h.c.HttpClient                     : Sending HTTP message to: 'http://service:8080/hello'
    2023-05-29 00:56:59.578  INFO --- [qtp634221858-26] c.c.c.r.CitrusRemoteApplication          : GET http://localhost:4567/results?timeout=15000
    2023-05-29 00:57:00.090  WARN --- [cTaskExecutor-1] c.c.c.a.AbstractAsyncTestAction          : Async test action execution raised error
    com.consol.citrus.exceptions.MessageTimeoutException: Action timeout after 1000 milliseconds. Failed to receive message on endpoint: 'httpServer.inbound'
    	at com.consol.citrus.endpoint.direct.DirectConsumer.receive(DirectConsumer.java:69)
    	at com.consol.citrus.endpoint.direct.DirectSyncConsumer.receive(DirectSyncConsumer.java:41)
    	at com.consol.citrus.messaging.AbstractSelectiveMessageConsumer.receive(AbstractSelectiveMessageConsumer.java:50)
    	at com.consol.citrus.actions.ReceiveMessageAction.receive(ReceiveMessageAction.java:178)
    	at com.consol.citrus.actions.ReceiveMessageAction.doExecute(ReceiveMessageAction.java:160)
    	at com.consol.citrus.actions.AbstractTestAction.execute(AbstractTestAction.java:59)
    	at com.consol.citrus.container.AbstractActionContainer.executeAction(AbstractActionContainer.java:71)
    	at com.consol.citrus.container.Async$1.doExecuteAsync(Async.java:60)
    	at com.consol.citrus.actions.AbstractAsyncTestAction.lambda$doExecute$0(AbstractAsyncTestAction.java:51)
    	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
    	at java.base/java.lang.Thread.run(Unknown Source)
    2023-05-29 00:57:00.091  INFO --- [cTaskExecutor-1] c.c.c.c.Async                            : Apply error actions after async container ...
    2023-05-29 00:57:00.313  INFO --- [ qtp38350903-43] c.c.c.e.d.DirectSyncProducer             : Message was sent to queue: 'httpServer.inbound'
    2023-05-29 00:57:01.314  WARN --- [ qtp38350903-43] c.c.c.e.d.DirectEndpointAdapter          : Action timeout after 1000 milliseconds. Failed to receive synchronous reply message on endpoint: 'httpServer.inbound'
    2023-05-29 00:57:01.833  INFO --- [pool-2-thread-1] c.c.c.h.c.HttpClient                     : HTTP message was sent to endpoint: 'http://service:8080/hello'
    2023-05-29 00:57:01.834  INFO --- [pool-2-thread-1] c.c.c.r.LoggingReporter                  : 
    2023-05-29 00:57:01.835  INFO --- [pool-2-thread-1] c.c.c.r.LoggingReporter                  : TEST SUCCESS GetHelloIT.getHello (de.turing85.citrus.tests.citrus)
    ...
    2023-05-29 00:57:03.346  INFO --- [pool-2-thread-1] c.c.c.r.LoggingReporter                  : CITRUS TEST RESULTS
    2023-05-29 00:57:03.346  INFO --- [pool-2-thread-1] c.c.c.r.LoggingReporter                  : 
    2023-05-29 00:57:03.347  INFO --- [pool-2-thread-1] c.c.c.r.LoggingReporter                  :  GetHealthIT.getHealth .......................................... SUCCESS
    2023-05-29 00:57:03.347  INFO --- [pool-2-thread-1] c.c.c.r.LoggingReporter                  :  GetHelloIT.getHello ............................................ SUCCESS
    2023-05-29 00:57:03.348  INFO --- [pool-2-thread-1] c.c.c.r.LoggingReporter                  :  GetMetricsIT.getMetrics ........................................ SUCCESS
    2023-05-29 00:57:03.348  INFO --- [pool-2-thread-1] c.c.c.r.LoggingReporter                  : 
    2023-05-29 00:57:03.348  INFO --- [pool-2-thread-1] c.c.c.r.LoggingReporter                  : TOTAL:	3
    2023-05-29 00:57:03.351  INFO --- [pool-2-thread-1] c.c.c.r.LoggingReporter                  : FAILED:	0 (0.0%)
    2023-05-29 00:57:03.351  INFO --- [pool-2-thread-1] c.c.c.r.LoggingReporter                  : SUCCESS:	3 (100.0%)
    ...
    ===============================================
    Default Suite
    Total tests run: 3, Passes: 2, Failures: 1, Skips: 0
    ===============================================
    ...
    
  • Observe in the service-logs that the service sends an empty string as repsonse:
    2023-05-29 00:57:01,339 INFO  [de.tur.cit.tes.ser.HelloEndpoint] (executor-thread-1) sending "" as response
    
    which should not pass the verification here (github.com)

Additional Information
If debugging is necessary, a debugger can be attached to the service-container (port 5006), as well as the citrus-container (port 5007)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.