You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by zh...@apache.org on 2018/12/10 23:02:08 UTC
[geode] 01/01: GEODE-6143: remove PowerMock from
LuceneEventListenerJUnitTest, fix and add some test cases.
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 <gz...@pivotal.io>
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