Author: davsclaus Date: Thu Oct 1 11:58:36 2009 New Revision: 820620 URL: http://svn.apache.org/viewvc?rev=820620&view=rev Log: MR-187: Added more unit tests.
Added: camel/trunk/camel-core/src/test/java/org/apache/camel/component/browse/BrowseEndpointTest.java (with props) camel/trunk/camel-core/src/test/java/org/apache/camel/component/direct/DirectEndpointTest.java (with props) camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerDelayTest.java (with props) camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerEndpointTest.java (with props) Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/browse/BrowseEndpoint.java camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerWithTimeOptionTest.java Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/browse/BrowseEndpoint.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/browse/BrowseEndpoint.java?rev=820620&r1=820619&r2=820620&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/component/browse/BrowseEndpoint.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/browse/BrowseEndpoint.java Thu Oct 1 11:58:36 2009 @@ -16,8 +16,6 @@ */ package org.apache.camel.component.browse; -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; @@ -30,6 +28,7 @@ import org.apache.camel.Service; import org.apache.camel.impl.DefaultEndpoint; import org.apache.camel.impl.DefaultProducer; +import org.apache.camel.processor.loadbalancer.LoadBalancer; import org.apache.camel.processor.loadbalancer.LoadBalancerConsumer; import org.apache.camel.processor.loadbalancer.TopicLoadBalancer; import org.apache.camel.spi.BrowsableEndpoint; @@ -42,9 +41,10 @@ */ public class BrowseEndpoint extends DefaultEndpoint implements BrowsableEndpoint, Service { private List<Exchange> exchanges; - private TopicLoadBalancer loadBalancer = new TopicLoadBalancer(); - // TODO: firing of property changes not implemented - private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this); + private final LoadBalancer loadBalancer = new TopicLoadBalancer(); + + public BrowseEndpoint() { + } public BrowseEndpoint(String uri, CamelContext camelContext) { super(uri, camelContext); @@ -63,21 +63,12 @@ } public List<Exchange> getExchanges() { + if (exchanges == null) { + exchanges = createExchangeList(); + } return exchanges; } - public TopicLoadBalancer getLoadBalancer() { - return loadBalancer; - } - - public void addPropertyChangeListener(PropertyChangeListener listener) { - propertyChangeSupport.addPropertyChangeListener(listener); - } - - public void removePropertyChangeListener(PropertyChangeListener listener) { - propertyChangeSupport.removePropertyChangeListener(listener); - } - public Producer createProducer() throws Exception { return new DefaultProducer(this) { public void process(Exchange exchange) throws Exception { @@ -101,7 +92,7 @@ * @throws Exception is thrown if failed to process the exchange */ protected void onExchange(Exchange exchange) throws Exception { - exchanges.add(exchange); + getExchanges().add(exchange); // lets fire any consumers loadBalancer.process(exchange); Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java?rev=820620&r1=820619&r2=820620&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java Thu Oct 1 11:58:36 2009 @@ -69,13 +69,13 @@ } } else { if (endpoint.getTime() != null) { - if (endpoint.getPeriod() >= 0) { + if (endpoint.getPeriod() > 0) { timer.schedule(task, endpoint.getTime(), endpoint.getPeriod()); } else { timer.schedule(task, endpoint.getTime()); } } else { - if (endpoint.getPeriod() >= 0) { + if (endpoint.getPeriod() > 0) { timer.schedule(task, endpoint.getDelay(), endpoint.getPeriod()); } else { timer.schedule(task, endpoint.getDelay()); Added: camel/trunk/camel-core/src/test/java/org/apache/camel/component/browse/BrowseEndpointTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/browse/BrowseEndpointTest.java?rev=820620&view=auto ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/component/browse/BrowseEndpointTest.java (added) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/browse/BrowseEndpointTest.java Thu Oct 1 11:58:36 2009 @@ -0,0 +1,83 @@ +/** + * 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.browse; + +import org.apache.camel.ContextTestSupport; +import org.apache.camel.builder.RouteBuilder; + +/** + * @version $Revision$ + */ +public class BrowseEndpointTest extends ContextTestSupport { + + @Override + public boolean isUseRouteBuilder() { + return false; + } + + public void testBrowseEndpoint() throws Exception { + final BrowseEndpoint be = new BrowseEndpoint("browse://foo"); + be.setCamelContext(context); + + context.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + from("direct:start").to(be); + } + }); + context.start(); + + template.sendBody("direct:start", "Hello World"); + + assertEquals(1, be.getExchanges().size()); + } + + public void testBrowseEndpointAnother() throws Exception { + final BrowseEndpoint be = new BrowseEndpoint(); + be.setCamelContext(context); + be.setEndpointUriIfNotSpecified("browse://foo"); + + context.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + from("direct:start").to(be); + } + }); + context.start(); + + template.sendBody("direct:start", "Hello World"); + + assertEquals(1, be.getExchanges().size()); + } + + public void testBrowseEndpointYetAnother() throws Exception { + final BrowseEndpoint be = new BrowseEndpoint("browse://foo", context); + + context.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + from("direct:start").to(be); + } + }); + context.start(); + + template.sendBody("direct:start", "Hello World"); + + assertEquals(1, be.getExchanges().size()); + } + +} \ No newline at end of file Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/component/browse/BrowseEndpointTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/component/browse/BrowseEndpointTest.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: camel/trunk/camel-core/src/test/java/org/apache/camel/component/direct/DirectEndpointTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/direct/DirectEndpointTest.java?rev=820620&view=auto ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/component/direct/DirectEndpointTest.java (added) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/direct/DirectEndpointTest.java Thu Oct 1 11:58:36 2009 @@ -0,0 +1,75 @@ +/** + * 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.direct; + +import org.apache.camel.ContextTestSupport; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.mock.MockEndpoint; + +/** + * @version $Revision$ + */ +public class DirectEndpointTest extends ContextTestSupport { + + @Override + public boolean isUseRouteBuilder() { + return false; + } + + public void testDirectEndpoint() throws Exception { + final DirectEndpoint de = new DirectEndpoint(); + de.setCamelContext(context); + de.setEndpointUriIfNotSpecified("direct://foo"); + + context.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + from(de).to("mock:result"); + } + }); + context.start(); + + MockEndpoint mock = getMockEndpoint("mock:result"); + mock.expectedMessageCount(1); + + template.sendBody(de, "Hello World"); + + assertMockEndpointsSatisfied(); + } + + public void testDirectEndpointAgain() throws Exception { + final DirectEndpoint de = new DirectEndpoint("direct://foo"); + de.setCamelContext(context); + de.setAllowMultipleConsumers(false); + + context.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + from(de).to("mock:result"); + } + }); + context.start(); + + MockEndpoint mock = getMockEndpoint("mock:result"); + mock.expectedMessageCount(1); + + template.sendBody(de, "Hello World"); + + assertMockEndpointsSatisfied(); + } + +} Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/component/direct/DirectEndpointTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/component/direct/DirectEndpointTest.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerDelayTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerDelayTest.java?rev=820620&view=auto ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerDelayTest.java (added) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerDelayTest.java Thu Oct 1 11:58:36 2009 @@ -0,0 +1,44 @@ +/** + * 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.timer; + +import org.apache.camel.ContextTestSupport; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.mock.MockEndpoint; + +/** + * @version $Revision$ + */ +public class TimerDelayTest extends ContextTestSupport { + + public void testDelay() throws Exception { + MockEndpoint mock = getMockEndpoint("mock:result"); + mock.expectedMinimumMessageCount(1); + + assertMockEndpointsSatisfied(); + } + + @Override + protected RouteBuilder createRouteBuilder() throws Exception { + return new RouteBuilder() { + @Override + public void configure() throws Exception { + from("timer://foo?delay=500&period=0").to("mock:result"); + } + }; + } +} Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerDelayTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerDelayTest.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerEndpointTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerEndpointTest.java?rev=820620&view=auto ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerEndpointTest.java (added) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerEndpointTest.java Thu Oct 1 11:58:36 2009 @@ -0,0 +1,103 @@ +/** + * 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.timer; + +import java.util.Timer; + +import org.apache.camel.ContextTestSupport; +import org.apache.camel.RuntimeCamelException; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.mock.MockEndpoint; + +/** + * @version $Revision$ + */ +public class TimerEndpointTest extends ContextTestSupport { + + @Override + public boolean isUseRouteBuilder() { + return false; + } + + public void testTimerEndpoint() throws Exception { + final TimerEndpoint te = new TimerEndpoint(); + te.setCamelContext(context); + te.setTimer(new Timer(true)); + te.setEndpointUriIfNotSpecified("timer://foo"); + + context.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + from(te).to("mock:result"); + } + }); + context.start(); + + MockEndpoint mock = getMockEndpoint("mock:result"); + mock.expectedMinimumMessageCount(1); + + assertMockEndpointsSatisfied(); + } + + public void testTimerEndpointAgain() throws Exception { + final TimerEndpoint te = new TimerEndpoint("timer://foo"); + te.setTimer(new Timer(true)); + te.setCamelContext(context); + + context.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + from(te).to("mock:result"); + } + }); + context.start(); + + MockEndpoint mock = getMockEndpoint("mock:result"); + mock.expectedMinimumMessageCount(1); + + assertMockEndpointsSatisfied(); + } + + public void testTimerEndpointYetAgain() throws Exception { + final TimerEndpoint te = new TimerEndpoint("timer://foo", new Timer(true)); + te.setCamelContext(context); + + context.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + from(te).to("mock:result"); + } + }); + context.start(); + + MockEndpoint mock = getMockEndpoint("mock:result"); + mock.expectedMinimumMessageCount(1); + + assertMockEndpointsSatisfied(); + } + + public void testTimerEndpointNoProducer() throws Exception { + TimerEndpoint te = new TimerEndpoint("timer://foo"); + try { + te.createProducer(); + fail("Should have thrown an exception"); + } catch (RuntimeCamelException e) { + // expected + } + } + +} Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerEndpointTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerEndpointTest.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerWithTimeOptionTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerWithTimeOptionTest.java?rev=820620&r1=820619&r2=820620&view=diff ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerWithTimeOptionTest.java (original) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/timer/TimerWithTimeOptionTest.java Thu Oct 1 11:58:36 2009 @@ -55,6 +55,46 @@ assertMockEndpointsSatisfied(); } + public void testFiredInFutureWithTPatternNoPeriod() throws Exception { + context.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + Date future = new Date(new Date().getTime() + 2000); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); + String time = sdf.format(future); + + fromF("timer://foo?period=0&time=%s", time).to("mock:result"); + } + }); + context.start(); + + MockEndpoint mock = getMockEndpoint("mock:result"); + mock.expectedMessageCount(1); + + assertMockEndpointsSatisfied(); + } + + public void testFiredInFutureWithTPatternFixedReat() throws Exception { + context.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + Date future = new Date(new Date().getTime() + 2000); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); + String time = sdf.format(future); + + fromF("timer://foo?fixedRate=true&time=%s", time).to("mock:result"); + } + }); + context.start(); + + MockEndpoint mock = getMockEndpoint("mock:result"); + mock.expectedMessageCount(1); + + assertMockEndpointsSatisfied(); + } + public void testFiredInFutureWithoutTPattern() throws Exception { context.addRoutes(new RouteBuilder() { @Override