Repository: incubator-geode Updated Branches: refs/heads/feature/GEODE-11 363303f9a -> 026271b0c
GEODE-11: Add tests for exception paths Add a test to verify error handling during reduce phase in a function. https://reviews.apache.org/r/38320/ Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/0460dbba Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/0460dbba Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/0460dbba Branch: refs/heads/feature/GEODE-11 Commit: 0460dbba54275fbc8f302cfd15ea5085a48ab46d Parents: 363303f Author: Ashvin Agrawal <[email protected]> Authored: Thu Sep 10 11:35:28 2015 -0700 Committer: Ashvin Agrawal <[email protected]> Committed: Fri Sep 11 14:54:12 2015 -0700 ---------------------------------------------------------------------- .../LuceneQueryFunctionJUnitTest.java | 51 +++++++++++++++++--- 1 file changed, 43 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/0460dbba/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/LuceneQueryFunctionJUnitTest.java ---------------------------------------------------------------------- diff --git a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/LuceneQueryFunctionJUnitTest.java b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/LuceneQueryFunctionJUnitTest.java index 4c350cf..b7b3f1d 100644 --- a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/LuceneQueryFunctionJUnitTest.java +++ b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/distributed/LuceneQueryFunctionJUnitTest.java @@ -170,8 +170,6 @@ public class LuceneQueryFunctionJUnitTest { @Test public void injectCustomCollectorManager() throws Exception { final QueryMocks m = new QueryMocks(); - final CollectorManager mockManager = mocker.mock(CollectorManager.class); - final IndexResultCollector mockCollector = mocker.mock(IndexResultCollector.class); mocker.checking(new Expectations() { { @@ -184,26 +182,26 @@ public class LuceneQueryFunctionJUnitTest { will(returnValue(m.mockResultSender)); oneOf(m.mockFuncArgs).getCollectorManager(); - will(returnValue(mockManager)); + will(returnValue(m.mockManager)); oneOf(m.mockRepoManager).getRepositories(m.mockRegion, m.mockContext); m.repos.remove(0); will(returnValue(m.repos)); - oneOf(mockManager).newCollector("repo2"); - will(returnValue(mockCollector)); - oneOf(mockManager).reduce(with(any(Collection.class))); + oneOf(m.mockManager).newCollector("repo2"); + will(returnValue(m.mockCollector)); + oneOf(m.mockManager).reduce(with(any(Collection.class))); will(new CustomAction("reduce") { @Override public Object invoke(Invocation invocation) throws Throwable { Collection<IndexResultCollector> collectors = (Collection<IndexResultCollector>) invocation.getParameter(0); assertEquals(1, collectors.size()); - assertEquals(mockCollector, collectors.iterator().next()); + assertEquals(m.mockCollector, collectors.iterator().next()); return new TopEntries(); } }); - oneOf(mockCollector).collect("key-2-1", .45f); + oneOf(m.mockCollector).collect("key-2-1", .45f); oneOf(m.mockRepository2).query(with(aNull(Query.class)), with(equal(0)), with(any(IndexResultCollector.class))); will(new CustomAction("streamSearchResults") { @@ -279,6 +277,40 @@ public class LuceneQueryFunctionJUnitTest { } @Test + public void testReduceError() throws Exception { + final QueryMocks m = new QueryMocks(); + mocker.checking(new Expectations() { + { + oneOf(m.mockContext).getDataSet(); + will(returnValue(m.mockRegion)); + oneOf(m.mockContext).getResultSender(); + will(returnValue(m.mockResultSender)); + + oneOf(m.mockContext).getArguments(); + will(returnValue(m.mockFuncArgs)); + oneOf(m.mockFuncArgs).getCollectorManager(); + will(returnValue(m.mockManager)); + oneOf(m.mockManager).newCollector("repo1"); + will(returnValue(m.mockCollector)); + oneOf(m.mockManager).reduce(with(any(Collection.class))); + will(throwException(new IOException())); + + oneOf(m.mockRepoManager).getRepositories(m.mockRegion, m.mockContext); + m.repos.remove(1); + will(returnValue(m.repos)); + + oneOf(m.mockRepository1).query(null, 0, m.mockCollector); + oneOf(m.mockResultSender).sendException(with(any(IOException.class))); + } + }); + + LuceneQueryFunction function = new LuceneQueryFunction(); + function.setRepositoryManager(m.mockRepoManager); + + function.execute(m.mockContext); + } + + @Test public void testQueryFunctionId() { String id = new LuceneQueryFunction().getId(); assertEquals(LuceneQueryFunction.class.getName(), id); @@ -294,6 +326,9 @@ public class LuceneQueryFunctionJUnitTest { IndexRepository mockRepository1 = mocker.mock(IndexRepository.class, "repo1"); IndexRepository mockRepository2 = mocker.mock(IndexRepository.class, "repo2"); LuceneSearchFunctionArgs mockFuncArgs = mocker.mock(LuceneSearchFunctionArgs.class); + CollectorManager mockManager = mocker.mock(CollectorManager.class); + IndexResultCollector mockCollector = mocker.mock(IndexResultCollector.class); + QueryMocks() { repos.add(mockRepository1);
