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/09 07:15:16 UTC
[2/2] git commit: CAMEL-6826: Use Mock Objects Instead of Live
HazelcastInstances to Speed Up Testing
CAMEL-6826: Use Mock Objects Instead of Live HazelcastInstances to Speed Up Testing
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/f83c64b1
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/f83c64b1
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/f83c64b1
Branch: refs/heads/master
Commit: f83c64b1c1a965a5736634b19edf8fc73f33a63a
Parents: 999911e
Author: James W. Carman <jc...@apache.org>
Authored: Wed Oct 9 01:10:41 2013 -0400
Committer: James W. Carman <jc...@apache.org>
Committed: Wed Oct 9 01:15:02 2013 -0400
----------------------------------------------------------------------
.../instance/HazelcastInstanceConsumer.java | 4 +-
.../HazelcastInstanceConsumerTest.java | 61 +++++++++++++++-----
.../hazelcast/HazelcastListConsumerTest.java | 43 ++++++++++----
.../hazelcast/HazelcastMapConsumerTest.java | 61 +++++++++++++-------
.../HazelcastMultimapConsumerTest.java | 51 ++++++++++------
.../hazelcast/HazelcastQueueConsumerTest.java | 48 ++++++++++-----
6 files changed, 190 insertions(+), 78 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/f83c64b1/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/instance/HazelcastInstanceConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/instance/HazelcastInstanceConsumer.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/instance/HazelcastInstanceConsumer.java
index ef29696..664272a 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/instance/HazelcastInstanceConsumer.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/instance/HazelcastInstanceConsumer.java
@@ -51,8 +51,8 @@ public class HazelcastInstanceConsumer extends DefaultConsumer {
HazelcastComponentHelper.setListenerHeaders(exchange, HazelcastConstants.INSTANCE_LISTENER, action);
// instance listener header values
- exchange.getOut().setHeader(HazelcastConstants.INSTANCE_HOST, event.getMember().getInetSocketAddress().getHostName());
- exchange.getOut().setHeader(HazelcastConstants.INSTANCE_PORT, event.getMember().getInetSocketAddress().getPort());
+ exchange.getIn().setHeader(HazelcastConstants.INSTANCE_HOST, event.getMember().getInetSocketAddress().getHostName());
+ exchange.getIn().setHeader(HazelcastConstants.INSTANCE_PORT, event.getMember().getInetSocketAddress().getPort());
try {
getProcessor().process(exchange);
http://git-wip-us.apache.org/repos/asf/camel/blob/f83c64b1/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastInstanceConsumerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastInstanceConsumerTest.java b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastInstanceConsumerTest.java
index 229ee19..b40f89394 100644
--- a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastInstanceConsumerTest.java
+++ b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastInstanceConsumerTest.java
@@ -16,12 +16,19 @@
*/
package org.apache.camel.component.hazelcast;
+import java.net.InetSocketAddress;
import java.util.Map;
import java.util.concurrent.TimeUnit;
+import com.hazelcast.core.Cluster;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
+import com.hazelcast.core.IList;
+import com.hazelcast.core.ItemListener;
+import com.hazelcast.core.Member;
+import com.hazelcast.core.MembershipEvent;
+import com.hazelcast.core.MembershipListener;
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
@@ -29,19 +36,51 @@ import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Ignore;
import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
-public class HazelcastInstanceConsumerTest extends CamelTestSupport {
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+public class HazelcastInstanceConsumerTest extends HazelcastCamelTestSupport {
+
+ @Mock
+ private IList<String> list;
+
+ @Mock
+ private Cluster cluster;
+
+ @Mock
+ private Member member;
+
+ private ArgumentCaptor<MembershipListener> argument;
+
+ @Override
+ @SuppressWarnings("unchecked")
+ protected void trainHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ when(hazelcastInstance.getCluster()).thenReturn(cluster);
+ argument = ArgumentCaptor.forClass(MembershipListener.class);
+ when(cluster.addMembershipListener(argument.capture())).thenReturn("foo");
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ protected void verifyHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ verify(hazelcastInstance).getCluster();
+ verify(cluster).addMembershipListener(any(MembershipListener.class));
+ }
@Test
- @Ignore("Causes further hazelast tests to fail")
public void testAddInstance() throws InterruptedException {
MockEndpoint added = getMockEndpoint("mock:added");
- added.setExpectedMessageCount(2);
-
- Hazelcast.newHazelcastInstance(null);
- Hazelcast.newHazelcastInstance(null);
+ added.setExpectedMessageCount(1);
+ when(member.getInetSocketAddress()).thenReturn(new InetSocketAddress("foo.bar", 12345));
+ MembershipEvent event = new MembershipEvent(cluster, member, MembershipEvent.MEMBER_ADDED, null);
+ argument.getValue().memberAdded(event);
assertMockEndpointsSatisfied(5000, TimeUnit.MILLISECONDS);
// check headers
@@ -49,20 +88,18 @@ public class HazelcastInstanceConsumerTest extends CamelTestSupport {
Map<String, Object> headers = ex.getIn().getHeaders();
this.checkHeaders(headers, HazelcastConstants.ADDED);
-
- Hazelcast.shutdownAll();
}
@Test
- @Ignore("Shutdown causes further hazelast tests to fail")
public void testRemoveInstance() throws InterruptedException {
MockEndpoint removed = getMockEndpoint("mock:removed");
removed.setExpectedMessageCount(1);
- HazelcastInstance h1 = Hazelcast.newHazelcastInstance(null);
+ when(member.getInetSocketAddress()).thenReturn(new InetSocketAddress("foo.bar", 12345));
- h1.getLifecycleService().shutdown();
+ MembershipEvent event = new MembershipEvent(cluster, member, MembershipEvent.MEMBER_REMOVED, null);
+ argument.getValue().memberRemoved(event);
assertMockEndpointsSatisfied(5000, TimeUnit.MILLISECONDS);
@@ -71,8 +108,6 @@ public class HazelcastInstanceConsumerTest extends CamelTestSupport {
Map<String, Object> headers = ex.getIn().getHeaders();
this.checkHeaders(headers, HazelcastConstants.REMOVED);
-
- Hazelcast.shutdownAll();
}
@Override
http://git-wip-us.apache.org/repos/asf/camel/blob/f83c64b1/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastListConsumerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastListConsumerTest.java b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastListConsumerTest.java
index a1f858d..38cbf63 100644
--- a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastListConsumerTest.java
+++ b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastListConsumerTest.java
@@ -21,29 +21,49 @@ import java.util.Map;
import java.util.concurrent.TimeUnit;
import com.hazelcast.core.HazelcastInstance;
+import com.hazelcast.core.IList;
+import com.hazelcast.core.ItemEvent;
+import com.hazelcast.core.ItemEventType;
+import com.hazelcast.core.ItemListener;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
-public class HazelcastListConsumerTest extends CamelTestSupport {
+import static org.mockito.Mockito.*;
- private List<String> list;
+public class HazelcastListConsumerTest extends HazelcastCamelTestSupport {
+
+ @Mock
+ private IList<String> list;
+
+ private ArgumentCaptor<ItemListener> argument;
+
+ @Override
+ @SuppressWarnings("unchecked")
+ protected void trainHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ when(hazelcastInstance.<String>getList("foo")).thenReturn(list);
+ argument = ArgumentCaptor.forClass(ItemListener.class);
+ when(list.addItemListener(argument.capture(), eq(true))).thenReturn("foo");
+ }
@Override
- protected void doPostSetup() throws Exception {
- HazelcastComponent component = context().getComponent("hazelcast", HazelcastComponent.class);
- HazelcastInstance hazelcastInstance = component.getHazelcastInstance();
- list = hazelcastInstance.getList("mm");
- list.clear();
+ @SuppressWarnings("unchecked")
+ protected void verifyHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ verify(hazelcastInstance).getList("foo");
+ verify(list).addItemListener(any(ItemListener.class), eq(true));
}
@Test
+ @SuppressWarnings("unchecked")
public void add() throws InterruptedException {
MockEndpoint out = getMockEndpoint("mock:added");
out.expectedMessageCount(1);
- list.add("foo");
+ final ItemEvent<String> event = new ItemEvent<String>("mm", ItemEventType.ADDED, "foo", null);
+ argument.getValue().itemAdded(event);
assertMockEndpointsSatisfied(2000, TimeUnit.MILLISECONDS);
@@ -51,12 +71,13 @@ public class HazelcastListConsumerTest extends CamelTestSupport {
}
@Test
+ @SuppressWarnings("unchecked")
public void remove() throws InterruptedException {
MockEndpoint out = getMockEndpoint("mock:removed");
out.expectedMessageCount(1);
- list.add("foo");
- list.remove("foo");
+ final ItemEvent<String> event = new ItemEvent<String>("mm", ItemEventType.REMOVED, "foo", null);
+ argument.getValue().itemRemoved(event);
assertMockEndpointsSatisfied(2000, TimeUnit.MILLISECONDS);
this.checkHeaders(out.getExchanges().get(0).getIn().getHeaders(), HazelcastConstants.REMOVED);
@@ -67,7 +88,7 @@ public class HazelcastListConsumerTest extends CamelTestSupport {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
- from(String.format("hazelcast:%smm", HazelcastConstants.LIST_PREFIX)).log("object...").choice().when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.ADDED))
+ from(String.format("hazelcast:%sfoo", HazelcastConstants.LIST_PREFIX)).log("object...").choice().when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.ADDED))
.log("...added").to("mock:added").when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.REMOVED)).log("...removed").to("mock:removed").otherwise()
.log("fail!");
}
http://git-wip-us.apache.org/repos/asf/camel/blob/f83c64b1/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMapConsumerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMapConsumerTest.java b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMapConsumerTest.java
index 8d3f604..6b697f5 100644
--- a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMapConsumerTest.java
+++ b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMapConsumerTest.java
@@ -19,60 +19,78 @@ package org.apache.camel.component.hazelcast;
import java.util.Map;
import java.util.concurrent.TimeUnit;
+import com.hazelcast.core.EntryEvent;
+import com.hazelcast.core.EntryEventType;
+import com.hazelcast.core.EntryListener;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IMap;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
-public class HazelcastMapConsumerTest extends CamelTestSupport {
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
- private IMap<Object, Object> map;
+public class HazelcastMapConsumerTest extends HazelcastCamelTestSupport {
+
+ @Mock
+ private IMap<Object,Object> map;
+
+ private ArgumentCaptor<EntryListener> argument;
@Override
- protected void doPostSetup() throws Exception {
- HazelcastComponent component = context().getComponent("hazelcast", HazelcastComponent.class);
- HazelcastInstance hazelcastInstance = component.getHazelcastInstance();
- map = hazelcastInstance.getMap("foo");
- map.clear();
+ @SuppressWarnings("unchecked")
+ protected void trainHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ when(hazelcastInstance.getMap("foo")).thenReturn(map);
+ argument = ArgumentCaptor.forClass(EntryListener.class);
+ when(map.addEntryListener(argument.capture(), eq(true))).thenReturn("foo");
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ protected void verifyHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ verify(hazelcastInstance).getMap("foo");
+ verify(map).addEntryListener(any(EntryListener.class), eq(true));
}
@Test
+ @SuppressWarnings("unchecked")
public void testAdd() throws InterruptedException {
MockEndpoint out = getMockEndpoint("mock:added");
out.expectedMessageCount(1);
- map.put("4711", "my-foo");
-
+ EntryEvent<Object,Object> event = new EntryEvent<Object,Object>("foo", null, EntryEventType.ADDED.getType(), "4711", "my-foo");
+ argument.getValue().entryAdded(event);
assertMockEndpointsSatisfied(5000, TimeUnit.MILLISECONDS);
this.checkHeaders(out.getExchanges().get(0).getIn().getHeaders(), HazelcastConstants.ADDED);
}
@Test
+ @SuppressWarnings("unchecked")
public void testEnvict() throws InterruptedException {
MockEndpoint out = super.getMockEndpoint("mock:envicted");
- out.expectedMessageCount(5);
+ out.expectedMessageCount(1);
- map.put(1, "my-foo-1");
- map.put(2, "my-foo-2");
- map.put(3, "my-foo-3");
- map.put(4, "my-foo-4");
- map.put(5, "my-foo-5");
- map.put(6, "my-foo-6");
+ EntryEvent<Object,Object> event = new EntryEvent<Object,Object>("foo", null, EntryEventType.EVICTED.getType(), "4711", "my-foo");
+ argument.getValue().entryEvicted(event);
assertMockEndpointsSatisfied(30000, TimeUnit.MILLISECONDS);
}
@Test
+ @SuppressWarnings("unchecked")
public void testUpdate() throws InterruptedException {
MockEndpoint out = getMockEndpoint("mock:updated");
out.expectedMessageCount(1);
- map.put("4711", "my-foo");
- map.replace("4711", "my-fooo");
+ EntryEvent<Object,Object> event = new EntryEvent<Object,Object>("foo", null, EntryEventType.UPDATED.getType(), "4711", "my-foo");
+ argument.getValue().entryUpdated(event);
assertMockEndpointsSatisfied(5000, TimeUnit.MILLISECONDS);
@@ -80,12 +98,13 @@ public class HazelcastMapConsumerTest extends CamelTestSupport {
}
@Test
+ @SuppressWarnings("unchecked")
public void testRemove() throws InterruptedException {
MockEndpoint out = getMockEndpoint("mock:removed");
out.expectedMessageCount(1);
- map.put("4711", "my-foo");
- map.remove("4711");
+ EntryEvent<Object,Object> event = new EntryEvent<Object,Object>("foo", null, EntryEventType.REMOVED.getType(), "4711", "my-foo");
+ argument.getValue().entryRemoved(event);
assertMockEndpointsSatisfied(5000, TimeUnit.MILLISECONDS);
this.checkHeaders(out.getExchanges().get(0).getIn().getHeaders(), HazelcastConstants.REMOVED);
http://git-wip-us.apache.org/repos/asf/camel/blob/f83c64b1/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMultimapConsumerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMultimapConsumerTest.java b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMultimapConsumerTest.java
index 1c379a8..55fc5bb 100644
--- a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMultimapConsumerTest.java
+++ b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMultimapConsumerTest.java
@@ -19,7 +19,11 @@ package org.apache.camel.component.hazelcast;
import java.util.Map;
import java.util.concurrent.TimeUnit;
+import com.hazelcast.core.EntryEvent;
+import com.hazelcast.core.EntryEventType;
+import com.hazelcast.core.EntryListener;
import com.hazelcast.core.HazelcastInstance;
+import com.hazelcast.core.IMap;
import com.hazelcast.core.MultiMap;
import org.apache.camel.builder.RouteBuilder;
@@ -28,27 +32,44 @@ import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Ignore;
import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
-public class HazelcastMultimapConsumerTest extends CamelTestSupport {
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
- private MultiMap<String, Object> map;
+public class HazelcastMultimapConsumerTest extends HazelcastCamelTestSupport {
+ @Mock
+ private MultiMap<Object,Object> map;
+
+ private ArgumentCaptor<EntryListener> argument;
@Override
- protected void doPostSetup() throws Exception {
- HazelcastComponent component = context().getComponent("hazelcast", HazelcastComponent.class);
- HazelcastInstance hazelcastInstance = component.getHazelcastInstance();
- this.map = hazelcastInstance.getMultiMap("mm");
- this.map.clear();
+ @SuppressWarnings("unchecked")
+ protected void trainHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ when(hazelcastInstance.getMultiMap("mm")).thenReturn(map);
+ argument = ArgumentCaptor.forClass(EntryListener.class);
+ when(map.addEntryListener(argument.capture(), eq(true))).thenReturn("foo");
}
+ @Override
+ @SuppressWarnings("unchecked")
+ protected void verifyHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ verify(hazelcastInstance).getMultiMap("mm");
+ verify(map).addEntryListener(any(EntryListener.class), eq(true));
+ }
@Test
+ @SuppressWarnings("unchecked")
public void testAdd() throws InterruptedException {
MockEndpoint out = getMockEndpoint("mock:added");
out.expectedMessageCount(1);
- map.put("4711", "my-foo");
+ EntryEvent<Object,Object> event = new EntryEvent<Object,Object>("foo", null, EntryEventType.ADDED.getType(), "4711", "my-foo");
+ argument.getValue().entryAdded(event);
assertMockEndpointsSatisfied(5000, TimeUnit.MILLISECONDS);
@@ -58,18 +79,14 @@ public class HazelcastMultimapConsumerTest extends CamelTestSupport {
/*
* mail from talip (hazelcast) on 21.02.2011: MultiMap doesn't support eviction yet. We can and should add this feature.
*/
- @Ignore("See also http://code.google.com/p/hazelcast/issues/detail?id=577&q=eviction")
@Test
+ @SuppressWarnings("unchecked")
public void testEnvict() throws InterruptedException {
MockEndpoint out = getMockEndpoint("mock:envicted");
out.expectedMessageCount(1);
- map.put("1", "my-foo-1");
- map.put("2", "my-foo-2");
- map.put("3", "my-foo-3");
- map.put("4", "my-foo-4");
- map.put("5", "my-foo-5");
- map.put("6", "my-foo-6");
+ EntryEvent<Object,Object> event = new EntryEvent<Object,Object>("foo", null, EntryEventType.EVICTED.getType(), "4711", "my-foo");
+ argument.getValue().entryEvicted(event);
assertMockEndpointsSatisfied(30000, TimeUnit.MILLISECONDS);
}
@@ -79,8 +96,8 @@ public class HazelcastMultimapConsumerTest extends CamelTestSupport {
MockEndpoint out = getMockEndpoint("mock:removed");
out.expectedMessageCount(1);
- map.put("4711", "foo");
- map.remove("4711");
+ EntryEvent<Object,Object> event = new EntryEvent<Object,Object>("foo", null, EntryEventType.REMOVED.getType(), "4711", "my-foo");
+ argument.getValue().entryRemoved(event);
assertMockEndpointsSatisfied(5000, TimeUnit.MILLISECONDS);
this.checkHeaders(out.getExchanges().get(0).getIn().getHeaders(), HazelcastConstants.REMOVED);
http://git-wip-us.apache.org/repos/asf/camel/blob/f83c64b1/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastQueueConsumerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastQueueConsumerTest.java b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastQueueConsumerTest.java
index 879929c..9290c03 100644
--- a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastQueueConsumerTest.java
+++ b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastQueueConsumerTest.java
@@ -22,35 +22,54 @@ import java.util.concurrent.TimeUnit;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
+import com.hazelcast.core.IQueue;
+import com.hazelcast.core.ItemEvent;
+import com.hazelcast.core.ItemEventType;
+import com.hazelcast.core.ItemListener;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.AfterClass;
import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
-public class HazelcastQueueConsumerTest extends CamelTestSupport {
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
- private BlockingQueue<String> map;
+public class HazelcastQueueConsumerTest extends HazelcastCamelTestSupport {
+
+ @Mock
+ private IQueue<String> queue;
+
+ private ArgumentCaptor<ItemListener> argument;
@Override
- protected void doPostSetup() throws Exception {
- HazelcastComponent component = context().getComponent("hazelcast", HazelcastComponent.class);
- HazelcastInstance hazelcastInstance = component.getHazelcastInstance();
- this.map = hazelcastInstance.getQueue("mm");
- this.map.clear();
+ @SuppressWarnings("unchecked")
+ protected void trainHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ when(hazelcastInstance.<String>getQueue("foo")).thenReturn(queue);
+ argument = ArgumentCaptor.forClass(ItemListener.class);
+ when(queue.addItemListener(argument.capture(), eq(true))).thenReturn("foo");
}
- @AfterClass
- public static void tearDownClass() {
- Hazelcast.shutdownAll();
+ @Override
+ @SuppressWarnings("unchecked")
+ protected void verifyHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ verify(hazelcastInstance).getQueue("foo");
+ verify(queue).addItemListener(any(ItemListener.class), eq(true));
}
@Test
+ @SuppressWarnings("unchecked")
public void add() throws InterruptedException {
MockEndpoint out = getMockEndpoint("mock:added");
out.expectedMessageCount(1);
- map.put("foo");
+ final ItemEvent<String> event = new ItemEvent<String>("foo", ItemEventType.ADDED, "foo", null);
+ argument.getValue().itemAdded(event);
+
assertMockEndpointsSatisfied(2000, TimeUnit.MILLISECONDS);
@@ -58,12 +77,13 @@ public class HazelcastQueueConsumerTest extends CamelTestSupport {
}
@Test
+ @SuppressWarnings("unchecked")
public void remove() throws InterruptedException {
MockEndpoint out = getMockEndpoint("mock:removed");
out.expectedMessageCount(1);
- map.put("foo");
- map.remove();
+ final ItemEvent<String> event = new ItemEvent<String>("foo", ItemEventType.REMOVED, "foo", null);
+ argument.getValue().itemRemoved(event);
assertMockEndpointsSatisfied(2000, TimeUnit.MILLISECONDS);
this.checkHeaders(out.getExchanges().get(0).getIn().getHeaders(), HazelcastConstants.REMOVED);
@@ -74,7 +94,7 @@ public class HazelcastQueueConsumerTest extends CamelTestSupport {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
- from(String.format("hazelcast:%smm", HazelcastConstants.QUEUE_PREFIX)).log("object...").choice().when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.ADDED))
+ from(String.format("hazelcast:%sfoo", HazelcastConstants.QUEUE_PREFIX)).log("object...").choice().when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.ADDED))
.log("...added").to("mock:added").when(header(HazelcastConstants.LISTENER_ACTION).isEqualTo(HazelcastConstants.REMOVED)).log("...removed").to("mock:removed").otherwise()
.log("fail!");
}