Hi I suspect this change causes the vm component to fail now https://builds.apache.org/job/Camel.trunk.fulltest/org.apache.camel$camel-core/1235/testReport/
On Tue, Feb 12, 2013 at 5:54 PM, <ra...@apache.org> wrote: > Author: raulk > Date: Tue Feb 12 16:54:43 2013 > New Revision: 1445263 > > URL: http://svn.apache.org/r1445263 > Log: > CAMEL-6072 Service Shutdown logic may execute N times // CAMEL-6073 Pairs of > VM producer-consumer disconnect when OSGi bundle is restarted > > Added: > > camel/trunk/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleContextsStartStopTest.java > Modified: > > camel/trunk/camel-core/src/main/java/org/apache/camel/support/ServiceSupport.java > > Modified: > camel/trunk/camel-core/src/main/java/org/apache/camel/support/ServiceSupport.java > URL: > http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/support/ServiceSupport.java?rev=1445263&r1=1445262&r2=1445263&view=diff > ============================================================================== > --- > camel/trunk/camel-core/src/main/java/org/apache/camel/support/ServiceSupport.java > (original) > +++ > camel/trunk/camel-core/src/main/java/org/apache/camel/support/ServiceSupport.java > Tue Feb 12 16:54:43 2013 > @@ -145,6 +145,10 @@ public abstract class ServiceSupport imp > > @Override > public void shutdown() throws Exception { > + if (shutdown.get()) { > + LOG.trace("Service already shut down"); > + return; > + } > // ensure we are stopped first > stop(); > > > Added: > camel/trunk/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleContextsStartStopTest.java > URL: > http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleContextsStartStopTest.java?rev=1445263&view=auto > ============================================================================== > --- > camel/trunk/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleContextsStartStopTest.java > (added) > +++ > camel/trunk/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleContextsStartStopTest.java > Tue Feb 12 16:54:43 2013 > @@ -0,0 +1,78 @@ > +/** > + * Licensed to the Apache Software Foundation (ASF) under one or more > + * contributor license agreements. See the NOTICE file distributed with > + * this work for additional information regarding copyright ownership. > + * The ASF licenses this file to You under the Apache License, Version 2.0 > + * (the "License"); you may not use this file except in compliance with > + * the License. You may obtain a copy of the License at > + * > + * http://www.apache.org/licenses/LICENSE-2.0 > + * > + * Unless required by applicable law or agreed to in writing, software > + * distributed under the License is distributed on an "AS IS" BASIS, > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > + * See the License for the specific language governing permissions and > + * limitations under the License. > + */ > +package org.apache.camel.component.vm; > + > +import org.apache.camel.ContextTestSupport; > +import org.apache.camel.ProducerTemplate; > +import org.apache.camel.builder.RouteBuilder; > +import org.apache.camel.component.mock.MockEndpoint; > +import org.apache.camel.impl.DefaultCamelContext; > + > +/** > + * @version > + */ > +public class VmMultipleContextsStartStopTest extends ContextTestSupport { > + > + public void testStartStop() throws Exception { > + DefaultCamelContext c1 = new DefaultCamelContext(); > + c1.addRoutes(new RouteBuilder() { > + @Override > + public void configure() throws Exception { > + from("direct:test") > + .to("vm:foo"); > + } > + }); > + c1.start(); > + ProducerTemplate template = c1.createProducerTemplate(); > + > + DefaultCamelContext c2 = new DefaultCamelContext(); > + c2.addRoutes(new RouteBuilder() { > + @Override > + public void configure() throws Exception { > + from("vm:foo") > + .to("mock:result"); > + } > + }); > + c2.start(); > + > + /* Check that contexts are communicated */ > + MockEndpoint mock = c2.getEndpoint("mock:result", > MockEndpoint.class); > + mock.expectedMessageCount(1); > + template.requestBody("direct:test", "Hello world!"); > + mock.assertIsSatisfied(); > + mock.reset(); > + > + /* Restart the consumer Camel Context */ > + c2.stop(); > + c2.start(); > + > + /* Send a message again and assert that it's received */ > + template.requestBody("direct:test", "Hello world!"); > + mock.assertIsSatisfied(); > + > + } > + > + @Override > + protected RouteBuilder createRouteBuilder() throws Exception { > + return new RouteBuilder() { > + @Override > + public void configure() throws Exception { > + > + } > + }; > + } > +} > \ No newline at end of file > > -- Claus Ibsen ----------------- Red Hat, Inc. FuseSource is now part of Red Hat Email: cib...@redhat.com Web: http://fusesource.com Twitter: davsclaus Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen