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 2010/09/16 08:37:18 UTC
svn commit: r997603 - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/impl/
tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/file/
Author: davsclaus
Date: Thu Sep 16 06:37:18 2010
New Revision: 997603
URL: http://svn.apache.org/viewvc?rev=997603&view=rev
Log:
Added osgi test for file consumer.
Added:
camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/file/
camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/file/FileRouteDelayTest.java
camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/file/FileRouteTest.java
- copied, changed from r997316, camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/hawtdb/HawtDBAggregateRouteTest.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollConsumer.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollConsumer.java?rev=997603&r1=997602&r2=997603&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollConsumer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ScheduledPollConsumer.java Thu Sep 16 06:37:18 2010
@@ -184,8 +184,16 @@ public abstract class ScheduledPollConsu
protected void doStart() throws Exception {
super.doStart();
if (isUseFixedDelay()) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Scheduling poll (fixed delay) with initialDelay: " + getInitialDelay() + ", delay: " + getDelay()
+ + " (" + getTimeUnit().name().toLowerCase() + ") for: " + getEndpoint());
+ }
future = executor.scheduleWithFixedDelay(this, getInitialDelay(), getDelay(), getTimeUnit());
} else {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Scheduling poll (fixed rate) with initialDelay: " + getInitialDelay() + ", delay: " + getDelay()
+ + " (" + getTimeUnit().name().toLowerCase() + ") for: " + getEndpoint());
+ }
future = executor.scheduleAtFixedRate(this, getInitialDelay(), getDelay(), getTimeUnit());
}
}
Added: camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/file/FileRouteDelayTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/file/FileRouteDelayTest.java?rev=997603&view=auto
==============================================================================
--- camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/file/FileRouteDelayTest.java (added)
+++ camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/file/FileRouteDelayTest.java Thu Sep 16 06:37:18 2010
@@ -0,0 +1,94 @@
+/**
+ * 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.itest.osgi.file;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.itest.osgi.OSGiIntegrationTestSupport;
+import org.apache.camel.util.StopWatch;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.Configuration;
+import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+
+import static org.ops4j.pax.exam.CoreOptions.equinox;
+import static org.ops4j.pax.exam.CoreOptions.felix;
+import static org.ops4j.pax.exam.CoreOptions.options;
+import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.profile;
+import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.scanFeatures;
+import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.workingDirectory;
+
+@RunWith(JUnit4TestRunner.class)
+public class FileRouteDelayTest extends OSGiIntegrationTestSupport {
+
+ @Test
+ public void testFileRouteDelay() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:result");
+ mock.expectedBodiesReceivedInAnyOrder("Hello World", "Bye World");
+ // should be moved to .camel when done
+ mock.expectedFileExists("target/data/.camel/hello.txt");
+ mock.expectedFileExists("target/data/.camel/bye.txt");
+
+ StopWatch watch = new StopWatch();
+
+ template.sendBodyAndHeader("file:target/data", "Hello World", Exchange.FILE_NAME, "hello.txt");
+
+ Thread.sleep(3000);
+
+ template.sendBodyAndHeader("file:target/data", "Bye World", Exchange.FILE_NAME, "bye.txt");
+
+ assertMockEndpointsSatisfied();
+
+ long delta = watch.stop();
+ assertTrue("Should take 6 sec or longer, was " + delta, delta > 5500);
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ // delete the data directory
+ deleteDirectory("target/data");
+
+ from("file:target/data?delay=6000").convertBodyTo(String.class).to("mock:result");
+ }
+ };
+ }
+
+ @Configuration
+ public static Option[] configure() {
+ Option[] options = options(
+ // install the spring dm profile
+ profile("spring.dm").version("1.2.0"),
+ // this is how you set the default log level when using pax logging (logProfile)
+ org.ops4j.pax.exam.CoreOptions.systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
+
+ // using the features to install the camel components
+ scanFeatures(getCamelKarafFeatureUrl(),
+ "camel-core", "camel-spring", "camel-test"),
+
+ workingDirectory("target/paxrunner/"),
+
+ felix(), equinox());
+
+ return options;
+ }
+
+}
Copied: camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/file/FileRouteTest.java (from r997316, camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/hawtdb/HawtDBAggregateRouteTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/file/FileRouteTest.java?p2=camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/file/FileRouteTest.java&p1=camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/hawtdb/HawtDBAggregateRouteTest.java&r1=997316&r2=997603&rev=997603&view=diff
==============================================================================
--- camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/hawtdb/HawtDBAggregateRouteTest.java (original)
+++ camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/file/FileRouteTest.java Thu Sep 16 06:37:18 2010
@@ -14,16 +14,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.itest.osgi.hawtdb;
-
-import java.util.concurrent.TimeUnit;
+package org.apache.camel.itest.osgi.file;
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.hawtdb.HawtDBAggregationRepository;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.itest.osgi.OSGiIntegrationTestSupport;
-import org.apache.camel.processor.aggregate.AggregationStrategy;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.ops4j.pax.exam.Option;
@@ -31,29 +27,25 @@ import org.ops4j.pax.exam.junit.Configur
import org.ops4j.pax.exam.junit.JUnit4TestRunner;
import static org.ops4j.pax.exam.CoreOptions.equinox;
+import static org.ops4j.pax.exam.CoreOptions.felix;
import static org.ops4j.pax.exam.CoreOptions.options;
import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.profile;
import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.scanFeatures;
import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.workingDirectory;
@RunWith(JUnit4TestRunner.class)
-public class HawtDBAggregateRouteTest extends OSGiIntegrationTestSupport {
+public class FileRouteTest extends OSGiIntegrationTestSupport {
@Test
- public void testHawtDBAggregateRoute() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:aggregated");
- mock.expectedBodiesReceived("ABCDE");
-
- template.sendBodyAndHeader("direct:start", "A", "id", 123);
- template.sendBodyAndHeader("direct:start", "B", "id", 123);
- template.sendBodyAndHeader("direct:start", "C", "id", 123);
- template.sendBodyAndHeader("direct:start", "D", "id", 123);
- template.sendBodyAndHeader("direct:start", "E", "id", 123);
+ public void testFileRoute() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:result");
+ mock.expectedBodiesReceived("Hello World");
+ // should be moved to .camel when done
+ mock.expectedFileExists("target/data/.camel/hello.txt");
- assertMockEndpointsSatisfied(30, TimeUnit.SECONDS);
+ template.sendBodyAndHeader("file:target/data", "Hello World", Exchange.FILE_NAME, "hello.txt");
- // from endpoint should be preserved
- assertEquals("direct://start", mock.getReceivedExchanges().get(0).getFromEndpoint().getEndpointUri());
+ assertMockEndpointsSatisfied();
}
@Override
@@ -64,33 +56,11 @@ public class HawtDBAggregateRouteTest ex
// delete the data directory
deleteDirectory("target/data");
- // create the hawtdb repo
- HawtDBAggregationRepository repo = new HawtDBAggregationRepository("repo1", "target/data/hawtdb.dat");
-
- // here is the Camel route where we aggregate
- from("direct:start")
- .aggregate(header("id"), new MyAggregationStrategy())
- // use our created hawtdb repo as aggregation repository
- .completionSize(5).aggregationRepository(repo)
- .to("mock:aggregated");
+ from("file:target/data").convertBodyTo(String.class).to("mock:result");
}
};
}
- public static class MyAggregationStrategy implements AggregationStrategy {
-
- public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
- if (oldExchange == null) {
- return newExchange;
- }
- String body1 = oldExchange.getIn().getBody(String.class);
- String body2 = newExchange.getIn().getBody(String.class);
-
- oldExchange.getIn().setBody(body1 + body2);
- return oldExchange;
- }
- }
-
@Configuration
public static Option[] configure() {
Option[] options = options(
@@ -101,11 +71,11 @@ public class HawtDBAggregateRouteTest ex
// using the features to install the camel components
scanFeatures(getCamelKarafFeatureUrl(),
- "camel-core", "camel-spring", "camel-test", "camel-hawtdb"),
+ "camel-core", "camel-spring", "camel-test"),
workingDirectory("target/paxrunner/"),
- equinox());
+ felix(), equinox());
return options;
}