You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oozie.apache.org by di...@apache.org on 2022/11/24 15:13:01 UTC

[oozie] branch master updated: OOZIE-3675 Upgrade Mockito from 2 to 3.11.2 (jmakai via dionusos)

This is an automated email from the ASF dual-hosted git repository.

dionusos pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/oozie.git


The following commit(s) were added to refs/heads/master by this push:
     new d6d5f1abd OOZIE-3675 Upgrade Mockito from 2 to 3.11.2 (jmakai via dionusos)
d6d5f1abd is described below

commit d6d5f1abd540430e54613ef9b5d1b636c2d6d066
Author: Denes Bodo <di...@apache.org>
AuthorDate: Thu Nov 24 12:44:03 2022 +0100

    OOZIE-3675 Upgrade Mockito from 2 to 3.11.2 (jmakai via dionusos)
    
    Additional note:
    - Setting the surefire plugin's parallel exeucution mode from `classes` to `methods` in the main pom.xml was necessary in order to prevent Mockito listener related intermtitent failures. (by jmakai)
---
 .../org/apache/oozie/cli/TestOozieCLIMethods.java  |  5 ++-
 core/pom.xml                                       |  6 ++++
 .../hadoop/TestScriptLanguageActionExecutor.java   | 38 +++++++++++++---------
 .../java/org/apache/oozie/util/TestDateUtils.java  |  4 +++
 pom.xml                                            | 13 ++++++--
 release-log.txt                                    |  1 +
 .../oozie/action/hadoop/TestLauncherMain.java      |  3 ++
 sharelib/spark/pom.xml                             |  7 ++++
 .../apache/oozie/tools/TestOozieSharelibCLI.java   |  3 ++
 9 files changed, 61 insertions(+), 19 deletions(-)

diff --git a/client/src/test/java/org/apache/oozie/cli/TestOozieCLIMethods.java b/client/src/test/java/org/apache/oozie/cli/TestOozieCLIMethods.java
index 06db6c314..516db53ec 100644
--- a/client/src/test/java/org/apache/oozie/cli/TestOozieCLIMethods.java
+++ b/client/src/test/java/org/apache/oozie/cli/TestOozieCLIMethods.java
@@ -44,9 +44,12 @@ import org.junit.Test;
 import com.google.common.collect.ImmutableList;
 import com.google.common.io.ByteStreams;
 
-import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.junit.MockitoJUnitRunner;
+
 import static org.junit.Assert.assertTrue;
 
+@RunWith(MockitoJUnitRunner.class)
 public class TestOozieCLIMethods {
 
     static final String jobIdPattern = "Job ID[\\s|:]+";
diff --git a/core/pom.xml b/core/pom.xml
index af60423c0..89ea055d4 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -424,6 +424,12 @@
             <scope>test</scope>
         </dependency>
 
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-inline</artifactId>
+            <scope>test</scope>
+        </dependency>
+
         <dependency>
             <groupId>org.powermock</groupId>
             <artifactId>powermock-core</artifactId>
diff --git a/core/src/test/java/org/apache/oozie/action/hadoop/TestScriptLanguageActionExecutor.java b/core/src/test/java/org/apache/oozie/action/hadoop/TestScriptLanguageActionExecutor.java
index 1e1271e28..bebba9d83 100644
--- a/core/src/test/java/org/apache/oozie/action/hadoop/TestScriptLanguageActionExecutor.java
+++ b/core/src/test/java/org/apache/oozie/action/hadoop/TestScriptLanguageActionExecutor.java
@@ -23,18 +23,16 @@ import org.apache.hadoop.fs.FSDataOutputStream;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.oozie.action.ActionExecutor;
-import org.apache.oozie.service.ServiceException;
 import org.apache.oozie.service.Services;
 import org.jdom2.Element;
-import org.jdom2.Namespace;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.mockito.MockedStatic;
+import org.mockito.Mockito;
+import org.mockito.junit.MockitoJUnitRunner;
 
 import java.nio.charset.StandardCharsets;
 
@@ -44,10 +42,8 @@ import static org.mockito.ArgumentMatchers.isNull;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
-import static org.powermock.api.mockito.PowerMockito.when;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest(Services.class)
+@RunWith(MockitoJUnitRunner.class)
 public class TestScriptLanguageActionExecutor {
 
     @Mock private ActionExecutor.Context mockContext;
@@ -60,14 +56,28 @@ public class TestScriptLanguageActionExecutor {
     @Mock private Configuration mockActionConfig;
     @Mock private Services mockServices;
 
-    @Before
-    public void setup() throws ServiceException {
-        PowerMockito.mockStatic(Services.class);
+    private MockedStatic<Services> SERVICES;
 
-        when(Services.get()).thenReturn(mockServices);
+    @Before
+    public void setup()  {
+        SERVICES = Mockito.mockStatic(Services.class);
+        SERVICES.when(Services::get).thenReturn(mockServices);
         doReturn(mockConfiguration).when(mockServices).getConf();
     }
 
+    @After
+    public void tearDown() throws Exception {
+        if (SERVICES != null) {
+            try {
+                SERVICES.close();
+            } catch (Exception e) {
+                e.printStackTrace();
+            } finally {
+                SERVICES = null;
+            }
+        }
+    }
+
     @Test
     public void multibyteInputsAreAcceptedInScripts() throws Exception {
         final String testInput = "林檎";
@@ -90,8 +100,4 @@ public class TestScriptLanguageActionExecutor {
         verify(fsDataOutputStream).write(expectedInput);
     }
 
-    @After
-    public void cleanUp() {
-        Services.get().destroy();
-    }
 }
diff --git a/core/src/test/java/org/apache/oozie/util/TestDateUtils.java b/core/src/test/java/org/apache/oozie/util/TestDateUtils.java
index 1df7b78fd..7fbef5381 100644
--- a/core/src/test/java/org/apache/oozie/util/TestDateUtils.java
+++ b/core/src/test/java/org/apache/oozie/util/TestDateUtils.java
@@ -21,10 +21,14 @@ import org.apache.hadoop.conf.Configuration;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.junit.MockitoJUnitRunner;
+
 import java.text.ParseException;
 import java.util.Date;
 import java.util.TimeZone;
 
+@RunWith(MockitoJUnitRunner.class)
 public class TestDateUtils {
 
     @After
diff --git a/pom.xml b/pom.xml
index 12d6560e9..0b1625b95 100644
--- a/pom.xml
+++ b/pom.xml
@@ -131,6 +131,7 @@
          <spotbugs-maven-plugin.version>3.1.11</spotbugs-maven-plugin.version>
          <spotbugs.version>3.1.11</spotbugs.version>
          <powermock.version>2.0.2</powermock.version>
+         <mockito3.version>3.11.2</mockito3.version>
     </properties>
 
     <modules>
@@ -1452,7 +1453,13 @@
             <dependency>
                 <groupId>org.mockito</groupId>
                 <artifactId>mockito-core</artifactId>
-                <version>2.28.2</version>
+                <version>${mockito3.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.mockito</groupId>
+                <artifactId>mockito-inline</artifactId>
+                <version>${mockito3.version}</version>
             </dependency>
 
             <dependency>
@@ -2089,7 +2096,9 @@
                         <exclude>**/TestSsh*.java</exclude>
                     </excludes>
                     <!-- DO NOT CHANGE THIS VALUES, TESTCASES CANNOT RUN IN PARALLEL -->
-                    <parallel>classes</parallel>
+                    <!-- NOTE: changing parallel execution mode to `classes` can lead to intermittent Mockito listener
+                    related failures-->
+                    <parallel>methods</parallel>
                     <threadCount>1</threadCount>
                     <perCoreThreadCount>true</perCoreThreadCount>
                     <classpathDependencyExcludes>
diff --git a/release-log.txt b/release-log.txt
index f32679613..1f9c825ba 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -1,5 +1,6 @@
 -- Oozie 5.3.0 release (trunk - unreleased)
 
+OOZIE-3675 Upgrade Mockito from 2 to 3.11.2 (jmakai via dionusos)
 OOZIE-3669 Fix purge process for bundles to prevent orphan coordinators (jmakai via dionusos)
 OOZIE-3254 [coordinator] LAST_ONLY and NONE execution modes: possible OutOfMemoryError when there are too many coordinator actions to materialize (jmakai via dionusos)
 OOZIE-3666 Oozie log streaming bug when log timestamps are the same on multiple Oozie servers (jmakai via dionusos)
diff --git a/sharelib/oozie/src/test/java/org/apache/oozie/action/hadoop/TestLauncherMain.java b/sharelib/oozie/src/test/java/org/apache/oozie/action/hadoop/TestLauncherMain.java
index bfa6a26f1..53195aa51 100644
--- a/sharelib/oozie/src/test/java/org/apache/oozie/action/hadoop/TestLauncherMain.java
+++ b/sharelib/oozie/src/test/java/org/apache/oozie/action/hadoop/TestLauncherMain.java
@@ -41,13 +41,16 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.runner.RunWith;
 import org.mockito.Mockito;
+import org.mockito.junit.MockitoJUnitRunner;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
+@RunWith(MockitoJUnitRunner.class)
 public class TestLauncherMain {
     private final ByteArrayOutputStream outContent = new ByteArrayOutputStream();
     private PrintStream originalStream;
diff --git a/sharelib/spark/pom.xml b/sharelib/spark/pom.xml
index 279aa8927..3c62951a6 100644
--- a/sharelib/spark/pom.xml
+++ b/sharelib/spark/pom.xml
@@ -434,6 +434,13 @@
                     </descriptors>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <parallel>classes</parallel>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 </project>
diff --git a/tools/src/test/java/org/apache/oozie/tools/TestOozieSharelibCLI.java b/tools/src/test/java/org/apache/oozie/tools/TestOozieSharelibCLI.java
index 433cfdb34..8d6269e97 100644
--- a/tools/src/test/java/org/apache/oozie/tools/TestOozieSharelibCLI.java
+++ b/tools/src/test/java/org/apache/oozie/tools/TestOozieSharelibCLI.java
@@ -26,6 +26,8 @@ import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.junit.MockitoJUnitRunner;
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
@@ -51,6 +53,7 @@ import static org.mockito.Mockito.verify;
 /**
  * Test OozieSharelibCLI
  */
+@RunWith(MockitoJUnitRunner.class)
 public class TestOozieSharelibCLI {
 
     private final static String TEST_SHAERELIBNAME1 = "sharelibName";