From 481d2bd9c3fc1bbbf4751d479ef1a7de4bcbf674 Mon Sep 17 00:00:00 2001 From: Vishesh Date: Wed, 20 Sep 2023 13:40:14 +0530 Subject: [PATCH] Remove powermock from core (#7978) --- .../resource/ServerResourceBaseTest.java | 162 +++++++++--------- .../storage/template/OVAProcessorTest.java | 51 +++--- .../storage/template/QCOW2ProcessorTest.java | 8 +- .../storage/template/VhdProcessorTest.java | 8 +- .../org.mockito.plugins.MockMaker | 1 + 5 files changed, 108 insertions(+), 122 deletions(-) create mode 100644 core/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker diff --git a/core/src/test/java/com/cloud/resource/ServerResourceBaseTest.java b/core/src/test/java/com/cloud/resource/ServerResourceBaseTest.java index d9df73fb9b1..e76ed8b1d1b 100644 --- a/core/src/test/java/com/cloud/resource/ServerResourceBaseTest.java +++ b/core/src/test/java/com/cloud/resource/ServerResourceBaseTest.java @@ -23,10 +23,9 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Captor; +import org.mockito.MockedStatic; import org.mockito.Mockito; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; +import org.mockito.junit.MockitoJUnitRunner; import javax.naming.ConfigurationException; import java.net.NetworkInterface; @@ -40,7 +39,7 @@ import java.util.List; import java.util.Map; -@RunWith(PowerMockRunner.class) +@RunWith(MockitoJUnitRunner.class) public class ServerResourceBaseTest { private static final String[] NIC_NAME_STARTS_TO_AVOID = {"vnif", "vnbr", "peth", "vif", "virbr"}; @@ -54,165 +53,162 @@ public class ServerResourceBaseTest { @Before public void setup() { - networkInterfaceMock1 = PowerMockito.mock(NetworkInterface.class); - networkInterfaceMock2 = PowerMockito.mock(NetworkInterface.class); - networkInterfaceMock3 = PowerMockito.mock(NetworkInterface.class); - networkInterfaceMock4 = PowerMockito.mock(NetworkInterface.class); + networkInterfaceMock1 = Mockito.mock(NetworkInterface.class); + networkInterfaceMock2 = Mockito.mock(NetworkInterface.class); + networkInterfaceMock3 = Mockito.mock(NetworkInterface.class); + networkInterfaceMock4 = Mockito.mock(NetworkInterface.class); } @Test - @PrepareForTest(ServerResourceBase.class) public void isValidNicToUseAsPrivateNicTestReturnFalseWhenNicIsVirtual() { - NetworkInterface networkInterfaceMock = PowerMockito.mock(NetworkInterface.class); - PowerMockito.when(networkInterfaceMock.isVirtual()).thenReturn(true); + NetworkInterface networkInterfaceMock = Mockito.mock(NetworkInterface.class); + Mockito.when(networkInterfaceMock.isVirtual()).thenReturn(true); Assert.assertFalse(serverResourceBaseSpy.isValidNicToUseAsPrivateNic(networkInterfaceMock)); } @Test - @PrepareForTest(ServerResourceBase.class) public void isValidNicToUseAsPrivateNicTestReturnFalseWhenNicNameStartsWithOneOfTheAvoidList() { - NetworkInterface networkInterfaceMock = PowerMockito.mock(NetworkInterface.class); - PowerMockito.when(networkInterfaceMock.isVirtual()).thenReturn(false); - PowerMockito.when(networkInterfaceMock.getName()).thenReturn("vniftest", "vnbrtest", "pethtest", "viftest", "virbrtest"); + NetworkInterface networkInterfaceMock = Mockito.mock(NetworkInterface.class); + Mockito.when(networkInterfaceMock.isVirtual()).thenReturn(false); + Mockito.when(networkInterfaceMock.getName()).thenReturn("vniftest", "vnbrtest", "pethtest", "viftest", "virbrtest"); Arrays.asList(NIC_NAME_STARTS_TO_AVOID).forEach(type -> Assert.assertFalse(serverResourceBaseSpy.isValidNicToUseAsPrivateNic(networkInterfaceMock))); } @Test - @PrepareForTest(ServerResourceBase.class) public void isValidNicToUseAsPrivateNicTestReturnFalseWhenNicNameContainsColon() { - NetworkInterface networkInterfaceMock = PowerMockito.mock(NetworkInterface.class); - PowerMockito.when(networkInterfaceMock.isVirtual()).thenReturn(false); - PowerMockito.when(networkInterfaceMock.getName()).thenReturn("te:st"); + NetworkInterface networkInterfaceMock = Mockito.mock(NetworkInterface.class); + Mockito.when(networkInterfaceMock.isVirtual()).thenReturn(false); + Mockito.when(networkInterfaceMock.getName()).thenReturn("te:st"); Assert.assertFalse(serverResourceBaseSpy.isValidNicToUseAsPrivateNic(networkInterfaceMock)); } @Test - @PrepareForTest({ServerResourceBase.class, NetUtils.class}) public void isValidNicToUseAsPrivateNicTestReturnFalseWhenNetUtilsGetNicParamsReturnsNull() { - NetworkInterface networkInterfaceMock = PowerMockito.mock(NetworkInterface.class); - PowerMockito.when(networkInterfaceMock.isVirtual()).thenReturn(false); - PowerMockito.when(networkInterfaceMock.getName()).thenReturn("testvnif", "testvnbr", "testpeth", "testvif", "testvirbr"); + NetworkInterface networkInterfaceMock = Mockito.mock(NetworkInterface.class); + Mockito.when(networkInterfaceMock.isVirtual()).thenReturn(false); + Mockito.when(networkInterfaceMock.getName()).thenReturn("testvnif", "testvnbr", "testpeth", "testvif", "testvirbr"); - PowerMockito.mockStatic(NetUtils.class); - PowerMockito.when(NetUtils.getNicParams(Mockito.anyString())).thenReturn(null); + try (MockedStatic ignored = Mockito.mockStatic(NetUtils.class)) { + Mockito.when(NetUtils.getNicParams(Mockito.anyString())).thenReturn(null); - Arrays.asList(NIC_NAME_STARTS_TO_AVOID).forEach(type -> { - Assert.assertFalse(serverResourceBaseSpy.isValidNicToUseAsPrivateNic(networkInterfaceMock)); - }); + Arrays.asList(NIC_NAME_STARTS_TO_AVOID).forEach(type -> { + Assert.assertFalse(serverResourceBaseSpy.isValidNicToUseAsPrivateNic(networkInterfaceMock)); + }); + } } @Test - @PrepareForTest({ServerResourceBase.class, NetUtils.class}) public void isValidNicToUseAsPrivateNicTestReturnFalseWhenNetUtilsGetNicParamsReturnsFirstElementNull() { - NetworkInterface networkInterfaceMock = PowerMockito.mock(NetworkInterface.class); - PowerMockito.when(networkInterfaceMock.isVirtual()).thenReturn(false); - PowerMockito.when(networkInterfaceMock.getName()).thenReturn("testvnif", "testvnbr", "testpeth", "testvif", "testvirbr"); + NetworkInterface networkInterfaceMock = Mockito.mock(NetworkInterface.class); + Mockito.when(networkInterfaceMock.isVirtual()).thenReturn(false); + Mockito.when(networkInterfaceMock.getName()).thenReturn("testvnif", "testvnbr", "testpeth", "testvif", "testvirbr"); - PowerMockito.mockStatic(NetUtils.class); - PowerMockito.when(NetUtils.getNicParams(Mockito.anyString())).thenReturn(new String[]{null}); + try (MockedStatic ignored = Mockito.mockStatic(NetUtils.class)) { + Mockito.when(NetUtils.getNicParams(Mockito.anyString())).thenReturn(new String[]{null}); - Arrays.asList(NIC_NAME_STARTS_TO_AVOID).forEach(type -> { - Assert.assertFalse(serverResourceBaseSpy.isValidNicToUseAsPrivateNic(networkInterfaceMock)); - }); + Arrays.asList(NIC_NAME_STARTS_TO_AVOID).forEach(type -> { + Assert.assertFalse(serverResourceBaseSpy.isValidNicToUseAsPrivateNic(networkInterfaceMock)); + }); + } } @Test - @PrepareForTest({ServerResourceBase.class, NetUtils.class}) public void isValidNicToUseAsPrivateNicTestReturnTrueWhenNetUtilsGetNicParamsReturnsAValidFirstElement() { - NetworkInterface networkInterfaceMock = PowerMockito.mock(NetworkInterface.class); - PowerMockito.when(networkInterfaceMock.isVirtual()).thenReturn(false); - PowerMockito.when(networkInterfaceMock.getName()).thenReturn("testvnif", "testvnbr", "testpeth", "testvif", "testvirbr"); + NetworkInterface networkInterfaceMock = Mockito.mock(NetworkInterface.class); + Mockito.when(networkInterfaceMock.isVirtual()).thenReturn(false); + Mockito.when(networkInterfaceMock.getName()).thenReturn("testvnif", "testvnbr", "testpeth", "testvif", "testvirbr"); - PowerMockito.mockStatic(NetUtils.class); - PowerMockito.when(NetUtils.getNicParams(Mockito.anyString())).thenReturn(new String[]{"test"}); + try (MockedStatic ignored = Mockito.mockStatic(NetUtils.class)) { + Mockito.when(NetUtils.getNicParams(Mockito.anyString())).thenReturn(new String[]{"test"}); - Arrays.asList(NIC_NAME_STARTS_TO_AVOID).forEach(type -> { - Assert.assertTrue(serverResourceBaseSpy.isValidNicToUseAsPrivateNic(networkInterfaceMock)); - }); + Arrays.asList(NIC_NAME_STARTS_TO_AVOID).forEach(type -> { + Assert.assertTrue(serverResourceBaseSpy.isValidNicToUseAsPrivateNic(networkInterfaceMock)); + }); + } } @Test(expected = ConfigurationException.class) - @PrepareForTest(ServerResourceBase.class) public void tryToAutoDiscoverResourcePrivateNetworkInterfaceTestThrowConfigurationExceptionWhenNicsDoesNotHaveMoreElements() throws SocketException, ConfigurationException { - PowerMockito.mockStatic(NetworkInterface.class); - PowerMockito.when(NetworkInterface.getNetworkInterfaces()).thenReturn(Collections.enumeration(new ArrayList<>())); + try (MockedStatic ignored = Mockito.mockStatic(NetworkInterface.class)) { + Mockito.when(NetworkInterface.getNetworkInterfaces()).thenReturn(Collections.enumeration(new ArrayList<>())); - serverResourceBaseSpy.tryToAutoDiscoverResourcePrivateNetworkInterface(); + serverResourceBaseSpy.tryToAutoDiscoverResourcePrivateNetworkInterface(); + } } @Test(expected = ConfigurationException.class) - @PrepareForTest(ServerResourceBase.class) public void tryToAutoDiscoverResourcePrivateNetworkInterfaceTestThrowConfigurationExceptionWhenNicsGetNetworkInterfacesThrowsSocketException() throws SocketException, ConfigurationException { - PowerMockito.mockStatic(NetworkInterface.class); - PowerMockito.when(NetworkInterface.getNetworkInterfaces()).thenThrow(SocketException.class); + try (MockedStatic ignored = Mockito.mockStatic(NetworkInterface.class)) { + Mockito.when(NetworkInterface.getNetworkInterfaces()).thenThrow(SocketException.class); - serverResourceBaseSpy.tryToAutoDiscoverResourcePrivateNetworkInterface(); + serverResourceBaseSpy.tryToAutoDiscoverResourcePrivateNetworkInterface(); + } } @Test(expected = ConfigurationException.class) - @PrepareForTest(ServerResourceBase.class) public void tryToAutoDiscoverResourcePrivateNetworkInterfaceTestThrowConfigurationExceptionWhenThereIsNoValidNics() throws SocketException, ConfigurationException { - PowerMockito.mockStatic(NetworkInterface.class); - PowerMockito.when(NetworkInterface.getNetworkInterfaces()).thenReturn(Collections.enumeration(Arrays.asList(networkInterfaceMock1, networkInterfaceMock2))); - Mockito.doReturn(false).when(serverResourceBaseSpy).isValidNicToUseAsPrivateNic(Mockito.any()); + try (MockedStatic ignored = Mockito.mockStatic(NetworkInterface.class)) { + Mockito.when(NetworkInterface.getNetworkInterfaces()).thenReturn(Collections.enumeration(Arrays.asList(networkInterfaceMock1, networkInterfaceMock2))); + Mockito.doReturn(false).when(serverResourceBaseSpy).isValidNicToUseAsPrivateNic(Mockito.any()); - serverResourceBaseSpy.tryToAutoDiscoverResourcePrivateNetworkInterface(); + serverResourceBaseSpy.tryToAutoDiscoverResourcePrivateNetworkInterface(); - Mockito.verify(serverResourceBaseSpy, Mockito.times(2)).isValidNicToUseAsPrivateNic(Mockito.any()); + Mockito.verify(serverResourceBaseSpy, Mockito.times(2)).isValidNicToUseAsPrivateNic(Mockito.any()); + } } @Test - @PrepareForTest(ServerResourceBase.class) public void tryToAutoDiscoverResourcePrivateNetworkInterfaceTestReturnNic() throws SocketException, ConfigurationException { Enumeration interfaces = Collections.enumeration(Arrays.asList(networkInterfaceMock1, networkInterfaceMock2)); - PowerMockito.mockStatic(NetworkInterface.class); - PowerMockito.when(NetworkInterface.getNetworkInterfaces()).thenReturn(interfaces); - Mockito.doReturn(false, true).when(serverResourceBaseSpy).isValidNicToUseAsPrivateNic(Mockito.any()); + try (MockedStatic ignored = Mockito.mockStatic(NetworkInterface.class)) { + Mockito.when(NetworkInterface.getNetworkInterfaces()).thenReturn(interfaces); + Mockito.doReturn(false, true).when(serverResourceBaseSpy).isValidNicToUseAsPrivateNic(Mockito.any()); - serverResourceBaseSpy.tryToAutoDiscoverResourcePrivateNetworkInterface(); + serverResourceBaseSpy.tryToAutoDiscoverResourcePrivateNetworkInterface(); - Assert.assertEquals(networkInterfaceMock2, serverResourceBaseSpy._privateNic); - Mockito.verify(serverResourceBaseSpy, Mockito.times(2)).isValidNicToUseAsPrivateNic(Mockito.any()); + Assert.assertEquals(networkInterfaceMock2, serverResourceBaseSpy._privateNic); + Mockito.verify(serverResourceBaseSpy, Mockito.times(2)).isValidNicToUseAsPrivateNic(Mockito.any()); + } } @Test - @PrepareForTest(NetUtils.class) public void defineResourceNetworkInterfacesTestUseXenbr0WhenPrivateNetworkInterfaceNotConfigured() { Map params = createParamsMap(null, "cloudbr1", "cloudbr2", "cloudbr3"); - PowerMockito.mockStatic(NetUtils.class); - PowerMockito.when(NetUtils.getNetworkInterface(Mockito.anyString())).thenReturn(networkInterfaceMock1, networkInterfaceMock2, networkInterfaceMock3, networkInterfaceMock4); + try (MockedStatic ignored = Mockito.mockStatic(NetUtils.class)) { + Mockito.when(NetUtils.getNetworkInterface(Mockito.anyString())).thenReturn(networkInterfaceMock1, networkInterfaceMock2, networkInterfaceMock3, networkInterfaceMock4); - serverResourceBaseSpy.defineResourceNetworkInterfaces(params); + serverResourceBaseSpy.defineResourceNetworkInterfaces(params); - verifyAndAssertNetworkInterfaces("xenbr0", "cloudbr1", "cloudbr2", "cloudbr3"); + verifyAndAssertNetworkInterfaces("xenbr0", "cloudbr1", "cloudbr2", "cloudbr3"); + } } @Test - @PrepareForTest(NetUtils.class) public void defineResourceNetworkInterfacesTestUseXenbr1WhenPublicNetworkInterfaceNotConfigured() { Map params = createParamsMap("cloudbr0", null, "cloudbr2", "cloudbr3"); - PowerMockito.mockStatic(NetUtils.class); - PowerMockito.when(NetUtils.getNetworkInterface(Mockito.anyString())).thenReturn(networkInterfaceMock1, networkInterfaceMock2, networkInterfaceMock3, networkInterfaceMock4); + try (MockedStatic ignored = Mockito.mockStatic(NetUtils.class)) { + Mockito.when(NetUtils.getNetworkInterface(Mockito.anyString())).thenReturn(networkInterfaceMock1, networkInterfaceMock2, networkInterfaceMock3, networkInterfaceMock4); - serverResourceBaseSpy.defineResourceNetworkInterfaces(params); + serverResourceBaseSpy.defineResourceNetworkInterfaces(params); - verifyAndAssertNetworkInterfaces("cloudbr0", "xenbr1", "cloudbr2", "cloudbr3"); + verifyAndAssertNetworkInterfaces("cloudbr0", "xenbr1", "cloudbr2", "cloudbr3"); + } } @Test - @PrepareForTest(NetUtils.class) public void defineResourceNetworkInterfacesTestUseConfiguredNetworkInterfaces() { Map params = createParamsMap("cloudbr0", "cloudbr1", "cloudbr2", "cloudbr3"); - PowerMockito.mockStatic(NetUtils.class); - PowerMockito.when(NetUtils.getNetworkInterface(Mockito.anyString())).thenReturn(networkInterfaceMock1, networkInterfaceMock2, networkInterfaceMock3, networkInterfaceMock4); + try (MockedStatic ignored = Mockito.mockStatic(NetUtils.class)) { + Mockito.when(NetUtils.getNetworkInterface(Mockito.anyString())).thenReturn(networkInterfaceMock1, networkInterfaceMock2, networkInterfaceMock3, networkInterfaceMock4); - serverResourceBaseSpy.defineResourceNetworkInterfaces(params); + serverResourceBaseSpy.defineResourceNetworkInterfaces(params); - verifyAndAssertNetworkInterfaces("cloudbr0", "cloudbr1", "cloudbr2", "cloudbr3"); + verifyAndAssertNetworkInterfaces("cloudbr0", "cloudbr1", "cloudbr2", "cloudbr3"); + } } private Map createParamsMap(String... params) { @@ -225,7 +221,7 @@ public class ServerResourceBaseTest { } private void verifyAndAssertNetworkInterfaces(String... expectedResults) { - PowerMockito.verifyStatic(NetUtils.class, Mockito.times(4)); + Mockito.verify(NetUtils.class, Mockito.times(4)); NetUtils.getNetworkInterface(keyCaptor.capture()); List keys = keyCaptor.getAllValues(); diff --git a/core/src/test/java/com/cloud/storage/template/OVAProcessorTest.java b/core/src/test/java/com/cloud/storage/template/OVAProcessorTest.java index 2387842fe33..8ab54644718 100644 --- a/core/src/test/java/com/cloud/storage/template/OVAProcessorTest.java +++ b/core/src/test/java/com/cloud/storage/template/OVAProcessorTest.java @@ -28,19 +28,15 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; +import org.mockito.MockedConstruction; 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 java.util.HashMap; import java.util.Map; -@RunWith(PowerMockRunner.class) -@PowerMockIgnore({"javax.xml.*", "java.xml.*", "javax.management.*", "org.apache.xerces.*"}) -@PrepareForTest(OVAProcessor.class) +@RunWith(MockitoJUnitRunner.class) public class OVAProcessorTest { OVAProcessor processor; @@ -49,7 +45,7 @@ public class OVAProcessorTest { @Before public void setUp() throws Exception { - processor = PowerMockito.spy(new OVAProcessor()); + processor = Mockito.spy(new OVAProcessor()); Map params = new HashMap(); params.put(StorageLayer.InstanceConfigKey, mockStorageLayer); processor.configure("OVA Processor", params); @@ -62,11 +58,11 @@ public class OVAProcessorTest { Mockito.when(mockStorageLayer.exists(Mockito.anyString())).thenReturn(true); - Script mockScript = Mockito.mock(Script.class); - PowerMockito.whenNew(Script.class).withAnyArguments().thenReturn(mockScript); - PowerMockito.when(mockScript.execute()).thenReturn("error while untaring the file"); - - processor.process(templatePath, null, templateName); + try (MockedConstruction