After some additional tests it looks like, that each second test fails because of this. If I run all tests, number one succeed, number two fails, number three succeed and number four fails. If I comment number number two, number three fails and number four succeed. If I comment number two and three, number four succeed. Very strange...
Regards, Christian On Mon, Jul 5, 2010 at 4:21 PM, Christian Müller < [email protected]> wrote: > Hello list, > > I using Apache Camel 2.2.0-fuse-01-00 and I have trouble to run my four > unit tests. If I run each test separate (annotate the other tests with > @Ignore or run only one test method in my IDE) all tests succeed. But if I > run all tests together (one test after the others) with Maven or in my IDE, > I receive a java.net.SocketTimeoutException. Unfortunately I have no idea, > where the side effect is. > > My test looks as following: > public class IncommingRouteTest extends CamelSpringTestSupport { > > private Person client; > > @EndpointInject(uri = "mock:result") > private MockEndpoint queueEndpoint; > > @EndpointInject(uri = "mock:error") > private MockEndpoint errorEndpoint; > > @Before > public void setUp() throws Exception { > disableJMX(); > > super.setUp(); > > URL wsdlURL = > IncommingRouteTest.class.getClassLoader().getResource("META-INF/wlsi/person-non-wrapper.wsdl"); > PersonService ss = new PersonService(wsdlURL, new QName(" > http://camel.apache.org/non-wrapper", "PersonService")); > client = ss.getSoap(); > } > > @Test > public void process() throws Exception { > queueEndpoint.expectedMessageCount(1); > > queueEndpoint.expectedBodiesReceived("com.awl.wlsi.example.eai.service.types.GetPerson[personId='1']"); > errorEndpoint.expectedMessageCount(0); > > GetPerson request = new GetPerson(); > request.setPersonId("1"); > GetPersonResponse response = client.getPerson(request); > > assertEquals("1", response.getPersonId()); > assertEquals("Christian Mueller", response.getName()); > assertEquals("123", response.getSsn()); > > queueEndpoint.assertIsSatisfied(); > errorEndpoint.assertIsSatisfied(); > } > > @Test > public void processIrrecoverableExceptionForUnknowPerson() throws > Exception { > queueEndpoint.expectedMessageCount(1); > > queueEndpoint.expectedBodiesReceived("com.awl.wlsi.example.eai.service.types.GetPerson[personId='?']"); > errorEndpoint.expectedMessageCount(0); > > GetPerson request = new GetPerson(); > request.setPersonId("?"); > > try { > client.getPerson(request); > fail("We expect to get the UnknowPersonFault here"); > } catch (UnknownPersonFault fault) { > // We expect to get fault here > assertEquals("Receive an invalid personId: '?'", > fault.getMessage()); > } > > queueEndpoint.assertIsSatisfied(); > errorEndpoint.assertIsSatisfied(); > } > > @Test > public void processRecoverableExceptionForUnknowPerson() throws > Exception { > queueEndpoint.expectedMessageCount(1); > > queueEndpoint.expectedBodiesReceived("com.awl.wlsi.example.eai.service.types.GetPerson[personId='5']"); > errorEndpoint.expectedMessageCount(1); > > GetPerson request = new GetPerson(); > request.setPersonId("5"); > > try { > client.getPerson(request); > fail("We expect to get the SOAPFaultException here"); > } catch (SOAPFaultException fault) { > // We expect to get fault here > assertEquals("Recoverable exception", fault.getMessage()); > } > > queueEndpoint.assertIsSatisfied(); > errorEndpoint.assertIsSatisfied(); > } > > @Test > public void processInvalidRequest() throws Exception { > queueEndpoint.expectedMessageCount(0); > errorEndpoint.expectedMessageCount(0); > > GetPerson request = new GetPerson(); > request.setPersonId("tooooooooooooooooooooooo long"); > > try { > client.getPerson(request); > fail("We expect to get a message schema validation > failure"); > } catch (Exception ex) { > // We expect to get fault here > assertEquals("Unmarshalling Error: cvc-maxLength-valid: Value > 'tooooooooooooooooooooooo long' with length = '29' is not facet-valid with > respect to maxLength '10' for type 'personId'. ", ex.getMessage()); > } > > queueEndpoint.assertIsSatisfied(); > errorEndpoint.assertIsSatisfied(); > } > > @Override > protected ClassPathXmlApplicationContext createApplicationContext() { > return new ClassPathXmlApplicationContext(new > String[]{"META-INF/spring/bundle-context.xml", > "META-INF/spring/bundle-context-test.xml"}); > } > > @Override > protected int getExpectedRouteCount() { > return 0; > } > } > > > stack trace: > 2010-07-05 16:07:40,963 [main ] DEBUG > DefaultCamelContext - ... Routes started > 2010-07-05 16:07:40,963 [main ] INFO > DefaultCamelContext - Started 3 routes > 2010-07-05 16:07:40,963 [main ] INFO > DefaultCamelContext - Apache Camel 2.2.0-fuse-01-00 > (CamelContext:camelContext) started > 2010-07-05 16:07:40,963 [main ] DEBUG > IncommingRouteTest - Camel Routes: > [EventDrivenConsumerRoute[Endpoint[ > http://localhost:8181/Services/PersonService] -> > Instrumentation:route[UnitOfWork(Channel[Multicast[[Channel[sendTo(Endpoint[direct://queue])], > Channel[sendTo(Endpoint[direct://processor])]]]])]], > EventDrivenConsumerRoute[Endpoint[direct://queue] -> > Instrumentation:route[UnitOfWork(pipeline[channel[com.awl.wlsi.example.eai.in.incommingrout...@b3a5d1], > Channel[sendTo(Endpoint[mock://result] InOnly)]])]], > EventDrivenConsumerRoute[Endpoint[direct://processor] -> > Instrumentation:route[UnitOfWork(channel[com.awl.wlsi.example.eai.in.personproces...@139ef3a > ])]]] > 2010-07-05 16:07:40,963 [main ] TRACE > CamelBeanPostProcessor - Camel bean processing before initialization > for bean: this > 2010-07-05 16:07:40,963 [main ] TRACE > DefaultCamelContext - Getting endpoint with uri: mock://result > 2010-07-05 16:07:40,963 [main ] TRACE > DefaultCamelContext - Getting endpoint with uri: mock://error > 2010-07-05 16:07:40,963 [main ] DEBUG > IncommingRouteTest - Using created route builder: Routes: [] > 2010-07-05 16:07:40,963 [main ] DEBUG > DefaultCamelContext - Adding routes from builder: Routes: [] > 2010-07-05 16:07:40,963 [main ] DEBUG > IncommingRouteTest - Routing Rules are: > [EventDrivenConsumerRoute[Endpoint[ > http://localhost:8181/Services/PersonService] -> > Instrumentation:route[UnitOfWork(Channel[Multicast[[Channel[sendTo(Endpoint[direct://queue])], > Channel[sendTo(Endpoint[direct://processor])]]]])]], > EventDrivenConsumerRoute[Endpoint[direct://queue] -> > Instrumentation:route[UnitOfWork(pipeline[channel[com.awl.wlsi.example.eai.in.incommingrout...@b3a5d1], > Channel[sendTo(Endpoint[mock://result] InOnly)]])]], > EventDrivenConsumerRoute[Endpoint[direct://processor] -> > Instrumentation:route[UnitOfWork(channel[com.awl.wlsi.example.eai.in.personproces...@139ef3a > ])]]] > 2010-07-05 16:07:40,963 [main ] DEBUG > IncommingRouteTest - Routing Rules are: > [EventDrivenConsumerRoute[Endpoint[ > http://localhost:8181/Services/PersonService] -> > Instrumentation:route[UnitOfWork(Channel[Multicast[[Channel[sendTo(Endpoint[direct://queue])], > Channel[sendTo(Endpoint[direct://processor])]]]])]], > EventDrivenConsumerRoute[Endpoint[direct://queue] -> > Instrumentation:route[UnitOfWork(pipeline[channel[com.awl.wlsi.example.eai.in.incommingrout...@b3a5d1], > Channel[sendTo(Endpoint[mock://result] InOnly)]])]], > EventDrivenConsumerRoute[Endpoint[direct://processor] -> > Instrumentation:route[UnitOfWork(channel[com.awl.wlsi.example.eai.in.personproces...@139ef3a > ])]]] > 05.07.2010 16:07:40 > org.apache.cxf.service.factory.ReflectionServiceFactoryBean > buildServiceFromWSDL > INFO: Creating Service > {http://camel.apache.org/non-wrapper}PersonService<http://camel.apache.org/non-wrapper%7DPersonService>from > WSDL: > file:/D:/workspaceWLSI/wlsi/examples/wlsi-example-eai/wlsi-example-eai-incomming/target/classes/META-INF/wlsi/person-non-wrapper.wsdl > 05.07.2010 16:08:41 org.apache.cxf.phase.PhaseInterceptorChain > doDefaultLogging > WARNUNG: Interceptor for { > http://camel.apache.org/non-wrapper}PersonService#{http://camel.apache.org/non-wrapper}GetPerson<http://camel.apache.org/non-wrapper%7DPersonService#%7Bhttp://camel.apache.org/non-wrapper%7DGetPerson>has > thrown exception, unwinding now > org.apache.cxf.interceptor.Fault: Could not send Message. > at > org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64) > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:484) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:310) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:262) > at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) > at > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) > at $Proxy51.getPerson(Unknown Source) > at > com.awl.wlsi.example.eai.in.IncommingRouteTest.process(IncommingRouteTest.java:50) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59) > at > org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98) > at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79) > at > org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87) > at > org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77) > at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42) > at > org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88) > at > org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51) > at > org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44) > at > org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27) > at > org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37) > at > org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42) > at > org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46) > at > org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) > Caused by: java.net.SocketTimeoutException: SocketTimeoutException invoking > http://localhost:8181/Services/PersonService: Read timed out > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > Method) > at > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) > at java.lang.reflect.Constructor.newInstance(Constructor.java:513) > at > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:2011) > at > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1992) > at > org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) > at > org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:640) > at > org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) > ... 30 more > Caused by: java.net.SocketTimeoutException: Read timed out > at java.net.SocketInputStream.socketRead0(Native Method) > at java.net.SocketInputStream.read(SocketInputStream.java:129) > at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) > at java.io.BufferedInputStream.read1(BufferedInputStream.java:258) > at java.io.BufferedInputStream.read(BufferedInputStream.java:317) > at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:687) > at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:632) > at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:766) > at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:632) > at > sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1072) > at > java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:373) > at > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2110) > at > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2087) > at > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1985) > ... 33 more > 2010-07-05 16:08:41,497 [main ] DEBUG > IncommingRouteTest - tearDown test > 2010-07-05 16:08:41,497 [main ] TRACE > ServiceHelper - Stopping service > org.apache.camel.impl.producerca...@89949a > > Any idea? I could also provide my other code, if it's required... > > Thanks in advance, > Christian >
