From 6f80fc249a97b504be864ab0e9557a7436ddf192 Mon Sep 17 00:00:00 2001 From: Pearl Dsilva Date: Thu, 21 Dec 2023 09:56:53 -0500 Subject: [PATCH] add more tests-1 --- .../router/CommandSetupHelperTest.java | 113 ++++++++++++++++++ .../network/router/NetworkHelperImplTest.java | 77 ++++++++++++ 2 files changed, 190 insertions(+) diff --git a/server/src/test/java/com/cloud/network/router/CommandSetupHelperTest.java b/server/src/test/java/com/cloud/network/router/CommandSetupHelperTest.java index f03ae9d62b2..8f68e7b6793 100644 --- a/server/src/test/java/com/cloud/network/router/CommandSetupHelperTest.java +++ b/server/src/test/java/com/cloud/network/router/CommandSetupHelperTest.java @@ -17,20 +17,92 @@ package com.cloud.network.router; import com.cloud.agent.api.routing.VmDataCommand; +import com.cloud.agent.manager.Commands; +import com.cloud.configuration.ConfigurationManager; +import com.cloud.dc.DataCenter; +import com.cloud.dc.DataCenterVO; +import com.cloud.dc.VlanVO; +import com.cloud.dc.dao.DataCenterDao; +import com.cloud.dc.dao.VlanDao; +import com.cloud.network.NetworkModel; +import com.cloud.network.PublicIpAddress; +import com.cloud.network.addr.PublicIp; +import com.cloud.network.dao.IPAddressDao; +import com.cloud.network.dao.IPAddressVO; +import com.cloud.network.dao.NetworkDao; +import com.cloud.network.dao.NetworkDetailsDao; +import com.cloud.network.dao.NetworkVO; +import com.cloud.network.guru.PublicNetworkGuru; +import com.cloud.network.vpc.VpcVO; +import com.cloud.network.vpc.dao.VpcDao; +import com.cloud.offering.NetworkOffering; +import com.cloud.offerings.NetworkOfferingVO; +import com.cloud.offerings.dao.NetworkOfferingDao; +import com.cloud.offerings.dao.NetworkOfferingDetailsDao; +import com.cloud.utils.net.Ip; +import com.cloud.vm.NicVO; +import com.cloud.vm.VirtualMachine; +import com.cloud.vm.dao.NicDao; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.ArgumentMatchers; import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; +import org.springframework.test.util.ReflectionTestUtils; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; @RunWith(MockitoJUnitRunner.class) public class CommandSetupHelperTest { @InjectMocks protected CommandSetupHelper commandSetupHelper = new CommandSetupHelper(); + @Mock + NicDao nicDao; + @Mock + NetworkDao networkDao; + @Mock + IPAddressDao ipAddressDao; + @Mock + VlanDao vlanDao; + @Mock + NetworkModel networkModel; + @Mock + NetworkOfferingDao networkOfferingDao; + @Mock + ConfigurationManager configurationManager; + @Mock + NetworkOfferingDetailsDao networkOfferingDetailsDao; + @Mock + NetworkDetailsDao networkDetailsDao; + @Mock + VpcDao vpcDao; + @Mock + RouterControlHelper routerControlHelper; + @Mock + DataCenterDao dcDao; + + @Before + public void setUp() { + ReflectionTestUtils.setField(commandSetupHelper, "_nicDao", nicDao); + ReflectionTestUtils.setField(commandSetupHelper, "_networkDao", networkDao); + ReflectionTestUtils.setField(commandSetupHelper, "_ipAddressDao", ipAddressDao); + ReflectionTestUtils.setField(commandSetupHelper, "_vlanDao", vlanDao); + ReflectionTestUtils.setField(commandSetupHelper, "_networkModel", networkModel); + ReflectionTestUtils.setField(commandSetupHelper, "_networkOfferingDao", networkOfferingDao); + ReflectionTestUtils.setField(commandSetupHelper, "networkOfferingDetailsDao", networkOfferingDetailsDao); + ReflectionTestUtils.setField(commandSetupHelper, "networkDetailsDao", networkDetailsDao); + ReflectionTestUtils.setField(commandSetupHelper, "_vpcDao", vpcDao); + ReflectionTestUtils.setField(commandSetupHelper, "_routerControlHelper", routerControlHelper); + ReflectionTestUtils.setField(commandSetupHelper, "_dcDao", dcDao); + } @Test public void testUserDataDetails() { @@ -79,4 +151,45 @@ public class CommandSetupHelperTest { Assert.assertEquals("value1", metadataFile1[2]); Assert.assertEquals("value2", metadataFile2[2]); } + + @Test + public void testCreateVpcAssociatePublicIP() { + VirtualRouter router = Mockito.mock(VirtualRouter.class); + Ip ip = new Ip("10.10.10.10"); + IPAddressVO ipAddressVO = new IPAddressVO(ip, 1L, 0x0ac00000L, 2L, true); + VlanVO vlanVO = new VlanVO(); + vlanVO.setNetworkId(15L); + PublicIpAddress publicIpAddress = new PublicIp(ipAddressVO, vlanVO, 0x0ac00000L); + List pubIpList = new ArrayList<>(1); + pubIpList.add(publicIpAddress); + Commands commands = Mockito.mock(Commands.class); + Map vlanMacAddress = new HashMap<>(); + NicVO nicVO = new NicVO("nic", 1L, 2L, VirtualMachine.Type.User); + NetworkVO networkVO = new NetworkVO(); + networkVO.setNetworkOfferingId(12L); + List userIps = List.of(ipAddressVO); + NetworkOfferingVO networkOfferingVO = new NetworkOfferingVO(); + Map details = new HashMap<>(); + VpcVO vpc = new VpcVO(); + DataCenterVO dc = new DataCenterVO(1L, null, null, null, null, null, null, null, null, null, DataCenter.NetworkType.Advanced, null, null); + + Mockito.when(router.getId()).thenReturn(14L); + Mockito.when(router.getDataCenterId()).thenReturn(4L); + Mockito.when(nicDao.listByVmId(ArgumentMatchers.anyLong())).thenReturn(List.of(nicVO)); + Mockito.when(networkDao.findById(ArgumentMatchers.anyLong())).thenReturn(networkVO); + Mockito.when(ipAddressDao.listByAssociatedVpc(ArgumentMatchers.anyLong(), ArgumentMatchers.nullable(Boolean.class))).thenReturn(userIps); + Mockito.when(vlanDao.findById(ArgumentMatchers.anyLong())).thenReturn(vlanVO); + Mockito.when(networkModel.getNetworkRate(ArgumentMatchers.anyLong(), ArgumentMatchers.anyLong())).thenReturn(1200); + Mockito.when(networkModel.getNetwork(ArgumentMatchers.anyLong())).thenReturn(networkVO); + Mockito.when(networkOfferingDao.findById(ArgumentMatchers.anyLong())).thenReturn(networkOfferingVO); + Mockito.when(configurationManager.getNetworkOfferingNetworkRate(ArgumentMatchers.anyLong(), ArgumentMatchers.anyLong())).thenReturn(1200); + Mockito.when(networkModel.isSecurityGroupSupportedInNetwork(networkVO)).thenReturn(false); + Mockito.when(networkOfferingDetailsDao.getNtwkOffDetails(ArgumentMatchers.anyLong())).thenReturn(details); + Mockito.when(networkDetailsDao.findDetail(ArgumentMatchers.anyLong(), ArgumentMatchers.anyString())).thenReturn(null); + Mockito.when(vpcDao.findById(ArgumentMatchers.anyLong())).thenReturn(vpc); + Mockito.when(routerControlHelper.getRouterControlIp(ArgumentMatchers.anyLong())).thenReturn("10.1.11.101"); + Mockito.when(dcDao.findById(ArgumentMatchers.anyLong())).thenReturn(dc); + + commandSetupHelper.createVpcAssociatePublicIPCommands(router, pubIpList, commands, vlanMacAddress); + } } diff --git a/server/src/test/java/com/cloud/network/router/NetworkHelperImplTest.java b/server/src/test/java/com/cloud/network/router/NetworkHelperImplTest.java index 24a51059e05..71387510e6e 100644 --- a/server/src/test/java/com/cloud/network/router/NetworkHelperImplTest.java +++ b/server/src/test/java/com/cloud/network/router/NetworkHelperImplTest.java @@ -20,18 +20,44 @@ import com.cloud.agent.AgentManager; import com.cloud.agent.api.Answer; import com.cloud.agent.api.Command; import com.cloud.agent.manager.Commands; +import com.cloud.deploy.DeploymentPlan; import com.cloud.exception.AgentUnavailableException; +import com.cloud.exception.InsufficientAddressCapacityException; import com.cloud.exception.OperationTimedoutException; import com.cloud.exception.ResourceUnavailableException; +import com.cloud.network.Network; +import com.cloud.network.NetworkModel; +import com.cloud.network.addr.PublicIp; +import com.cloud.network.dao.NetworkDao; +import com.cloud.network.dao.NetworkVO; +import com.cloud.offering.NetworkOffering; +import com.cloud.offerings.NetworkOfferingVO; +import com.cloud.user.Account; +import com.cloud.utils.net.Ip; +import com.cloud.vm.NicProfile; +import com.cloud.vm.NicVO; +import com.cloud.vm.dao.NicDao; +import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService; +import org.apache.cloudstack.network.router.deployment.RouterDeploymentDefinition; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Matchers; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; +import javax.inject.Inject; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; + import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.mock; @@ -51,6 +77,20 @@ public class NetworkHelperImplTest { @InjectMocks protected NetworkHelperImpl nwHelper = new NetworkHelperImpl(); + @Mock + NetworkOrchestrationService networkOrchestrationService; + @Mock + NetworkDao networkDao; + @Mock + NetworkModel networkModel; + @Mock + NicDao nicDao; + + @Before + public void setUp() { + nwHelper._networkDao = networkDao; + nwHelper._networkModel = networkModel; + } @Test(expected=ResourceUnavailableException.class) public void testSendCommandsToRouterWrongRouterVersion() @@ -169,4 +209,41 @@ public class NetworkHelperImplTest { assertFalse(result); } + @Test + public void testConfigurePublicNicForNsxBroadcastDomainType() throws InsufficientAddressCapacityException { + nwHelper._networkDao = networkDao; + nwHelper._nicDao = nicDao; + networkOrchestrationService = mock(NetworkOrchestrationService.class); + RouterDeploymentDefinition deploymentDefinition = mock(RouterDeploymentDefinition.class); + PublicIp publicIp = mock(PublicIp.class); + NicProfile nicProfile = mock(NicProfile.class); + NetworkVO pubNetwork = mock(NetworkVO.class); + NicVO nicVO = mock(NicVO.class); + DeploymentPlan plan = mock(DeploymentPlan.class); + + + NetworkOfferingVO testOffering = new NetworkOfferingVO(); + final List offerings = new ArrayList(1); + offerings.add(testOffering); + + NetworkVO publicNetwork = new NetworkVO(); + + final List publicNetList = new ArrayList<>(1); + publicNetList.add(publicNetwork); + + when(deploymentDefinition.isPublicNetwork()).thenReturn(true); + when(deploymentDefinition.getSourceNatIP()).thenReturn(publicIp); + when(publicIp.getAddress()).thenReturn(Mockito.mock(Ip.class)); + when(networkDao.findById(anyLong())).thenReturn(Mockito.mock(NetworkVO.class)); + when(nicProfile.getIPv4Address()).thenReturn("10.10.10.10"); + when(pubNetwork.getId()).thenReturn(1L); + when(nicDao.findByIp4AddressAndNetworkId(anyString(), anyLong())).thenReturn(nicVO); + doReturn(offerings).when(networkModel).getSystemAccountNetworkOfferings(any()); + when(deploymentDefinition.getPlan()).thenReturn(plan); + doReturn(publicNetList).when(networkOrchestrationService).setupNetwork(nullable(Account.class), any(NetworkOffering.class), any(DeploymentPlan.class), nullable(String.class), nullable(String.class), anyBoolean()); + + LinkedHashMap> configuredNic = nwHelper.configurePublicNic(deploymentDefinition, false); + configuredNic.get(publicNetList.get(0)); + } + }