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

Reply via email to