Repository: geode-examples Updated Branches: refs/heads/feature/GEODE-2231 65443bb77 -> b90991e1f
GEODE-2231 Complete ConsumerTest Project: http://git-wip-us.apache.org/repos/asf/geode-examples/repo Commit: http://git-wip-us.apache.org/repos/asf/geode-examples/commit/b90991e1 Tree: http://git-wip-us.apache.org/repos/asf/geode-examples/tree/b90991e1 Diff: http://git-wip-us.apache.org/repos/asf/geode-examples/diff/b90991e1 Branch: refs/heads/feature/GEODE-2231 Commit: b90991e1f189d315c6afbcff191b7ae9ec949859 Parents: 65443bb Author: Karen Miller <[email protected]> Authored: Thu Feb 9 16:24:25 2017 -0800 Committer: Karen Miller <[email protected]> Committed: Thu Feb 9 16:24:25 2017 -0800 ---------------------------------------------------------------------- .../geode/examples/partitioned/BaseClient.java | 2 +- .../examples/partitioned/ConsumerTest.java | 78 ++++++++++++++++++-- 2 files changed, 74 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/geode-examples/blob/b90991e1/partitioned/src/main/java/org/apache/geode/examples/partitioned/BaseClient.java ---------------------------------------------------------------------- diff --git a/partitioned/src/main/java/org/apache/geode/examples/partitioned/BaseClient.java b/partitioned/src/main/java/org/apache/geode/examples/partitioned/BaseClient.java index 0b66cb6..5e51a66 100644 --- a/partitioned/src/main/java/org/apache/geode/examples/partitioned/BaseClient.java +++ b/partitioned/src/main/java/org/apache/geode/examples/partitioned/BaseClient.java @@ -59,7 +59,7 @@ public abstract class BaseClient { protected Region getRegion2() { if (region2 == null) { region2 = getClientCache() - .<EmployeeKey, EmployeeData>createClientRegionFactory(ClientRegionShortcut.PROXY) + .<BadEmployeeKey, EmployeeData>createClientRegionFactory(ClientRegionShortcut.PROXY) .create(REGION2_NAME); } return (region2); http://git-wip-us.apache.org/repos/asf/geode-examples/blob/b90991e1/partitioned/src/test/java/org/apache/geode/examples/partitioned/ConsumerTest.java ---------------------------------------------------------------------- diff --git a/partitioned/src/test/java/org/apache/geode/examples/partitioned/ConsumerTest.java b/partitioned/src/test/java/org/apache/geode/examples/partitioned/ConsumerTest.java index 11dac48..e0b3709 100644 --- a/partitioned/src/test/java/org/apache/geode/examples/partitioned/ConsumerTest.java +++ b/partitioned/src/test/java/org/apache/geode/examples/partitioned/ConsumerTest.java @@ -18,8 +18,12 @@ package org.apache.geode.examples.partitioned; import static org.junit.Assert.*; import static org.mockito.Mockito.*; +import java.util.HashMap; +import java.util.Map; import java.util.Set; +import org.apache.geode.cache.client.ClientRegionFactory; +import org.apache.geode.cache.client.ClientRegionShortcut; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -28,6 +32,8 @@ import org.junit.rules.ExpectedException; import org.apache.geode.cache.Region; import org.apache.geode.cache.client.ClientCache; import org.apache.geode.cache.client.NoAvailableLocatorsException; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; public class ConsumerTest { @@ -36,17 +42,60 @@ public class ConsumerTest { private Consumer consumer; private ClientCache clientCache = mock(ClientCache.class); - private Region region = mock(Region.class); + private Region region1 = mock(Region.class); + private Region region2 = mock(Region.class); + private ClientRegionFactory clientRegionFactory = mock(ClientRegionFactory.class); private Set keys = mock(Set.class); @Before public void setup() { - when(region.getName()).thenReturn(Consumer.REGION1_NAME); + when(region1.getName()).thenReturn(Consumer.REGION1_NAME); + when(region2.getName()).thenReturn(Consumer.REGION2_NAME); when(keys.size()).thenReturn(Consumer.NUM_ENTRIES); - when(region.keySetOnServer()).thenReturn(keys); - when(clientCache.getRegion(any())).thenReturn(region); + // when(region1.keySetOnServer()).thenReturn(keys); + // when(region2.keySetOnServer()).thenReturn(keys); + when(clientCache.createClientRegionFactory(ClientRegionShortcut.PROXY)) + .thenReturn(clientRegionFactory); + when(clientRegionFactory.create(Consumer.REGION1_NAME)).thenReturn(region1); + when(clientRegionFactory.create(Consumer.REGION2_NAME)).thenReturn(region2); + + /* Make a small map that will provide values as a region would */ + Map<EmployeeKey, EmployeeData> emplMap = new HashMap<>(); + EmployeeKey k1 = new EmployeeKey("Bertie Bell", 170); + EmployeeData d1 = new EmployeeData(k1, 72000, 40); + emplMap.put(k1, d1); + EmployeeKey k2 = new EmployeeKey("Toni Tiptoe", 180); + EmployeeData d2 = new EmployeeData(k2, 70000, 40); + emplMap.put(k2, d2); + /* Mock the region keySetOnServer,size, and get methods with values from the map */ + when(region1.keySetOnServer()).thenReturn(emplMap.keySet()); + when(region1.size()).thenReturn(emplMap.size()); + when(region1.get(eq(k1))).thenReturn(emplMap.get(d1)); + when(region1.get(eq(k2))).thenReturn(emplMap.get(d2)); + + Map<BadEmployeeKey, EmployeeData> badEmplMap = new HashMap<>(); + BadEmployeeKey bk1 = new BadEmployeeKey("Bertie Bell", 170); + EmployeeData bd1 = new EmployeeData(bk1, 72000, 40); + badEmplMap.put(bk1, bd1); + BadEmployeeKey bk2 = new BadEmployeeKey("Toni Tiptoe", 180); + EmployeeData bd2 = new EmployeeData(bk2, 70000, 40); + badEmplMap.put(bk2, bd2); + /* Mock the region keySetOnServer,size, and get methods with values from the map */ + when(region2.keySetOnServer()).thenReturn(badEmplMap.keySet()); + when(region2.size()).thenReturn(badEmplMap.size()); + when(region2.get(eq(bk1))).thenReturn(bd1); + when(region2.get(eq(bk2))).thenReturn(bd2); + + // when(region1.get(any())).then(new Answer() { + // + // @Override + // public Object answer(InvocationOnMock invocation) throws Throwable { + // EmployeeKey key = invocation.getArgumentAt(0, EmployeeKey.class); + // return emplMap.get(key); + // } + // }); + consumer = new Consumer(clientCache); - consumer.setRegion1(region); } @Test @@ -54,5 +103,24 @@ public class ConsumerTest { assertTrue(consumer.NUM_ENTRIES > 0); } + @Test + public void testConsumerGetRegion1() { + assertEquals("Region names do not match", Consumer.REGION1_NAME, + consumer.getRegion1().getName()); + } + + /* + * Doesn't work because mocked clientRegionFactory.create(any()) returns region1, not region2 + */ + @Test + public void testConsumerGetRegion2() { + assertEquals("Region names do not match", Consumer.REGION2_NAME, + consumer.getRegion2().getName()); + } + + @Test + public void testPrintRegionContents() { + consumer.printRegionContents(); + } }
