You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ch...@apache.org on 2007/08/21 16:21:53 UTC
svn commit: r568144 - in /activemq/camel/trunk/components/camel-activemq/src:
main/java/org/apache/camel/component/activemq/
test/java/org/apache/camel/component/activemq/
Author: chirino
Date: Tue Aug 21 07:21:52 2007
New Revision: 568144
URL: http://svn.apache.org/viewvc?rev=568144&view=rev
Log:
Better journal tests and also add a little performance benchmark to get an idea of what you can expect from the journal
Added:
activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/JournalRoutePerformance.java (with props)
Modified:
activemq/camel/trunk/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/JournalEndpoint.java
activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/JournalConfigureTest.java
activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/JournalRouteTest.java
Modified: activemq/camel/trunk/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/JournalEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/JournalEndpoint.java?rev=568144&r1=568143&r2=568144&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/JournalEndpoint.java (original)
+++ activemq/camel/trunk/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/JournalEndpoint.java Tue Aug 21 07:21:52 2007
@@ -222,4 +222,9 @@
this.syncProduce = syncProduce;
}
+ boolean isOpen() {
+ synchronized (activationMutex) {
+ return referenceCount > 0;
+ }
+ }
}
Modified: activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/JournalConfigureTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/JournalConfigureTest.java?rev=568144&r1=568143&r2=568144&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/JournalConfigureTest.java (original)
+++ activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/JournalConfigureTest.java Tue Aug 21 07:21:52 2007
@@ -25,17 +25,17 @@
* @version $Revision$
*/
public class JournalConfigureTest extends ContextTestSupport {
-
+
public void testDefaltConfig() throws Exception {
- JournalEndpoint endpoint = resolveMandatoryEndpoint("activemq.journal:test");
- assertEquals("directory", new File("test"), endpoint.getDirectory());
+ JournalEndpoint endpoint = resolveMandatoryEndpoint("activemq.journal:target/test");
+ assertEquals("directory", new File("target", "test"), endpoint.getDirectory());
assertEquals("syncConsume", false, endpoint.isSyncConsume());
assertEquals("syncProduce", true, endpoint.isSyncProduce());
}
public void testConfigViaOptions() throws Exception {
- JournalEndpoint endpoint = resolveMandatoryEndpoint("activemq.journal:test?syncConsume=true&syncProduce=false");
- assertEquals("directory", new File("test"), endpoint.getDirectory());
+ JournalEndpoint endpoint = resolveMandatoryEndpoint("activemq.journal:target/test?syncConsume=true&syncProduce=false");
+ assertEquals("directory", new File("target", "test"), endpoint.getDirectory());
assertEquals("syncConsume", true, endpoint.isSyncConsume());
assertEquals("syncProduce", false, endpoint.isSyncProduce());
}
@@ -45,4 +45,4 @@
Endpoint endpoint = super.resolveMandatoryEndpoint(uri);
return assertIsInstanceOf(JournalEndpoint.class, endpoint);
}
-}
\ No newline at end of file
+}
Added: activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/JournalRoutePerformance.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/JournalRoutePerformance.java?rev=568144&view=auto
==============================================================================
--- activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/JournalRoutePerformance.java (added)
+++ activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/JournalRoutePerformance.java Tue Aug 21 07:21:52 2007
@@ -0,0 +1,99 @@
+/**
+ * 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.activemq;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicLong;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ * Used to get an idea of what kind of performance can be expected from
+ * the journal.
+ *
+ * @version $Revision$
+ */
+public class JournalRoutePerformance extends ContextTestSupport {
+
+ AtomicLong produceCounter = new AtomicLong();
+ AtomicLong consumeCounter = new AtomicLong();
+ AtomicBoolean running = new AtomicBoolean(true);
+
+ public void testPerformance() throws Exception {
+
+ int payLoadSize = 1024;
+ int concurrentProducers = 50;
+ long delayBetweenSample = 1000;
+ long perfTestDuration = 1000 * 60; // 1 min
+
+ StringBuffer t = new StringBuffer();
+ for (int i = 0; i < payLoadSize; i++) {
+ t.append('a' + (i % 26));
+ }
+ final byte[] payload = t.toString().getBytes("UTF-8");
+
+ for (int i = 0; i < concurrentProducers; i++) {
+ Thread thread = new Thread("Producer: " + i) {
+ @Override
+ public void run() {
+ while (running.get()) {
+ template.sendBody("direct:in", payload);
+ produceCounter.incrementAndGet();
+ }
+ }
+ };
+ thread.start();
+ }
+
+ long produceTotal = 0;
+ long consumeTotal = 0;
+ long start = System.currentTimeMillis();
+ long end = start + perfTestDuration;
+ while (System.currentTimeMillis() < end) {
+ Thread.sleep(delayBetweenSample);
+ long totalTime = System.currentTimeMillis() - start;
+ long p = produceCounter.getAndSet(0);
+ long c = consumeCounter.getAndSet(0);
+ produceTotal += p;
+ consumeTotal += c;
+ System.out.println("Interval Produced " + stat(p, delayBetweenSample) + " m/s, Consumed " + stat(c, delayBetweenSample) + " m/s");
+ System.out.println("Total Produced " + stat(produceTotal, totalTime) + " m/s, Consumed " + stat(consumeTotal, totalTime) + " m/s");
+ }
+ running.set(false);
+
+ }
+
+ private String stat(long pd, long delayBetweenSample) {
+ return "" + (1.0 * pd / delayBetweenSample) * 1000.0;
+ }
+
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ public void configure() throws Exception {
+ from("direct:in").to("activemq.journal:target/perf-test");
+ from("activemq.journal:target/perf-test").process(new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ consumeCounter.incrementAndGet();
+ }
+ });
+ }
+ };
+ }
+}
Propchange: activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/JournalRoutePerformance.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/JournalRoutePerformance.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/JournalRouteTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/JournalRouteTest.java?rev=568144&r1=568143&r2=568144&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/JournalRouteTest.java (original)
+++ activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/JournalRouteTest.java Tue Aug 21 07:21:52 2007
@@ -30,20 +30,20 @@
*/
public class JournalRouteTest extends ContextTestSupport {
- public void testForwardingAMessageAcrossJMSKeepingCustomJMSHeaders() throws Exception {
+ public void testSimpleJournalRoute() throws Exception {
byte[] payload = "Hello World".getBytes();
- MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
+ MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:out", MockEndpoint.class);
resultEndpoint.expectedMessageCount(1);
AssertionClause firstMessageExpectations = resultEndpoint.message(0);
- firstMessageExpectations.header("journal").isEqualTo("activemq.journal:test.a");
+ firstMessageExpectations.header("journal").isEqualTo("activemq.journal:target/test.a");
firstMessageExpectations.header("location").isNotNull();
firstMessageExpectations.body().isInstanceOf(ByteSequence.class);
- template.sendBody("direct:test.a", payload);
+ template.sendBody("direct:in", payload);
resultEndpoint.assertIsSatisfied();
@@ -57,8 +57,8 @@
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
public void configure() throws Exception {
- from("direct:test.a").to("activemq.journal:test.a");
- from("activemq.journal:test.a").to("mock:result");
+ from("direct:in").to("activemq.journal:target/test.a");
+ from("activemq.journal:target/test.a").to("mock:out");
}
};
}