diff --git a/api/src/test/java/org/apache/cloudstack/api/command/admin/offering/CreateNetworkOfferingCmdTest.java b/api/src/test/java/org/apache/cloudstack/api/command/admin/offering/CreateNetworkOfferingCmdTest.java index 8b95456a84c..45490a31dfc 100644 --- a/api/src/test/java/org/apache/cloudstack/api/command/admin/offering/CreateNetworkOfferingCmdTest.java +++ b/api/src/test/java/org/apache/cloudstack/api/command/admin/offering/CreateNetworkOfferingCmdTest.java @@ -17,20 +17,36 @@ package org.apache.cloudstack.api.command.admin.offering; +import com.cloud.configuration.ConfigurationService; +import com.cloud.host.Host; +import com.cloud.offering.NetworkOffering; +import junit.framework.TestCase; +import org.apache.cloudstack.api.ResponseGenerator; import org.apache.cloudstack.api.command.admin.network.CreateNetworkOfferingCmd; +import org.apache.cloudstack.api.response.HostResponse; +import org.apache.cloudstack.api.response.ListResponse; +import org.apache.cloudstack.api.response.NetworkOfferingResponse; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; import org.springframework.test.util.ReflectionTestUtils; -public class CreateNetworkOfferingCmdTest { +import java.util.Arrays; +import java.util.List; + + +public class CreateNetworkOfferingCmdTest extends TestCase { @InjectMocks private CreateNetworkOfferingCmd createNetworkOfferingCmd = new CreateNetworkOfferingCmd(); + String netName = "network"; + @Test public void createVpcNtwkOffWithEmptyDisplayText() { - String netName = "network"; ReflectionTestUtils.setField(createNetworkOfferingCmd, "networkOfferingName", netName); Assert.assertEquals(createNetworkOfferingCmd.getDisplayText(), netName); } diff --git a/plugins/network-elements/nsx/pom.xml b/plugins/network-elements/nsx/pom.xml index 8be72484c04..aaefbe8438d 100644 --- a/plugins/network-elements/nsx/pom.xml +++ b/plugins/network-elements/nsx/pom.xml @@ -37,8 +37,8 @@ ${cs.jacoco-plugin.version} - **/org/apache/cloudstack/agent/api/** - **/org/apache/cloudstack/api/response/** + **/org/apache/cloudstack/agent/api/* + **/org/apache/cloudstack/api/response/* diff --git a/plugins/network-elements/nsx/src/test/java/org/apache/cloudstack/service/NsxGuestNetworkGuruTest.java b/plugins/network-elements/nsx/src/test/java/org/apache/cloudstack/service/NsxGuestNetworkGuruTest.java index d14725f4508..8343713aaa8 100644 --- a/plugins/network-elements/nsx/src/test/java/org/apache/cloudstack/service/NsxGuestNetworkGuruTest.java +++ b/plugins/network-elements/nsx/src/test/java/org/apache/cloudstack/service/NsxGuestNetworkGuruTest.java @@ -249,10 +249,7 @@ public class NsxGuestNetworkGuruTest { when(network.getTrafficType()).thenReturn(Networks.TrafficType.Guest); when(vmProfile.getVirtualMachine()).thenReturn(virtualMachine); when(virtualMachine.getType()).thenReturn(VirtualMachine.Type.User); -// when(network.getId()).thenReturn(2L); -// when(offering.getId()).thenReturn(11L); when(networkModel.getNetworkIp4Dns(any(Network.class), nullable(DataCenter.class))).thenReturn(dns); -// when(networkModel.getNextAvailableMacAddressInNetwork(anyLong())).thenReturn(macAddress); when(nicProfile.getMacAddress()).thenReturn(macAddress); when(networkOfferingDao.isIpv6Supported(anyLong())).thenReturn(false); @@ -274,15 +271,11 @@ public class NsxGuestNetworkGuruTest { when(vmProfile.getVirtualMachine()).thenReturn(virtualMachine); when(virtualMachine.getType()).thenReturn(VirtualMachine.Type.DomainRouter); when(network.getId()).thenReturn(2L); -// when(offering.getId()).thenReturn(11L); -// when(networkModel.getNetworkIp4Dns(any(Network.class), nullable(DataCenter.class))).thenReturn(dns); -// when(networkModel.getNextAvailableMacAddressInNetwork(anyLong())).thenReturn(macAddress); when(nicProfile.getMacAddress()).thenReturn(macAddress); when(networkOfferingDao.isIpv6Supported(anyLong())).thenReturn(false); when(network.getDataCenterId()).thenReturn(1L); when(network.getAccountId()).thenReturn(5L); when(network.getVpcId()).thenReturn(51L); -// when(account.getDomainId()).thenReturn(2L); when(dcDao.findById(anyLong())).thenReturn(Mockito.mock(DataCenterVO.class)); when(accountDao.findById(anyLong())).thenReturn(Mockito.mock(AccountVO.class)); when(vpcDao.findById(anyLong())).thenReturn(Mockito.mock(VpcVO.class)); diff --git a/server/src/test/java/com/cloud/configuration/ConfigurationManagerImplTest.java b/server/src/test/java/com/cloud/configuration/ConfigurationManagerImplTest.java index 38189313a52..83b792dc303 100644 --- a/server/src/test/java/com/cloud/configuration/ConfigurationManagerImplTest.java +++ b/server/src/test/java/com/cloud/configuration/ConfigurationManagerImplTest.java @@ -16,11 +16,46 @@ // under the License. package com.cloud.configuration; +import com.cloud.capacity.dao.CapacityDao; +import com.cloud.dc.DataCenterIpAddressVO; +import com.cloud.dc.DataCenterVO; +import com.cloud.dc.HostPodVO; +import com.cloud.dc.VlanVO; +import com.cloud.dc.dao.DataCenterDao; +import com.cloud.dc.dao.DataCenterIpAddressDao; +import com.cloud.dc.dao.DedicatedResourceDao; +import com.cloud.dc.dao.HostPodDao; +import com.cloud.dc.dao.VlanDao; import com.cloud.exception.InvalidParameterValueException; +import com.cloud.host.HostVO; +import com.cloud.host.dao.HostDao; +import com.cloud.network.Network; +import com.cloud.network.NetworkModel; +import com.cloud.network.NetworkService; +import com.cloud.network.Networks; +import com.cloud.network.dao.IPAddressDao; +import com.cloud.network.dao.NsxProviderDao; +import com.cloud.network.dao.PhysicalNetworkDao; +import com.cloud.network.dao.PhysicalNetworkVO; +import com.cloud.network.element.NsxProviderVO; +import com.cloud.offering.NetworkOffering; +import com.cloud.offerings.NetworkOfferingVO; +import com.cloud.offerings.dao.NetworkOfferingDao; import com.cloud.storage.StorageManager; +import com.cloud.storage.VolumeVO; +import com.cloud.storage.dao.VMTemplateZoneDao; +import com.cloud.storage.dao.VolumeDao; import com.cloud.utils.net.NetUtils; +import com.cloud.vm.VMInstanceVO; +import com.cloud.vm.dao.VMInstanceDao; +import org.apache.cloudstack.annotation.dao.AnnotationDao; +import org.apache.cloudstack.api.command.admin.network.CreateNetworkOfferingCmd; +import org.apache.cloudstack.api.command.admin.zone.DeleteZoneCmd; +import org.apache.cloudstack.engine.subsystem.api.storage.ZoneScope; import org.apache.cloudstack.framework.config.ConfigDepot; import org.apache.cloudstack.framework.config.ConfigKey; +import org.apache.cloudstack.framework.config.dao.ConfigurationDao; +import org.apache.cloudstack.storage.datastore.db.ImageStoreDao; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -29,19 +64,88 @@ import org.mockito.Mock; import org.mockito.MockedStatic; import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; +import org.springframework.test.util.ReflectionTestUtils; +import java.util.Collections; import java.util.List; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.Mockito.*; + @RunWith(MockitoJUnitRunner.class) public class ConfigurationManagerImplTest { @Mock ConfigDepot configDepot; + @Mock + NsxProviderDao nsxProviderDao; + @Mock + DataCenterDao zoneDao; + @Mock + HostDao hostDao; + @Mock + HostPodDao podDao; + @Mock + DataCenterIpAddressDao ipAddressDao; + @Mock + IPAddressDao publicIpAddressDao; + @Mock + VMInstanceDao vmInstanceDao; + @Mock + VolumeDao volumeDao; + @Mock + PhysicalNetworkDao physicalNetworkDao; + @Mock + ImageStoreDao imageStoreDao; + @Mock + VlanDao vlanDao; + @Mock + VMTemplateZoneDao vmTemplateZoneDao; + @Mock + CapacityDao capacityDao; + @Mock + DedicatedResourceDao dedicatedResourceDao; + @Mock + AnnotationDao annotationDao; + @Mock + ConfigurationDao configDao; + @Mock + NetworkOfferingDao networkOfferingDao; + @Mock + NetworkService networkService; + @Mock + NetworkModel networkModel; + ConfigurationManagerImpl configurationManagerImplSpy = Mockito.spy(new ConfigurationManagerImpl()); + DeleteZoneCmd deleteZoneCmd; + CreateNetworkOfferingCmd createNetworkOfferingCmd; @Before public void setUp() throws Exception { configurationManagerImplSpy._configDepot = configDepot; + configurationManagerImplSpy.nsxProviderDao = nsxProviderDao; + configurationManagerImplSpy._zoneDao = zoneDao; + configurationManagerImplSpy._hostDao = hostDao; + configurationManagerImplSpy._podDao = podDao; + configurationManagerImplSpy._privateIpAddressDao = ipAddressDao; + configurationManagerImplSpy._publicIpAddressDao = publicIpAddressDao; + configurationManagerImplSpy._vmInstanceDao = vmInstanceDao; + configurationManagerImplSpy._volumeDao = volumeDao; + configurationManagerImplSpy._physicalNetworkDao = physicalNetworkDao; + configurationManagerImplSpy._imageStoreDao = imageStoreDao; + configurationManagerImplSpy._vlanDao = vlanDao; + configurationManagerImplSpy._capacityDao = capacityDao; + configurationManagerImplSpy._dedicatedDao = dedicatedResourceDao; + configurationManagerImplSpy._configDao = configDao; + configurationManagerImplSpy._networkOfferingDao = networkOfferingDao; + configurationManagerImplSpy._networkSvc = networkService; + configurationManagerImplSpy._networkModel = networkModel; + ReflectionTestUtils.setField(configurationManagerImplSpy, "templateZoneDao", vmTemplateZoneDao); + ReflectionTestUtils.setField(configurationManagerImplSpy, "annotationDao", annotationDao); + + deleteZoneCmd = Mockito.mock(DeleteZoneCmd.class); + createNetworkOfferingCmd = Mockito.mock(CreateNetworkOfferingCmd.class); } @Test @@ -250,4 +354,55 @@ public class ConfigurationManagerImplTest { Mockito.doReturn(key).when(configurationManagerImplSpy._configDepot).get("config.iprange"); configurationManagerImplSpy.validateIpAddressRelatedConfigValues("config.iprange", "192.168.1.1-192.168.1.100"); } + + @Test + public void testDeleteZoneInvokesDeleteNsxProviderWhenNSXIsEnabled() { + NsxProviderVO nsxProviderVO = Mockito.mock(NsxProviderVO.class); + DataCenterVO dataCenterVO = Mockito.mock(DataCenterVO.class); + + when(nsxProviderDao.findByZoneId(anyLong())).thenReturn(nsxProviderVO); + when(zoneDao.findById(anyLong())).thenReturn(dataCenterVO); + when(hostDao.findByDataCenterId(anyLong())).thenReturn(Collections.emptyList()); + when(podDao.listByDataCenterId(anyLong())).thenReturn(Collections.emptyList()); + when(ipAddressDao.countIPs(anyLong(), anyBoolean())).thenReturn(0); + when(publicIpAddressDao.countIPs(anyLong(), anyBoolean())).thenReturn(0); + when(vmInstanceDao.listByZoneId(anyLong())).thenReturn(Collections.emptyList()); + when(volumeDao.findByDc(anyLong())).thenReturn(Collections.emptyList()); + when(physicalNetworkDao.listByZone(anyLong())).thenReturn(Collections.emptyList()); + when(imageStoreDao.findByZone(any(ZoneScope.class), nullable(Boolean.class))).thenReturn(Collections.emptyList()); + when(vlanDao.listByZone(anyLong())).thenReturn(List.of(Mockito.mock(VlanVO.class))); + when(nsxProviderVO.getId()).thenReturn(1L); + when(zoneDao.remove(anyLong())).thenReturn(true); + when(capacityDao.removeBy(nullable(Short.class), anyLong(), nullable(Long.class), nullable(Long.class), nullable(Long.class))).thenReturn(true); + when(dedicatedResourceDao.findByZoneId(anyLong())).thenReturn(null); + when(annotationDao.removeByEntityType(anyString(), anyString())).thenReturn(true); + + configurationManagerImplSpy.deleteZone(deleteZoneCmd); + + verify(nsxProviderDao, times(1)).remove(anyLong()); + } + + @Test + public void testCreateNetworkOfferingForNsx() { + NetworkOfferingVO offeringVO = Mockito.mock(NetworkOfferingVO.class); + + when(createNetworkOfferingCmd.isForNsx()).thenReturn(true); + when(createNetworkOfferingCmd.getNsxMode()).thenReturn(NetworkOffering.NsxMode.NATTED.name()); + when(createNetworkOfferingCmd.getTraffictype()).thenReturn(Networks.TrafficType.Guest.name()); + when(createNetworkOfferingCmd.getGuestIpType()).thenReturn(Network.GuestType.Isolated.name()); + when(createNetworkOfferingCmd.getAvailability()).thenReturn(NetworkOffering.Availability.Optional.name()); + when(configurationManagerImplSpy.createNetworkOffering(anyString(), anyString(), any(Networks.TrafficType.class), anyString(), + anyBoolean(), any(NetworkOffering.Availability.class), anyInt(), anyMap(), anyBoolean(), any(Network.GuestType.class), + anyBoolean(), anyLong(), anyBoolean(), anyMap(), anyBoolean(), anyBoolean(), anyMap(), anyBoolean(), anyInt(), + anyBoolean(), anyBoolean(), anyBoolean(), anyBoolean(), anyString(), anyList(), anyList(), anyBoolean(), any(NetUtils.InternetProtocol.class))) + .thenReturn(offeringVO); + when(configDao.getValue(anyString())).thenReturn("1000"); + when(networkOfferingDao.persist(any(NetworkOfferingVO.class), anyMap())).thenReturn(offeringVO); + doNothing().when(networkService).validateIfServiceOfferingIsActiveAndSystemVmTypeIsDomainRouter(anyLong()); + doNothing().when(networkModel).canProviderSupportServices(anyMap()); + + NetworkOffering offering = configurationManagerImplSpy.createNetworkOffering(createNetworkOfferingCmd); + + Assert.assertNotNull(offering); + } }