DRILL-6208: Fix FunctionInitializerTest#testConcurrentFunctionBodyLoad to use 
Mockito instead of JMockit

closes #1149


Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/36159e22
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/36159e22
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/36159e22

Branch: refs/heads/master
Commit: 36159e2282153dbce52b8345d19e9bd95d67d377
Parents: 863ff0b
Author: Arina Ielchiieva <arina.yelchiy...@gmail.com>
Authored: Sat Mar 3 21:00:50 2018 +0200
Committer: Arina Ielchiieva <arina.yelchiy...@gmail.com>
Committed: Sun Mar 4 17:46:55 2018 +0200

----------------------------------------------------------------------
 .../drill/exec/expr/fn/FunctionInitializer.java |  5 +--
 .../exec/expr/fn/FunctionInitializerTest.java   | 33 ++++++++++----------
 2 files changed, 20 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/drill/blob/36159e22/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/FunctionInitializer.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/FunctionInitializer.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/FunctionInitializer.java
index 20b1d12..e9d98f2 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/FunctionInitializer.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/FunctionInitializer.java
@@ -17,13 +17,13 @@
  */
 package org.apache.drill.exec.expr.fn;
 
-import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.StringReader;
 import java.util.List;
 import java.util.Map;
 
+import com.google.common.annotations.VisibleForTesting;
 import org.apache.drill.common.exceptions.UserException;
 import org.apache.drill.common.util.DrillFileUtils;
 import org.codehaus.commons.compiler.CompileException;
@@ -126,7 +126,8 @@ public class FunctionInitializer {
    * @return compilation unit
    * @throws IOException if did not find class or could not load it
    */
-  private CompilationUnit convertToCompilationUnit(Class<?> clazz) throws 
IOException {
+  @VisibleForTesting
+  CompilationUnit convertToCompilationUnit(Class<?> clazz) throws IOException {
     String path = clazz.getName();
     path = path.replaceFirst("\\$.*", "");
     path = path.replace(".", DrillFileUtils.SEPARATOR);

http://git-wip-us.apache.org/repos/asf/drill/blob/36159e22/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/FunctionInitializerTest.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/FunctionInitializerTest.java
 
b/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/FunctionInitializerTest.java
index c2d4bdb..edbd341 100644
--- 
a/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/FunctionInitializerTest.java
+++ 
b/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/FunctionInitializerTest.java
@@ -17,18 +17,17 @@
 package org.apache.drill.exec.expr.fn;
 
 import com.google.common.collect.Lists;
-import mockit.Invocation;
-import mockit.Mock;
-import mockit.MockUp;
-import mockit.integration.junit4.JMockit;
 import org.apache.drill.categories.SqlFunctionTest;
 import org.apache.drill.test.TestTools;
 import org.apache.drill.exec.util.JarUtil;
-import org.codehaus.janino.Java;
+import org.codehaus.janino.Java.CompilationUnit;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.mockito.stubbing.Answer;
 
 import java.net.URL;
 import java.net.URLClassLoader;
@@ -45,9 +44,11 @@ import java.util.concurrent.atomic.AtomicInteger;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.spy;
 
-
-@RunWith(JMockit.class)
+@RunWith(MockitoJUnitRunner.class)
 @Category(SqlFunctionTest.class)
 public class FunctionInitializerTest {
 
@@ -92,16 +93,16 @@ public class FunctionInitializerTest {
 
   @Test
   public void testConcurrentFunctionBodyLoad() throws Exception {
-    final FunctionInitializer functionInitializer = new 
FunctionInitializer(CLASS_NAME, classLoader);
-
+    final FunctionInitializer spyFunctionInitializer = spy(new 
FunctionInitializer(CLASS_NAME, classLoader));
     final AtomicInteger counter = new AtomicInteger();
-    new MockUp<FunctionInitializer>() {
-      @Mock
-      Java.CompilationUnit convertToCompilationUnit(Invocation inv, Class<?> 
clazz) {
+
+    doAnswer(new Answer<CompilationUnit>() {
+      @Override
+      public CompilationUnit answer(InvocationOnMock invocation) throws 
Throwable {
         counter.incrementAndGet();
-        return inv.proceed();
+        return (CompilationUnit) invocation.callRealMethod();
       }
-    };
+    }).when(spyFunctionInitializer).convertToCompilationUnit(any(Class.class));
 
     int threadsNumber = 5;
     ExecutorService executor = Executors.newFixedThreadPool(threadsNumber);
@@ -109,8 +110,8 @@ public class FunctionInitializerTest {
     try {
       List<Future<String>> results = 
executor.invokeAll(Collections.nCopies(threadsNumber, new Callable<String>() {
         @Override
-        public String call() throws Exception {
-          return functionInitializer.getMethod("eval");
+        public String call() {
+          return spyFunctionInitializer.getMethod("eval");
         }
       }));
 

Reply via email to