You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by jc...@apache.org on 2013/10/10 05:17:28 UTC
git commit: CAMEL-6826: Use Mock Objects Instead of Live
HazelcastInstances to Speed Up Testing - Fixing spring tests.
Updated Branches:
refs/heads/master 69998cb1f -> dae6366cc
CAMEL-6826: Use Mock Objects Instead of Live HazelcastInstances to Speed Up Testing
- Fixing spring tests.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/dae6366c
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/dae6366c
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/dae6366c
Branch: refs/heads/master
Commit: dae6366cc50b04ece05897d9a3e0648c6ee86ea7
Parents: 69998cb
Author: James Carman <jc...@apache.org>
Authored: Wed Oct 9 23:17:04 2013 -0400
Committer: James Carman <jc...@apache.org>
Committed: Wed Oct 9 23:17:04 2013 -0400
----------------------------------------------------------------------
...elcastAtomicnumberProducerForSpringTest.java | 50 +++++++++----
.../HazelcastCamelSpringTestSupport.java | 60 ++++++++++++++++
.../hazelcast/HazelcastErrorMessagesTest.java | 2 +-
.../HazelcastMapProducerForSpringTest.java | 74 ++++++++++----------
.../HazelcastMultimapProducerForSpringTest.java | 69 +++++++++---------
.../META-INF/spring/test-camel-context-map.xml | 8 ---
.../spring/test-camel-context-multimap.xml | 8 +--
7 files changed, 169 insertions(+), 102 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/dae6366c/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastAtomicnumberProducerForSpringTest.java
----------------------------------------------------------------------
diff --git a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastAtomicnumberProducerForSpringTest.java b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastAtomicnumberProducerForSpringTest.java
index 589aeae..481e910 100644
--- a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastAtomicnumberProducerForSpringTest.java
+++ b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastAtomicnumberProducerForSpringTest.java
@@ -16,12 +16,39 @@
*/
package org.apache.camel.component.hazelcast;
+import com.hazelcast.core.HazelcastInstance;
+import com.hazelcast.core.IAtomicLong;
import org.apache.camel.test.spring.CamelSpringTestSupport;
+import org.junit.After;
import org.junit.Test;
+import org.mockito.Mock;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
-public class HazelcastAtomicnumberProducerForSpringTest extends CamelSpringTestSupport {
+import static org.mockito.Mockito.atLeastOnce;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.when;
+
+public class HazelcastAtomicnumberProducerForSpringTest extends HazelcastCamelSpringTestSupport {
+
+ @Mock
+ private IAtomicLong atomicNumber;
+
+ @Override
+ protected void trainHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ when(hazelcastInstance.getAtomicLong("foo")).thenReturn(atomicNumber);
+ }
+
+ @Override
+ protected void verifyHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ verify(hazelcastInstance, atLeastOnce()).getAtomicLong("foo");
+ }
+
+ @After
+ public void verifyAtomicNumberMock() {
+ verifyNoMoreInteractions(atomicNumber);
+ }
@Override
protected AbstractApplicationContext createApplicationContext() {
@@ -31,42 +58,37 @@ public class HazelcastAtomicnumberProducerForSpringTest extends CamelSpringTestS
@Test
public void testSet() {
template.sendBody("direct:set", 4711);
-
- long body = template.requestBody("direct:get", null, Long.class);
- assertEquals(4711, body);
+ verify(atomicNumber).set(4711);
}
@Test
public void testGet() {
- template.sendBody("direct:set", 1234);
-
+ when(atomicNumber.get()).thenReturn(1234L);
long body = template.requestBody("direct:get", null, Long.class);
+ verify(atomicNumber).get();
assertEquals(1234, body);
}
@Test
public void testIncrement() {
- template.sendBody("direct:set", 10);
-
+ when(atomicNumber.incrementAndGet()).thenReturn(11L);
long body = template.requestBody("direct:increment", null, Long.class);
+ verify(atomicNumber).incrementAndGet();
assertEquals(11, body);
}
@Test
public void testDecrement() {
- template.sendBody("direct:set", 10);
-
+ when(atomicNumber.decrementAndGet()).thenReturn(9L);
long body = template.requestBody("direct:decrement", null, Long.class);
+ verify(atomicNumber).decrementAndGet();
assertEquals(9, body);
}
@Test
public void testDestroy() throws InterruptedException {
- template.sendBody("direct:set", 10);
template.sendBody("direct:destroy", null);
- long body = template.requestBody("direct:get", null, Long.class);
- // the body is destory
- assertEquals(0, body);
+ verify(atomicNumber).destroy();
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/dae6366c/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastCamelSpringTestSupport.java
----------------------------------------------------------------------
diff --git a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastCamelSpringTestSupport.java b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastCamelSpringTestSupport.java
new file mode 100644
index 0000000..b1fbd3e
--- /dev/null
+++ b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastCamelSpringTestSupport.java
@@ -0,0 +1,60 @@
+/**
+ * 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.hazelcast;
+
+import com.hazelcast.core.HazelcastInstance;
+import org.apache.camel.CamelContext;
+import org.apache.camel.test.junit4.CamelSpringTestSupport;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.After;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+public abstract class HazelcastCamelSpringTestSupport extends CamelSpringTestSupport {
+
+ @Mock
+ private HazelcastInstance hazelcastInstance;
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ CamelContext context = super.createCamelContext();
+ HazelcastComponent hazelcastComponent = new HazelcastComponent(context);
+ hazelcastComponent.setHazelcastInstance(hazelcastInstance);
+ context.addComponent("hazelcast", hazelcastComponent);
+ trainHazelcastInstance(hazelcastInstance);
+ return context;
+ }
+
+ protected void trainHazelcastInstance(HazelcastInstance hazelcastInstance) {
+
+ }
+
+ protected void verifyHazelcastInstance(HazelcastInstance hazelcastInstance) {
+
+ }
+
+ @After
+ public final void verifyHazelcastInstanceMock() {
+ verifyHazelcastInstance(hazelcastInstance);
+ verifyNoMoreInteractions(hazelcastInstance);
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/dae6366c/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastErrorMessagesTest.java
----------------------------------------------------------------------
diff --git a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastErrorMessagesTest.java b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastErrorMessagesTest.java
index 56cc60f..a149fdb 100644
--- a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastErrorMessagesTest.java
+++ b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastErrorMessagesTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;
-public class HazelcastErrorMessagesTest extends CamelTestSupport {
+public class HazelcastErrorMessagesTest extends HazelcastCamelTestSupport {
@Test
public void testUriPrefix() {
http://git-wip-us.apache.org/repos/asf/camel/blob/dae6366c/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMapProducerForSpringTest.java
----------------------------------------------------------------------
diff --git a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMapProducerForSpringTest.java b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMapProducerForSpringTest.java
index 5493be0..cef3e4a 100644
--- a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMapProducerForSpringTest.java
+++ b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMapProducerForSpringTest.java
@@ -16,31 +16,45 @@
*/
package org.apache.camel.component.hazelcast;
-import java.io.Serializable;
+import java.util.Arrays;
import java.util.Collection;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IMap;
+import com.hazelcast.query.SqlPredicate;
import org.apache.camel.component.hazelcast.testutil.Dummy;
-import org.apache.camel.test.spring.CamelSpringTestSupport;
+import org.junit.After;
import org.junit.Test;
+import org.mockito.Mock;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
-public class HazelcastMapProducerForSpringTest extends CamelSpringTestSupport implements Serializable {
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.atLeastOnce;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.when;
- private static final long serialVersionUID = 1L;
- private IMap<Long, Object> map;
+public class HazelcastMapProducerForSpringTest extends HazelcastCamelSpringTestSupport {
+
+ @Mock
+ private IMap<Object, Object> map;
@Override
- protected void doPostSetup() throws Exception {
- super.doPostSetup();
- HazelcastComponent component = context().getComponent("hazelcast", HazelcastComponent.class);
- HazelcastInstance hazelcastInstance = component.getHazelcastInstance();
- this.map = hazelcastInstance.getMap("foo");
- this.map.clear();
+ protected void trainHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ when(hazelcastInstance.getMap("foo")).thenReturn(map);
+ }
+
+ @Override
+ protected void verifyHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ verify(hazelcastInstance, atLeastOnce()).getMap("foo");
+ }
+
+ @After
+ public void verifyMapMock() {
+ verifyNoMoreInteractions(map);
}
@Override
@@ -51,27 +65,22 @@ public class HazelcastMapProducerForSpringTest extends CamelSpringTestSupport im
@Test
public void testPut() throws InterruptedException {
template.sendBodyAndHeader("direct:put", "my-foo", HazelcastConstants.OBJECT_ID, 4711L);
-
- assertTrue(map.containsKey(4711L));
- assertEquals("my-foo", map.get(4711L));
+ verify(map).put(4711L, "my-foo");
}
@Test
public void testUpdate() {
- template.sendBodyAndHeader("direct:put", "my-foo", HazelcastConstants.OBJECT_ID, 4711L);
-
- assertTrue(map.containsKey(4711L));
- assertEquals("my-foo", map.get(4711L));
-
template.sendBodyAndHeader("direct:update", "my-fooo", HazelcastConstants.OBJECT_ID, 4711L);
- assertEquals("my-fooo", map.get(4711L));
+ verify(map).lock(4711L);
+ verify(map).replace(4711L, "my-fooo");
+ verify(map).unlock(4711L);
}
@Test
public void testGet() {
- map.put(4711L, "my-foo");
-
+ when(map.get(4711L)).thenReturn("my-foo");
template.sendBodyAndHeader("direct:get", null, HazelcastConstants.OBJECT_ID, 4711L);
+ verify(map).get(4711L);
String body = consumer.receiveBody("seda:out", 5000, String.class);
assertEquals("my-foo", body);
@@ -79,33 +88,22 @@ public class HazelcastMapProducerForSpringTest extends CamelSpringTestSupport im
@Test
public void testDelete() {
- map.put(4711L, "my-foo");
- assertEquals(1, map.size());
-
template.sendBodyAndHeader("direct:delete", null, HazelcastConstants.OBJECT_ID, 4711L);
- assertEquals(0, map.size());
+ verify(map).remove(4711L);
}
@Test
public void testQuery() {
- map.put(1L, new Dummy("alpha", 1000));
- map.put(2L, new Dummy("beta", 2000));
- map.put(3L, new Dummy("gamma", 3000));
+ String sql = "bar > 1000";
- String q1 = "bar > 1000";
- String q2 = "foo LIKE alp%";
+ when(map.values(any(SqlPredicate.class))).thenReturn(Arrays.<Object>asList(new Dummy("beta", 2000), new Dummy("gamma", 3000)));
+ template.sendBodyAndHeader("direct:query", null, HazelcastConstants.QUERY, sql);
+ verify(map).values(any(SqlPredicate.class));
- template.sendBodyAndHeader("direct:query", null, HazelcastConstants.QUERY, q1);
Collection<?> b1 = consumer.receiveBody("seda:out", 5000, Collection.class);
assertNotNull(b1);
assertEquals(2, b1.size());
-
- template.sendBodyAndHeader("direct:query", null, HazelcastConstants.QUERY, q2);
- Collection<?> b2 = consumer.receiveBody("seda:out", 5000, Collection.class);
-
- assertNotNull(b2);
- assertEquals(1, b2.size());
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/dae6366c/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMultimapProducerForSpringTest.java
----------------------------------------------------------------------
diff --git a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMultimapProducerForSpringTest.java b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMultimapProducerForSpringTest.java
index 8442669..3bd90e0 100644
--- a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMultimapProducerForSpringTest.java
+++ b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMultimapProducerForSpringTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.component.hazelcast;
+import java.util.Arrays;
import java.util.Collection;
import com.hazelcast.core.Hazelcast;
@@ -23,25 +24,36 @@ import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.MultiMap;
import org.apache.camel.test.spring.CamelSpringTestSupport;
+import org.junit.After;
import org.junit.AfterClass;
import org.junit.Test;
+import org.mockito.Mock;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
-public class HazelcastMultimapProducerForSpringTest extends CamelSpringTestSupport {
- private MultiMap<Long, Object> map;
-
+import static org.mockito.Mockito.atLeastOnce;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.when;
+
+public class HazelcastMultimapProducerForSpringTest extends HazelcastCamelSpringTestSupport {
+
+ @Mock
+ private MultiMap<Object, Object> map;
+
@Override
- protected void doPostSetup() throws Exception {
- HazelcastComponent component = context().getComponent("hazelcast", HazelcastComponent.class);
- HazelcastInstance hazelcastInstance = component.getHazelcastInstance();
- this.map = hazelcastInstance.getMultiMap("foo");
- this.map.clear();
+ protected void trainHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ when(hazelcastInstance.getMultiMap("bar")).thenReturn(map);
}
- @AfterClass
- public static void tearDownClass() {
- Hazelcast.shutdownAll();
+ @Override
+ protected void verifyHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ verify(hazelcastInstance, atLeastOnce()).getMultiMap("bar");
+ }
+
+ @After
+ public void verifyMapMock() {
+ verifyNoMoreInteractions(map);
}
@Override
@@ -51,46 +63,29 @@ public class HazelcastMultimapProducerForSpringTest extends CamelSpringTestSuppo
@Test
public void testPut() throws InterruptedException {
- template.sendBodyAndHeader("direct:put", "my-foo", HazelcastConstants.OBJECT_ID, 4711L);
- template.sendBodyAndHeader("direct:put", "my-bar", HazelcastConstants.OBJECT_ID, 4711L);
-
- assertTrue(map.containsKey(4711L));
- Collection<Object> values = map.get(4711L);
-
- assertTrue(values.contains("my-foo"));
- assertTrue(values.contains("my-bar"));
+ template.sendBodyAndHeader("direct:put", "my-foo", HazelcastConstants.OBJECT_ID, "4711");
+ verify(map).put("4711", "my-foo");
}
@Test
public void testRemoveValue() {
- map.put(4711L, "my-foo");
- map.put(4711L, "my-bar");
-
- assertEquals(2, map.get(4711L).size());
-
- template.sendBodyAndHeader("direct:removevalue", "my-foo", HazelcastConstants.OBJECT_ID, 4711L);
-
- assertEquals(1, map.get(4711L).size());
- assertTrue(map.get(4711L).contains("my-bar"));
+ template.sendBodyAndHeader("direct:removevalue", "my-foo", HazelcastConstants.OBJECT_ID, "4711");
+ verify(map).remove("4711", "my-foo");
}
@Test
public void testGet() {
- map.put(4711L, "my-foo");
-
- template.sendBodyAndHeader("direct:get", null, HazelcastConstants.OBJECT_ID, 4711L);
+ when(map.get("4711")).thenReturn(Arrays.<Object>asList("my-foo"));
+ template.sendBodyAndHeader("direct:get", null, HazelcastConstants.OBJECT_ID, "4711");
+ verify(map).get("4711");
Collection<?> body = consumer.receiveBody("seda:out", 5000, Collection.class);
-
assertTrue(body.contains("my-foo"));
}
@Test
public void testDelete() {
- map.put(4711L, "my-foo");
- assertEquals(1, map.size());
-
- template.sendBodyAndHeader("direct:delete", null, HazelcastConstants.OBJECT_ID, 4711L);
- assertEquals(0, map.size());
+ template.sendBodyAndHeader("direct:delete", null, HazelcastConstants.OBJECT_ID, 4711);
+ verify(map).remove(4711);
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/dae6366c/components/camel-hazelcast/src/test/resources/META-INF/spring/test-camel-context-map.xml
----------------------------------------------------------------------
diff --git a/components/camel-hazelcast/src/test/resources/META-INF/spring/test-camel-context-map.xml b/components/camel-hazelcast/src/test/resources/META-INF/spring/test-camel-context-map.xml
index c9412db..ee3431e 100644
--- a/components/camel-hazelcast/src/test/resources/META-INF/spring/test-camel-context-map.xml
+++ b/components/camel-hazelcast/src/test/resources/META-INF/spring/test-camel-context-map.xml
@@ -67,12 +67,4 @@
</camelContext>
- <bean id="hazelcast" class="org.apache.camel.component.hazelcast.HazelcastComponent">
- <property name="hazelcastInstance" ref="hazelcastInstance"/>
- </bean>
-
- <bean id="hazelcastInstance" class="com.hazelcast.core.Hazelcast" factory-method="newHazelcastInstance" destroy-method="shutdown">
- <constructor-arg><null/></constructor-arg>
- </bean>
-
</beans>
http://git-wip-us.apache.org/repos/asf/camel/blob/dae6366c/components/camel-hazelcast/src/test/resources/META-INF/spring/test-camel-context-multimap.xml
----------------------------------------------------------------------
diff --git a/components/camel-hazelcast/src/test/resources/META-INF/spring/test-camel-context-multimap.xml b/components/camel-hazelcast/src/test/resources/META-INF/spring/test-camel-context-multimap.xml
index f8ea79b..f855b0d 100644
--- a/components/camel-hazelcast/src/test/resources/META-INF/spring/test-camel-context-multimap.xml
+++ b/components/camel-hazelcast/src/test/resources/META-INF/spring/test-camel-context-multimap.xml
@@ -28,7 +28,7 @@
<setHeader headerName="CamelHazelcastOperationType">
<constant>put</constant>
</setHeader>
- <to uri="hazelcast:multimap:foo" />
+ <to uri="hazelcast:multimap:bar" />
</route>
<route>
@@ -36,7 +36,7 @@
<setHeader headerName="CamelHazelcastOperationType">
<constant>removevalue</constant>
</setHeader>
- <to uri="hazelcast:multimap:foo" />
+ <to uri="hazelcast:multimap:bar" />
</route>
<route>
@@ -44,7 +44,7 @@
<setHeader headerName="CamelHazelcastOperationType">
<constant>get</constant>
</setHeader>
- <to uri="hazelcast:multimap:foo" />
+ <to uri="hazelcast:multimap:bar" />
<to uri="seda:out" />
</route>
@@ -53,7 +53,7 @@
<setHeader headerName="CamelHazelcastOperationType">
<constant>delete</constant>
</setHeader>
- <to uri="hazelcast:multimap:foo" />
+ <to uri="hazelcast:multimap:bar" />
</route>
</camelContext>