This is an automated email from the ASF dual-hosted git repository. zhouxj pushed a commit to branch feature/GEODE-6143 in repository https://gitbox.apache.org/repos/asf/geode.git
commit fb77417b1c7a4edfae3aaf1e2aa46f4f23d1eab9 Author: zhouxh <[email protected]> AuthorDate: Mon Dec 10 15:00:50 2018 -0800 GEODE-6143: remove PowerMock from LuceneEventListenerJUnitTest, fix and add some test cases. --- .../cache/lucene/internal/LuceneEventListener.java | 10 +++-- .../internal/LuceneEventListenerJUnitTest.java | 52 +++++++++++++++------- 2 files changed, 42 insertions(+), 20 deletions(-) diff --git a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneEventListener.java b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneEventListener.java index db44981..b28f021 100644 --- a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneEventListener.java +++ b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneEventListener.java @@ -59,6 +59,10 @@ public class LuceneEventListener implements AsyncEventListener { @Override public void close() {} + void logDebugMessage(String msg, Exception e) { + logger.debug(msg, e); + } + @Override public boolean processEvents(List<AsyncEvent> events) { try { @@ -103,13 +107,13 @@ public class LuceneEventListener implements AsyncEventListener { } return true; } catch (BucketNotFoundException | RegionDestroyedException | PrimaryBucketException e) { - logger.debug("Bucket not found while saving to lucene index: " + e.getMessage(), e); + logDebugMessage("Bucket not found while saving to lucene index: " + e.getMessage(), e); return false; } catch (CacheClosedException e) { - logger.debug("Unable to save to lucene index, cache has been closed", e); + logDebugMessage("Unable to save to lucene index, cache has been closed", e); return false; } catch (AlreadyClosedException e) { - logger.debug("Unable to commit, the lucene index is already closed", e); + logDebugMessage("Unable to commit, the lucene index is already closed", e); return false; } catch (IOException e) { throw new InternalGemFireError("Unable to save to lucene index", e); diff --git a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/LuceneEventListenerJUnitTest.java b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/LuceneEventListenerJUnitTest.java index 8255859..677b4e5 100644 --- a/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/LuceneEventListenerJUnitTest.java +++ b/geode-lucene/src/test/java/org/apache/geode/cache/lucene/internal/LuceneEventListenerJUnitTest.java @@ -17,14 +17,15 @@ package org.apache.geode.cache.lucene.internal; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.fail; +import static org.mockito.ArgumentMatchers.contains; +import static org.mockito.ArgumentMatchers.startsWith; import static org.mockito.Mockito.any; -import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; +import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -36,20 +37,16 @@ import java.util.LinkedList; import java.util.List; import java.util.concurrent.atomic.AtomicReference; -import org.apache.logging.log4j.Logger; +import org.apache.lucene.store.AlreadyClosedException; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mockito; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PowerMockIgnore; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; import org.apache.geode.InternalGemFireError; +import org.apache.geode.cache.CacheClosedException; import org.apache.geode.cache.Region; import org.apache.geode.cache.asyncqueue.AsyncEvent; import org.apache.geode.cache.lucene.internal.repository.IndexRepository; @@ -58,17 +55,13 @@ import org.apache.geode.internal.Assert; import org.apache.geode.internal.cache.BucketNotFoundException; import org.apache.geode.internal.cache.EntrySnapshot; import org.apache.geode.internal.cache.InternalCache; -import org.apache.geode.internal.logging.LogService; import org.apache.geode.test.fake.Fakes; import org.apache.geode.test.junit.categories.LuceneTest; /** * Unit test that async event listener dispatched the events to the appropriate repository. */ -@RunWith(PowerMockRunner.class) -@PrepareForTest({LuceneEventListener.class, LogService.class}) @Category({LuceneTest.class}) -@PowerMockIgnore({"*.UnitTest", "*.LuceneTest"}) public class LuceneEventListenerJUnitTest { private RepositoryManager manager; @@ -80,6 +73,7 @@ public class LuceneEventListenerJUnitTest { cache = Fakes.cache(); manager = Mockito.mock(RepositoryManager.class); listener = new LuceneEventListener(cache, manager); + listener = spy(listener); } @After @@ -154,19 +148,43 @@ public class LuceneEventListenerJUnitTest { } @Test - public void shouldHandleBucketNotFoundExceptionWithoutLoggingError() + public void shouldHandleBucketNotFoundException() throws BucketNotFoundException { Mockito.when(manager.getRepository(any(), any(), any())) .thenThrow(BucketNotFoundException.class); - PowerMockito.mockStatic(LogService.class); - Logger logger = Mockito.mock(Logger.class); - Mockito.when(LogService.getLogger()).thenReturn(logger); + AsyncEvent event = Mockito.mock(AsyncEvent.class); + boolean result = listener.processEvents(Arrays.asList(event)); + assertFalse(result); + verify(listener, times(1)) + .logDebugMessage(startsWith("Bucket not found"), any(BucketNotFoundException.class)); + } + + @Test + public void shouldHandleCacheClosedExceptionundException() + throws BucketNotFoundException { + Mockito.when(manager.getRepository(any(), any(), any())) + .thenThrow(CacheClosedException.class); + + AsyncEvent event = Mockito.mock(AsyncEvent.class); + boolean result = listener.processEvents(Arrays.asList(event)); + assertFalse(result); + verify(listener, times(1)) + .logDebugMessage(contains("cache has been closed"), any(CacheClosedException.class)); + } + + @Test + public void shouldHandleAlreadyClosedException() + throws BucketNotFoundException { + Mockito.when(manager.getRepository(any(), any(), any())) + .thenThrow(AlreadyClosedException.class); AsyncEvent event = Mockito.mock(AsyncEvent.class); boolean result = listener.processEvents(Arrays.asList(event)); assertFalse(result); - verify(logger, never()).error(anyString(), any(Exception.class)); + verify(listener, times(1)) + .logDebugMessage(contains("the lucene index is already closed"), + any(AlreadyClosedException.class)); } @Test
