http://git-wip-us.apache.org/repos/asf/camel/blob/6d05326f/components/camel-disruptor/src/test/java/org/apache/camel/component/disruptor/vm/SameDisruptorVmQueueSizeAndNoSizeTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-disruptor/src/test/java/org/apache/camel/component/disruptor/vm/SameDisruptorVmQueueSizeAndNoSizeTest.java
 
b/components/camel-disruptor/src/test/java/org/apache/camel/component/disruptor/vm/SameDisruptorVmQueueSizeAndNoSizeTest.java
new file mode 100644
index 0000000..dcf152b
--- /dev/null
+++ 
b/components/camel-disruptor/src/test/java/org/apache/camel/component/disruptor/vm/SameDisruptorVmQueueSizeAndNoSizeTest.java
@@ -0,0 +1,79 @@
+/**
+ * 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.disruptor.vm;
+
+import org.apache.camel.CamelExecutionException;
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.ResolveEndpointFailedException;
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ *
+ */
+public class SameDisruptorVmQueueSizeAndNoSizeTest extends ContextTestSupport {
+
+    public void testSameQueue() throws Exception {
+        for (int i = 0; i < 128; i++) {
+            template.sendBody("disruptor-vm:foo?blockWhenFull=false", "" + i);
+        }
+
+        try {
+            template.sendBody("disruptor-vm:foo?blockWhenFull=false", "Should 
be full now");
+            fail("Should fail");
+        } catch (CamelExecutionException e) {
+            IllegalStateException ise = 
assertIsInstanceOf(IllegalStateException.class, e.getCause());
+            assertEquals("Disruptors ringbuffer was full", ise.getMessage());
+        }
+    }
+
+    public void testSameQueueDifferentSize() throws Exception {
+        try {
+            template.sendBody("disruptor-vm:foo?size=256", "Should fail");
+            fail("Should fail");
+        } catch (ResolveEndpointFailedException e) {
+            IllegalArgumentException ise = 
assertIsInstanceOf(IllegalArgumentException.class, e.getCause());
+            assertEquals(
+                    "Cannot use existing queue disruptor-vm://foo as the 
existing queue size 128 does not match given queue size 256",
+                    ise.getMessage());
+        }
+    }
+
+    public void testSameQueueDifferentSizeBar() throws Exception {
+        try {
+            template.sendBody("disruptor-vm:bar?size=256", "Should fail");
+            fail("Should fail");
+        } catch (ResolveEndpointFailedException e) {
+            IllegalArgumentException ise = 
assertIsInstanceOf(IllegalArgumentException.class, e.getCause());
+            assertEquals("Cannot use existing queue disruptor-vm://bar as the 
existing queue size " + 1024
+                    + " does not match given queue size 256", 
ise.getMessage());
+        }
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                
from("disruptor-vm:foo?size=128&blockWhenFull=false").routeId("foo").noAutoStartup()
+                        .to("mock:foo");
+
+                from("disruptor-vm:bar").routeId("bar").noAutoStartup()
+                        .to("mock:bar");
+            }
+        };
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/6d05326f/components/camel-disruptor/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/components/camel-disruptor/src/test/resources/log4j.properties 
b/components/camel-disruptor/src/test/resources/log4j.properties
new file mode 100644
index 0000000..285eb27
--- /dev/null
+++ b/components/camel-disruptor/src/test/resources/log4j.properties
@@ -0,0 +1,30 @@
+#
+# 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.
+#
+log4j.rootLogger=INFO, file
+
+# File appender
+log4j.appender.file=org.apache.log4j.FileAppender
+log4j.appender.file.layout=org.apache.log4j.PatternLayout
+log4j.appender.file.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - 
%m%n
+log4j.appender.file.file=target/camel-disruptor-test.log
+log4j.appender.file.append=true
+
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.conversionPattern=%d{HH:mm:ss,SSS} - %-5p - 
%16.16t - %50.50c # %m%n
+
+#log4j.logger.org.apache.camel.component.disruptor = DEBUG
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/6d05326f/components/pom.xml
----------------------------------------------------------------------
diff --git a/components/pom.xml b/components/pom.xml
index af6bbc2..df1304a 100644
--- a/components/pom.xml
+++ b/components/pom.xml
@@ -73,6 +73,7 @@
     <module>camel-couchdb</module>
     <module>camel-crypto</module>
     <module>camel-csv</module>
+    <module>camel-disruptor</module>
     <module>camel-dns</module>
     <module>camel-dozer</module>
     <module>camel-eclipse</module>

http://git-wip-us.apache.org/repos/asf/camel/blob/6d05326f/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index 807afb0..d352cad 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -108,6 +108,7 @@
     <cxf-xjc-utils-version>2.6.0</cxf-xjc-utils-version>
     <deltaspike-version>0.3-incubating</deltaspike-version>
     <derby-version>10.10.1.1</derby-version>
+    <disruptor.version>3.0.1</disruptor.version>
     <dnsjava-version>2.1.1</dnsjava-version>
     <dnsjava-bundle-version>2.1.1_1</dnsjava-bundle-version>
     <dom4j-bundle-version>1.6.1_5</dom4j-bundle-version>
@@ -597,6 +598,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-disruptor</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-dns</artifactId>
         <version>${project.version}</version>
       </dependency>
@@ -1586,6 +1592,13 @@
         <version>${castor-bundle-version}</version>
       </dependency>
 
+      <!-- optional disruptor dependencies -->
+      <dependency>
+        <groupId>com.lmax</groupId>
+        <artifactId>disruptor</artifactId>
+        <version>${disruptor.version}</version>
+      </dependency>
+
       <!-- optional dozer dependencies -->
       <dependency>
         <groupId>net.sf.dozer</groupId>

Reply via email to