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