diff --git a/pom.xml b/pom.xml
index 10dce9226fc..2497dee7e0a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -113,7 +113,7 @@
1.13.1
5.9.1
18.0
- 3.2.4
+ 3.12.4
2.0.5
1.0-20081010.060147
1.0.1
@@ -1062,6 +1062,7 @@
ui/public/**
ui/legacy/**
utils/testsmallfileinactive
+ utils/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
diff --git a/utils/src/test/java/com/cloud/utils/FileUtilTest.java b/utils/src/test/java/com/cloud/utils/FileUtilTest.java
index 70ad39cd585..87e1a18e85a 100644
--- a/utils/src/test/java/com/cloud/utils/FileUtilTest.java
+++ b/utils/src/test/java/com/cloud/utils/FileUtilTest.java
@@ -20,49 +20,52 @@ import com.cloud.utils.ssh.SshHelper;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.MockedStatic;
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.mockito.junit.MockitoJUnitRunner;
import java.io.File;
import static org.mockito.ArgumentMatchers.nullable;
-@PrepareForTest(value = {SshHelper.class})
-@RunWith(PowerMockRunner.class)
-@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.parsers.*", "javax.xml.*", "org.w3c.dom.*", "org.xml.*"})
+@RunWith(MockitoJUnitRunner.class)
public class FileUtilTest {
@Test
public void successfulScpTest() throws Exception {
- PowerMockito.mockStatic(SshHelper.class);
+ MockedStatic sshHelperMocked = Mockito.mockStatic(SshHelper.class);
String basePath = "/tmp";
String[] files = new String[] { "file1.txt" };
int sshPort = 3922;
String controlIp = "10.0.0.10";
String destPath = "/home/cloud/";
File pemFile = new File("/root/.ssh/id_rsa");
- PowerMockito.doNothing().when(SshHelper.class, "scpTo", Mockito.anyString(), Mockito.anyInt(), Mockito.anyString(), Mockito.any(File.class), nullable(String.class), Mockito.anyString(), Mockito.any(String[].class), Mockito.anyString());
+ sshHelperMocked.when(() ->
+ SshHelper.scpTo(
+ Mockito.anyString(), Mockito.anyInt(), Mockito.anyString(), Mockito.any(File.class), nullable(String.class), Mockito.anyString(), Mockito.any(String[].class), Mockito.anyString()
+ )).then(invocation -> null);
FileUtil.scpPatchFiles(controlIp, destPath, sshPort, pemFile, files, basePath);
+ sshHelperMocked.close();
}
@Test
public void FailingScpFilesTest() throws Exception {
- PowerMockito.mockStatic(SshHelper.class);
String basePath = "/tmp";
String[] files = new String[] { "file1.txt" };
int sshPort = 3922;
String controlIp = "10.0.0.10";
String destPath = "/home/cloud/";
File pemFile = new File("/root/.ssh/id_rsa");
- PowerMockito.doThrow(new Exception()).when(SshHelper.class, "scpTo", Mockito.anyString(), Mockito.anyInt(), Mockito.anyString(), Mockito.any(File.class), Mockito.anyString(), Mockito.anyString(), Mockito.any(String[].class), Mockito.anyString());
+ MockedStatic sshHelperMocked = Mockito.mockStatic(SshHelper.class);
+ sshHelperMocked.when(() ->
+ SshHelper.scpTo(Mockito.anyString(), Mockito.anyInt(), Mockito.anyString(), Mockito.any(File.class), Mockito.anyString(), Mockito.anyString(), Mockito.any(String[].class), Mockito.anyString()
+ )).thenThrow(new Exception());
try {
FileUtil.scpPatchFiles(controlIp, destPath, sshPort, pemFile, files, basePath);
} catch (Exception e) {
Assert.assertEquals("Failed to scp files to system VM", e.getMessage());
}
+ sshHelperMocked.close();
}
diff --git a/utils/src/test/java/com/cloud/utils/TestProfiler.java b/utils/src/test/java/com/cloud/utils/TestProfiler.java
index 1520963c6e3..1d2d5f7aecd 100644
--- a/utils/src/test/java/com/cloud/utils/TestProfiler.java
+++ b/utils/src/test/java/com/cloud/utils/TestProfiler.java
@@ -23,16 +23,11 @@ import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PowerMockIgnore;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
import com.cloud.utils.testcase.Log4jEnabledTestCase;
+import org.mockito.junit.MockitoJUnitRunner;
-@RunWith(PowerMockRunner.class)
-@PowerMockIgnore({ "javax.management.*", "com.sun.org.apache.xerces.*", "javax.xml.*",
- "org.xml.*", "org.w3c.dom.*", "com.sun.org.apache.xalan.*", "javax.activation.*" })
-@PrepareForTest(Profiler.class)
+@RunWith(MockitoJUnitRunner.class)
public class TestProfiler extends Log4jEnabledTestCase {
private static final long SLEEP_TIME_NANO = 1000000000L;
diff --git a/utils/src/test/java/com/cloud/utils/UriUtilsParametrizedTest.java b/utils/src/test/java/com/cloud/utils/UriUtilsParametrizedTest.java
index 68479f51d9f..3f1e707c607 100644
--- a/utils/src/test/java/com/cloud/utils/UriUtilsParametrizedTest.java
+++ b/utils/src/test/java/com/cloud/utils/UriUtilsParametrizedTest.java
@@ -31,18 +31,12 @@ import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
+import org.mockito.MockedStatic;
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.powermock.modules.junit4.PowerMockRunnerDelegate;
import com.google.common.collect.ImmutableSet;
-@RunWith(PowerMockRunner.class)
-@PowerMockRunnerDelegate(Parameterized.class)
-@PowerMockIgnore({"javax.xml.*", "org.apache.xerces.*", "org.xml.*", "org.w3c.*"})
+@RunWith(Parameterized.class)
public class UriUtilsParametrizedTest {
@FunctionalInterface
public interface ThrowingBlock {
@@ -149,14 +143,11 @@ public class UriUtilsParametrizedTest {
}
@Test
- @PrepareForTest({UriUtils.class})
-
public void validateUrl() throws Exception {
+ MockedStatic inetAddressMocked = Mockito.mockStatic(InetAddress.class);
InetAddress inetAddressMock = Mockito.mock(InetAddress.class);
-
- PowerMockito.mockStatic(InetAddress.class);
- PowerMockito.when(InetAddress.getByName(Mockito.anyString())).thenReturn(inetAddressMock);
+ inetAddressMocked.when(() -> InetAddress.getByName(Mockito.anyString())).thenReturn(inetAddressMock);
if (expectSuccess) {
UriUtils.validateUrl(format, url);
@@ -164,14 +155,14 @@ public class UriUtilsParametrizedTest {
assertThrows(() -> UriUtils.validateUrl(format, url), IllegalArgumentException.class);
}
- PowerMockito.verifyStatic(InetAddress.class);
- InetAddress.getByName(Mockito.anyString());
+ inetAddressMocked.verify(() -> InetAddress.getByName(Mockito.anyString()));
Mockito.verify(inetAddressMock).isAnyLocalAddress();
Mockito.verify(inetAddressMock).isLinkLocalAddress();
Mockito.verify(inetAddressMock).isLoopbackAddress();
Mockito.verify(inetAddressMock).isMulticastAddress();
+ inetAddressMocked.close();
}
@Test
diff --git a/utils/src/test/java/com/cloud/utils/net/NetUtilsTest.java b/utils/src/test/java/com/cloud/utils/net/NetUtilsTest.java
index 53e2e3ae376..4a6c5df4fd0 100644
--- a/utils/src/test/java/com/cloud/utils/net/NetUtilsTest.java
+++ b/utils/src/test/java/com/cloud/utils/net/NetUtilsTest.java
@@ -52,15 +52,12 @@ import com.googlecode.ipv6.IPv6Address;
import com.googlecode.ipv6.IPv6Network;
import org.junit.runner.RunWith;
+import org.mockito.MockedStatic;
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.mockito.runners.MockitoJUnitRunner;
-@RunWith(PowerMockRunner.class)
-@PowerMockIgnore({"jdk.xml.internal.*", "javax.xml.parsers.*", "org.xml.sax.*", "org.w3c.dom.*"})
+@RunWith(MockitoJUnitRunner.class)
public class NetUtilsTest {
private static final String WIDE_SHARED_NET_CIDR_IP = "10.20.0.0";
private static final List WIDE_SHARED_NET_USED_IPS = List.of("10.20.0.22", "10.20.1.22", "10.20.2.22");
@@ -815,34 +812,34 @@ public class NetUtilsTest {
}
@Test
- @PrepareForTest(NetUtils.class)
public void getNetworkInterfaceTestReturnNullWhenGetByNameReturnsNull() throws SocketException {
- PowerMockito.mockStatic(NetworkInterface.class);
- PowerMockito.when(NetworkInterface.getByName(Mockito.anyString())).thenReturn(null);
+ MockedStatic networkInterfaceMocked = Mockito.mockStatic(NetworkInterface.class);
+ Mockito.when(NetworkInterface.getByName(Mockito.anyString())).thenReturn(null);
NetworkInterface result = NetUtils.getNetworkInterface(" test ");
Assert.assertNull(result);
+ networkInterfaceMocked.close();
}
@Test
- @PrepareForTest(NetUtils.class)
public void getNetworkInterfaceTestReturnNullWhenGetByNameThrowsException() throws SocketException {
- PowerMockito.mockStatic(NetworkInterface.class);
- PowerMockito.when(NetworkInterface.getByName(Mockito.anyString())).thenThrow(SocketException.class);
+ MockedStatic networkInterfaceMocked = Mockito.mockStatic(NetworkInterface.class);
+ Mockito.when(NetworkInterface.getByName(Mockito.anyString())).thenThrow(SocketException.class);
NetworkInterface result = NetUtils.getNetworkInterface(" test ");
Assert.assertNull(result);
+ networkInterfaceMocked.close();
}
@Test
- @PrepareForTest(NetUtils.class)
public void getNetworkInterfaceTestReturnInterfaceReturnedByGetByName() throws SocketException {
- NetworkInterface expected = PowerMockito.mock(NetworkInterface.class);
- PowerMockito.mockStatic(NetworkInterface.class);
- PowerMockito.when(NetworkInterface.getByName(Mockito.anyString())).thenReturn(expected);
+ MockedStatic networkInterfaceMocked = Mockito.mockStatic(NetworkInterface.class);
+ NetworkInterface expected = Mockito.mock(NetworkInterface.class);
+ Mockito.when(NetworkInterface.getByName(Mockito.anyString())).thenReturn(expected);
NetworkInterface result = NetUtils.getNetworkInterface(" test ");
Assert.assertEquals(expected, result);
+ networkInterfaceMocked.close();
}
}
diff --git a/utils/src/test/java/com/cloud/utils/ssh/SshHelperTest.java b/utils/src/test/java/com/cloud/utils/ssh/SshHelperTest.java
index 37bd089dfc5..04d84435abe 100644
--- a/utils/src/test/java/com/cloud/utils/ssh/SshHelperTest.java
+++ b/utils/src/test/java/com/cloud/utils/ssh/SshHelperTest.java
@@ -25,38 +25,31 @@ import java.io.InputStream;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.MockedStatic;
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.mockito.runners.MockitoJUnitRunner;
import com.trilead.ssh2.ChannelCondition;
import com.trilead.ssh2.Connection;
import com.trilead.ssh2.Session;
-@PrepareForTest({ Thread.class, SshHelper.class })
-@PowerMockIgnore({ "javax.management.*", "com.sun.org.apache.xerces.*", "javax.xml.*",
- "org.xml.*", "org.w3c.dom.*", "com.sun.org.apache.xalan.*", "javax.activation.*" })
-@RunWith(PowerMockRunner.class)
+@RunWith(MockitoJUnitRunner.class)
public class SshHelperTest {
@Test
public void canEndTheSshConnectionTest() throws Exception {
- PowerMockito.spy(SshHelper.class);
+ MockedStatic sshHelperMocked = Mockito.mockStatic(SshHelper.class, Mockito.CALLS_REAL_METHODS);
Session mockedSession = Mockito.mock(Session.class);
- PowerMockito.doReturn(true).when(SshHelper.class, "isChannelConditionEof", Mockito.anyInt());
- Mockito.when(mockedSession.waitForCondition(ChannelCondition.EXIT_STATUS, 1l)).thenReturn(0);
- PowerMockito.doNothing().when(SshHelper.class, "throwSshExceptionIfConditionsTimeout", Mockito.anyInt());
+ Mockito.when(SshHelper.isChannelConditionEof(Mockito.anyInt())).thenReturn(true);
+ Mockito.when(mockedSession.waitForCondition(ChannelCondition.EXIT_STATUS, 1L)).thenReturn(0);
SshHelper.canEndTheSshConnection(1, mockedSession, 0);
-
- PowerMockito.verifyStatic(SshHelper.class);
- SshHelper.isChannelConditionEof(Mockito.anyInt());
- SshHelper.throwSshExceptionIfConditionsTimeout(Mockito.anyInt());
+ sshHelperMocked.verify(() -> SshHelper.isChannelConditionEof(Mockito.anyInt()), Mockito.times(1));
+ sshHelperMocked.verify(() -> SshHelper.throwSshExceptionIfConditionsTimeout(Mockito.anyInt()));
Mockito.verify(mockedSession).waitForCondition(ChannelCondition.EXIT_STATUS, 1l);
+ sshHelperMocked.close();
}
@Test(expected = SshException.class)
@@ -143,7 +136,6 @@ public class SshHelperTest {
@Test
public void openConnectionSessionTest() throws IOException, InterruptedException {
Connection conn = Mockito.mock(Connection.class);
- PowerMockito.mockStatic(Thread.class);
SshHelper.openConnectionSession(conn);
Mockito.verify(conn).openSession();
diff --git a/utils/src/test/java/com/cloud/utils/validation/ChecksumUtilTest.java b/utils/src/test/java/com/cloud/utils/validation/ChecksumUtilTest.java
index 08cc389621e..2b99275b978 100644
--- a/utils/src/test/java/com/cloud/utils/validation/ChecksumUtilTest.java
+++ b/utils/src/test/java/com/cloud/utils/validation/ChecksumUtilTest.java
@@ -20,37 +20,35 @@ import com.cloud.utils.script.Script;
import org.apache.cloudstack.utils.security.DigestHelper;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.MockedStatic;
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.mockito.junit.MockitoJUnitRunner;
+
import java.io.File;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-@PrepareForTest(value = {Script.class, DigestHelper.class})
-@RunWith(PowerMockRunner.class)
-@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.parsers.*", "javax.xml.*", "org.w3c.dom.*", "org.xml.*"})
+@RunWith(MockitoJUnitRunner.class)
public class ChecksumUtilTest {
@Test
public void invalidFileForCheckSumValidationTest() {
- PowerMockito.mockStatic(Script.class);
+ MockedStatic