You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2013/10/01 10:15:42 UTC

[1/2] git commit: CAMEL-6746: Improved vm component to keep track of active endpoints, supporting multpleConsumers=true. Thanks to Christian Posta for the patch.

Updated Branches:
  refs/heads/camel-2.12.x 61a7c49b2 -> 2831c270c
  refs/heads/master 7f1c961a2 -> e4f90c068


CAMEL-6746: Improved vm component to keep track of active endpoints, supporting multpleConsumers=true. Thanks to Christian Posta for the patch.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/e4f90c06
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/e4f90c06
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/e4f90c06

Branch: refs/heads/master
Commit: e4f90c0682b447e728b142bc2e548aa7bb89f5ca
Parents: 7f1c961
Author: Claus Ibsen <da...@apache.org>
Authored: Tue Oct 1 10:14:37 2013 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Oct 1 10:14:37 2013 +0200

----------------------------------------------------------------------
 .../apache/camel/component/vm/VmComponent.java  |  18 +++
 .../component/vm/AbstractVmTestSupport.java     |   4 +-
 .../VmMultipleConsumersMultipleContextTest.java | 152 +++++++++++++++++++
 .../vm/VmMultipleConsumersRemoteRouteTest.java  |   2 +
 4 files changed, 174 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/e4f90c06/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java b/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java
index 65c0836..682592a 100644
--- a/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java
@@ -21,8 +21,10 @@ import java.util.Map;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.apache.camel.Endpoint;
 import org.apache.camel.component.seda.QueueReference;
 import org.apache.camel.component.seda.SedaComponent;
+import org.apache.camel.component.seda.SedaEndpoint;
 
 /**
  * An implementation of the <a href="http://camel.apache.org/vm.html">VM components</a>
@@ -34,6 +36,7 @@ import org.apache.camel.component.seda.SedaComponent;
  */
 public class VmComponent extends SedaComponent {
     protected static final Map<String, QueueReference> QUEUES = new HashMap<String, QueueReference>();
+    protected static final Map<String, SedaEndpoint> ENDPOINTS = new HashMap<String, SedaEndpoint>();
     private static final AtomicInteger START_COUNTER = new AtomicInteger();
 
     @Override
@@ -57,6 +60,21 @@ public class VmComponent extends SedaComponent {
         if (START_COUNTER.decrementAndGet() <= 0) {
             // clear queues when no more vm components in use
             getQueues().clear();
+            // also clear endpoints
+            ENDPOINTS.clear();
         }
     }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
+        if (ENDPOINTS.containsKey(uri)) {
+            return ENDPOINTS.get(uri);
+        }
+
+        SedaEndpoint answer = (SedaEndpoint) super.createEndpoint(uri, remaining, parameters);
+
+        ENDPOINTS.put(uri, answer);
+        return answer;
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/e4f90c06/camel-core/src/test/java/org/apache/camel/component/vm/AbstractVmTestSupport.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/vm/AbstractVmTestSupport.java b/camel-core/src/test/java/org/apache/camel/component/vm/AbstractVmTestSupport.java
index fbc286d..bafafb8 100644
--- a/camel-core/src/test/java/org/apache/camel/component/vm/AbstractVmTestSupport.java
+++ b/camel-core/src/test/java/org/apache/camel/component/vm/AbstractVmTestSupport.java
@@ -37,7 +37,6 @@ public abstract class AbstractVmTestSupport extends ContextTestSupport {
     @Before
     protected void setUp() throws Exception {
         super.setUp();
-        
         context2 = new DefaultCamelContext();
         template2 = context2.createProducerTemplate();
         
@@ -54,7 +53,8 @@ public abstract class AbstractVmTestSupport extends ContextTestSupport {
     @After
     protected void tearDown() throws Exception {
         ServiceHelper.stopServices(context2, template2);
-        
+        VmComponent.ENDPOINTS.clear();
+        VmComponent.QUEUES.clear();
         super.tearDown();
     }
     

http://git-wip-us.apache.org/repos/asf/camel/blob/e4f90c06/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersMultipleContextTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersMultipleContextTest.java b/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersMultipleContextTest.java
new file mode 100644
index 0000000..e115908
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersMultipleContextTest.java
@@ -0,0 +1,152 @@
+/**
+ * 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.CamelContext;
+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;
+
+public class VmMultipleConsumersMultipleContextTest extends ContextTestSupport {
+
+    public void testMultipleVMConsumersSameContext() throws Exception {
+        CamelContext camelContext = new DefaultCamelContext();
+        ProducerTemplate producerTemplate = camelContext.createProducerTemplate();
+
+        RouteBuilder builder = new RouteBuilder(camelContext) {
+            @Override
+            public void configure() throws Exception {
+                from("vm:producer?multipleConsumers=true").routeId("route1").to("mock:route1");
+            }
+
+        };
+        RouteBuilder builder2 = new RouteBuilder(camelContext) {
+            @Override
+            public void configure() throws Exception {
+                from("vm:producer?multipleConsumers=true").routeId("route2").to("mock:route2");
+            }
+        };
+        camelContext.addRoutes(builder);
+        camelContext.addRoutes(builder2);
+
+        camelContext.start();
+
+
+        MockEndpoint mock1 = (MockEndpoint) camelContext.getEndpoint("mock:route1");
+        MockEndpoint mock2 = (MockEndpoint) camelContext.getEndpoint("mock:route2");
+        mock1.expectedMessageCount(100);
+        mock2.expectedMessageCount(100);
+
+        for (int i = 0; i < 100; i++) {
+            producerTemplate.sendBody("vm:producer?multipleConsumers=true", i);
+        }
+
+        MockEndpoint.assertIsSatisfied(mock1, mock2);
+
+        camelContext.stop();
+    }
+
+    public void testVmMultipleConsumersMultipleContext() throws Exception {
+
+        // start context 1
+        CamelContext consumerContext1 = new DefaultCamelContext();
+        consumerContext1.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("vm:producer?multipleConsumers=true").routeId("route1").to("mock:route1");
+            }
+        });
+        consumerContext1.start();
+        MockEndpoint route1Mock = (MockEndpoint) consumerContext1.getEndpoint("mock:route1");
+        route1Mock.expectedMessageCount(100);
+
+        // start up context 2
+        CamelContext consumerContext2 = new DefaultCamelContext();
+        consumerContext2.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("vm:producer?multipleConsumers=true").routeId("route2").to("mock:route2");
+            }
+        });
+        consumerContext2.start();
+        MockEndpoint route2Mock = (MockEndpoint) consumerContext2.getEndpoint("mock:route2");
+        route2Mock.expectedMessageCount(100);
+
+        // use context part of contextTestSupport to send in messages
+        for (int i = 0; i < 100; i++) {
+            template.sendBody("vm:producer?multipleConsumers=true", i);
+        }
+
+        route1Mock.assertIsSatisfied();
+        route2Mock.assertIsSatisfied();
+
+        consumerContext1.stop();
+        consumerContext2.stop();
+    }
+
+    private CamelContext buildConsumerContext(final String route) throws Exception {
+        DefaultCamelContext rc = new DefaultCamelContext();
+        rc.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("vm:producer?multipleConsumers=true").routeId(route).to("mock:" + route);
+            }
+        });
+        rc.start();
+        return rc;
+    }
+
+    public void testVmMultipleConsumersDifferentEndpoints() throws Exception {
+        // start context 1
+        CamelContext consumerContext1 = new DefaultCamelContext();
+        consumerContext1.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("vm:producer?multipleConsumers=true").routeId("route1").to("mock:route1");
+            }
+        });
+        consumerContext1.start();
+        MockEndpoint route1Mock = (MockEndpoint) consumerContext1.getEndpoint("mock:route1");
+        route1Mock.expectedMessageCount(100);
+
+        // start up context 2
+        CamelContext consumerContext2 = new DefaultCamelContext();
+        consumerContext2.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("vm:foo?multipleConsumers=true").routeId("route2").to("mock:route2");
+            }
+        });
+        consumerContext2.start();
+        MockEndpoint route2Mock = (MockEndpoint) consumerContext2.getEndpoint("mock:route2");
+        route2Mock.expectedMessageCount(0);
+
+        // use context part of contextTestSupport to send in messages
+        for (int i = 0; i < 100; i++) {
+            template.sendBody("vm:producer?multipleConsumers=true", i);
+        }
+
+        route1Mock.assertIsSatisfied();
+        route2Mock.assertIsSatisfied();
+
+        consumerContext1.stop();
+        consumerContext2.stop();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/e4f90c06/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersRemoteRouteTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersRemoteRouteTest.java b/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersRemoteRouteTest.java
index 41997fe..4c5a656 100644
--- a/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersRemoteRouteTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersRemoteRouteTest.java
@@ -47,6 +47,8 @@ public class VmMultipleConsumersRemoteRouteTest extends TestCase {
 
         camelContext.start();
 
+        // this test actually removes the route... so in effect we have one route consuming
+        // a "multipleConsumer" seda queue
         camelContext.stopRoute("route2");
         camelContext.removeRoute("route2");
 


[2/2] git commit: CAMEL-6746: Improved vm component to keep track of active endpoints, supporting multpleConsumers=true. Thanks to Christian Posta for the patch.

Posted by da...@apache.org.
CAMEL-6746: Improved vm component to keep track of active endpoints, supporting multpleConsumers=true. Thanks to Christian Posta for the patch.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/2831c270
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/2831c270
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/2831c270

Branch: refs/heads/camel-2.12.x
Commit: 2831c270c3820fea1219c746b5e0f8748179e39d
Parents: 61a7c49
Author: Claus Ibsen <da...@apache.org>
Authored: Tue Oct 1 10:14:37 2013 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Oct 1 10:14:57 2013 +0200

----------------------------------------------------------------------
 .../apache/camel/component/vm/VmComponent.java  |  18 +++
 .../component/vm/AbstractVmTestSupport.java     |   4 +-
 .../VmMultipleConsumersMultipleContextTest.java | 152 +++++++++++++++++++
 .../vm/VmMultipleConsumersRemoteRouteTest.java  |   2 +
 4 files changed, 174 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/2831c270/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java b/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java
index 65c0836..682592a 100644
--- a/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/vm/VmComponent.java
@@ -21,8 +21,10 @@ import java.util.Map;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.apache.camel.Endpoint;
 import org.apache.camel.component.seda.QueueReference;
 import org.apache.camel.component.seda.SedaComponent;
+import org.apache.camel.component.seda.SedaEndpoint;
 
 /**
  * An implementation of the <a href="http://camel.apache.org/vm.html">VM components</a>
@@ -34,6 +36,7 @@ import org.apache.camel.component.seda.SedaComponent;
  */
 public class VmComponent extends SedaComponent {
     protected static final Map<String, QueueReference> QUEUES = new HashMap<String, QueueReference>();
+    protected static final Map<String, SedaEndpoint> ENDPOINTS = new HashMap<String, SedaEndpoint>();
     private static final AtomicInteger START_COUNTER = new AtomicInteger();
 
     @Override
@@ -57,6 +60,21 @@ public class VmComponent extends SedaComponent {
         if (START_COUNTER.decrementAndGet() <= 0) {
             // clear queues when no more vm components in use
             getQueues().clear();
+            // also clear endpoints
+            ENDPOINTS.clear();
         }
     }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
+        if (ENDPOINTS.containsKey(uri)) {
+            return ENDPOINTS.get(uri);
+        }
+
+        SedaEndpoint answer = (SedaEndpoint) super.createEndpoint(uri, remaining, parameters);
+
+        ENDPOINTS.put(uri, answer);
+        return answer;
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/2831c270/camel-core/src/test/java/org/apache/camel/component/vm/AbstractVmTestSupport.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/vm/AbstractVmTestSupport.java b/camel-core/src/test/java/org/apache/camel/component/vm/AbstractVmTestSupport.java
index fbc286d..bafafb8 100644
--- a/camel-core/src/test/java/org/apache/camel/component/vm/AbstractVmTestSupport.java
+++ b/camel-core/src/test/java/org/apache/camel/component/vm/AbstractVmTestSupport.java
@@ -37,7 +37,6 @@ public abstract class AbstractVmTestSupport extends ContextTestSupport {
     @Before
     protected void setUp() throws Exception {
         super.setUp();
-        
         context2 = new DefaultCamelContext();
         template2 = context2.createProducerTemplate();
         
@@ -54,7 +53,8 @@ public abstract class AbstractVmTestSupport extends ContextTestSupport {
     @After
     protected void tearDown() throws Exception {
         ServiceHelper.stopServices(context2, template2);
-        
+        VmComponent.ENDPOINTS.clear();
+        VmComponent.QUEUES.clear();
         super.tearDown();
     }
     

http://git-wip-us.apache.org/repos/asf/camel/blob/2831c270/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersMultipleContextTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersMultipleContextTest.java b/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersMultipleContextTest.java
new file mode 100644
index 0000000..e115908
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersMultipleContextTest.java
@@ -0,0 +1,152 @@
+/**
+ * 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.CamelContext;
+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;
+
+public class VmMultipleConsumersMultipleContextTest extends ContextTestSupport {
+
+    public void testMultipleVMConsumersSameContext() throws Exception {
+        CamelContext camelContext = new DefaultCamelContext();
+        ProducerTemplate producerTemplate = camelContext.createProducerTemplate();
+
+        RouteBuilder builder = new RouteBuilder(camelContext) {
+            @Override
+            public void configure() throws Exception {
+                from("vm:producer?multipleConsumers=true").routeId("route1").to("mock:route1");
+            }
+
+        };
+        RouteBuilder builder2 = new RouteBuilder(camelContext) {
+            @Override
+            public void configure() throws Exception {
+                from("vm:producer?multipleConsumers=true").routeId("route2").to("mock:route2");
+            }
+        };
+        camelContext.addRoutes(builder);
+        camelContext.addRoutes(builder2);
+
+        camelContext.start();
+
+
+        MockEndpoint mock1 = (MockEndpoint) camelContext.getEndpoint("mock:route1");
+        MockEndpoint mock2 = (MockEndpoint) camelContext.getEndpoint("mock:route2");
+        mock1.expectedMessageCount(100);
+        mock2.expectedMessageCount(100);
+
+        for (int i = 0; i < 100; i++) {
+            producerTemplate.sendBody("vm:producer?multipleConsumers=true", i);
+        }
+
+        MockEndpoint.assertIsSatisfied(mock1, mock2);
+
+        camelContext.stop();
+    }
+
+    public void testVmMultipleConsumersMultipleContext() throws Exception {
+
+        // start context 1
+        CamelContext consumerContext1 = new DefaultCamelContext();
+        consumerContext1.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("vm:producer?multipleConsumers=true").routeId("route1").to("mock:route1");
+            }
+        });
+        consumerContext1.start();
+        MockEndpoint route1Mock = (MockEndpoint) consumerContext1.getEndpoint("mock:route1");
+        route1Mock.expectedMessageCount(100);
+
+        // start up context 2
+        CamelContext consumerContext2 = new DefaultCamelContext();
+        consumerContext2.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("vm:producer?multipleConsumers=true").routeId("route2").to("mock:route2");
+            }
+        });
+        consumerContext2.start();
+        MockEndpoint route2Mock = (MockEndpoint) consumerContext2.getEndpoint("mock:route2");
+        route2Mock.expectedMessageCount(100);
+
+        // use context part of contextTestSupport to send in messages
+        for (int i = 0; i < 100; i++) {
+            template.sendBody("vm:producer?multipleConsumers=true", i);
+        }
+
+        route1Mock.assertIsSatisfied();
+        route2Mock.assertIsSatisfied();
+
+        consumerContext1.stop();
+        consumerContext2.stop();
+    }
+
+    private CamelContext buildConsumerContext(final String route) throws Exception {
+        DefaultCamelContext rc = new DefaultCamelContext();
+        rc.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("vm:producer?multipleConsumers=true").routeId(route).to("mock:" + route);
+            }
+        });
+        rc.start();
+        return rc;
+    }
+
+    public void testVmMultipleConsumersDifferentEndpoints() throws Exception {
+        // start context 1
+        CamelContext consumerContext1 = new DefaultCamelContext();
+        consumerContext1.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("vm:producer?multipleConsumers=true").routeId("route1").to("mock:route1");
+            }
+        });
+        consumerContext1.start();
+        MockEndpoint route1Mock = (MockEndpoint) consumerContext1.getEndpoint("mock:route1");
+        route1Mock.expectedMessageCount(100);
+
+        // start up context 2
+        CamelContext consumerContext2 = new DefaultCamelContext();
+        consumerContext2.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                from("vm:foo?multipleConsumers=true").routeId("route2").to("mock:route2");
+            }
+        });
+        consumerContext2.start();
+        MockEndpoint route2Mock = (MockEndpoint) consumerContext2.getEndpoint("mock:route2");
+        route2Mock.expectedMessageCount(0);
+
+        // use context part of contextTestSupport to send in messages
+        for (int i = 0; i < 100; i++) {
+            template.sendBody("vm:producer?multipleConsumers=true", i);
+        }
+
+        route1Mock.assertIsSatisfied();
+        route2Mock.assertIsSatisfied();
+
+        consumerContext1.stop();
+        consumerContext2.stop();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/2831c270/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersRemoteRouteTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersRemoteRouteTest.java b/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersRemoteRouteTest.java
index 41997fe..4c5a656 100644
--- a/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersRemoteRouteTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/vm/VmMultipleConsumersRemoteRouteTest.java
@@ -47,6 +47,8 @@ public class VmMultipleConsumersRemoteRouteTest extends TestCase {
 
         camelContext.start();
 
+        // this test actually removes the route... so in effect we have one route consuming
+        // a "multipleConsumer" seda queue
         camelContext.stopRoute("route2");
         camelContext.removeRoute("route2");