Camel-Hazelcast Improve Spring test for map
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/9e506786 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/9e506786 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/9e506786 Branch: refs/heads/master Commit: 9e506786eda92fea08780f9881e1a34cb7ef1724 Parents: 076585f Author: Andrea Cosentino <anco...@gmail.com> Authored: Thu Jun 11 10:57:00 2015 +0200 Committer: Andrea Cosentino <anco...@gmail.com> Committed: Thu Jun 11 17:14:36 2015 +0200 ---------------------------------------------------------------------- .../hazelcast/HazelcastComponentHelper.java | 1 + .../HazelcastMapProducerForSpringTest.java | 74 +++++++++++++++++++- .../META-INF/spring/test-camel-context-map.xml | 42 +++++++++++ 3 files changed, 115 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/9e506786/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastComponentHelper.java ---------------------------------------------------------------------- diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastComponentHelper.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastComponentHelper.java index 9c8acc4..76de85d 100644 --- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastComponentHelper.java +++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastComponentHelper.java @@ -93,6 +93,7 @@ public final class HazelcastComponentHelper { addMapping("update", HazelcastConstants.UPDATE_OPERATION); addMapping("query", HazelcastConstants.QUERY_OPERATION); addMapping("getAll", HazelcastConstants.GET_ALL_OPERATION); + addMapping("clear", HazelcastConstants.CLEAR_OPERATION); // multimap addMapping("removevalue", HazelcastConstants.REMOVEVALUE_OPERATION); http://git-wip-us.apache.org/repos/asf/camel/blob/9e506786/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 cef3e4a..75e2667 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 @@ -18,13 +18,17 @@ package org.apache.camel.component.hazelcast; import java.util.Arrays; import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; 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.component.hazelcast.testutil.Dummy; import org.junit.After; import org.junit.Test; import org.mockito.Mock; @@ -32,6 +36,7 @@ import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anySet; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; @@ -105,5 +110,70 @@ public class HazelcastMapProducerForSpringTest extends HazelcastCamelSpringTestS assertNotNull(b1); assertEquals(2, b1.size()); } + + @Test + public void testPutIfAbsent() throws InterruptedException { + Map<String, Object> headers = new HashMap<String, Object>(); + headers.put(HazelcastConstants.OBJECT_ID, "4711"); + template.sendBodyAndHeaders("direct:putIfAbsent", "replaced", headers); + verify(map).putIfAbsent("4711", "replaced"); + } + + @Test + public void testPutIfAbsentWithTtl() throws InterruptedException { + Map<String, Object> headers = new HashMap<String, Object>(); + headers.put(HazelcastConstants.OBJECT_ID, "4711"); + headers.put(HazelcastConstants.TTL_VALUE, new Long(1)); + headers.put(HazelcastConstants.TTL_UNIT, TimeUnit.MINUTES); + template.sendBodyAndHeaders("direct:putIfAbsent", "replaced", headers); + verify(map).putIfAbsent("4711", "replaced", new Long(1), TimeUnit.MINUTES); + } + + @Test + public void testGetAllEmptySet() { + Set<Object> l = new HashSet<Object>(); + Map t = new HashMap(); + t.put("key1", "value1"); + t.put("key2", "value2"); + t.put("key3", "value3"); + when(map.getAll(anySet())).thenReturn(t); + template.sendBodyAndHeader("direct:getAll", null, HazelcastConstants.OBJECT_ID, l); + String body = consumer.receiveBody("seda:out", 5000, String.class); + verify(map).getAll(l); + assertEquals("{key3=value3, key2=value2, key1=value1}", body); + } + @Test + public void testGetAllOnlyOneKey() { + Set<Object> l = new HashSet<Object>(); + l.add("key1"); + Map t = new HashMap(); + t.put("key1", "value1"); + when(map.getAll(l)).thenReturn(t); + template.sendBodyAndHeader("direct:getAll", null, HazelcastConstants.OBJECT_ID, l); + String body = consumer.receiveBody("seda:out", 5000, String.class); + verify(map).getAll(l); + assertEquals("{key1=value1}", body); + } + + @Test + public void testClear() throws InterruptedException { + template.sendBody("direct:clear", "test"); + verify(map).clear(); + } + + @Test + public void testEvict() throws InterruptedException { + Map<String, Object> headers = new HashMap<String, Object>(); + headers.put(HazelcastConstants.OBJECT_ID, "4711"); + template.sendBodyAndHeaders("direct:evict", "", headers); + verify(map).evict("4711"); + } + + @Test + public void testEvictAll() throws InterruptedException { + Map<String, Object> headers = new HashMap<String, Object>(); + template.sendBodyAndHeaders("direct:evictAll", "", headers); + verify(map).evictAll(); + } } http://git-wip-us.apache.org/repos/asf/camel/blob/9e506786/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 ee3431e..359328a 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 @@ -64,7 +64,49 @@ <to uri="hazelcast:map:foo" /> <to uri="seda:out" /> </route> + + <route> + <from uri="direct:putIfAbsent" /> + <setHeader headerName="CamelHazelcastOperationType"> + <constant>putIfAbsent</constant> + </setHeader> + <to uri="hazelcast:map:foo" /> + </route> + + <route> + <from uri="direct:getAll" /> + <setHeader headerName="CamelHazelcastOperationType"> + <constant>getAll</constant> + </setHeader> + <to uri="hazelcast:map:foo" /> + <to uri="seda:out" /> + </route> + + <route> + <from uri="direct:clear" /> + <setHeader headerName="CamelHazelcastOperationType"> + <constant>clear</constant> + </setHeader> + <to uri="hazelcast:map:foo" /> + </route> + + <route> + <from uri="direct:evict" /> + <setHeader headerName="CamelHazelcastOperationType"> + <constant>evict</constant> + </setHeader> + <to uri="hazelcast:map:foo" /> + <to uri="seda:out" /> + </route> + <route> + <from uri="direct:evictAll" /> + <setHeader headerName="CamelHazelcastOperationType"> + <constant>evictAll</constant> + </setHeader> + <to uri="hazelcast:map:foo" /> + <to uri="seda:out" /> + </route> </camelContext> </beans>