| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| package org.apache.cloudstack.network.tungsten.service; |
| |
| import static org.junit.Assert.assertNotNull; |
| import static org.junit.Assert.assertTrue; |
| import static org.mockito.ArgumentMatchers.any; |
| import static org.mockito.ArgumentMatchers.anyLong; |
| import static org.mockito.ArgumentMatchers.anyString; |
| import static org.mockito.ArgumentMatchers.eq; |
| import static org.mockito.Mockito.doReturn; |
| import static org.mockito.Mockito.mock; |
| import static org.mockito.Mockito.times; |
| import static org.mockito.Mockito.verify; |
| import static org.mockito.Mockito.when; |
| |
| import com.cloud.agent.AgentManager; |
| import com.cloud.agent.api.Answer; |
| import com.cloud.configuration.Config; |
| import com.cloud.configuration.ConfigurationManager; |
| import com.cloud.dc.DataCenter; |
| import com.cloud.dc.DataCenterIpAddressVO; |
| import com.cloud.dc.DataCenterVO; |
| import com.cloud.dc.HostPodVO; |
| import com.cloud.dc.Vlan; |
| import com.cloud.dc.VlanVO; |
| import com.cloud.dc.dao.DataCenterDao; |
| import com.cloud.dc.dao.DataCenterIpAddressDao; |
| import com.cloud.domain.DomainVO; |
| import com.cloud.domain.dao.DomainDao; |
| import com.cloud.host.HostVO; |
| import com.cloud.host.dao.HostDao; |
| import com.cloud.hypervisor.Hypervisor; |
| import com.cloud.network.IpAddressManager; |
| import com.cloud.network.Network; |
| import com.cloud.network.NetworkModel; |
| import com.cloud.network.NetworkService; |
| import com.cloud.network.Networks; |
| import com.cloud.network.TungstenGuestNetworkIpAddressVO; |
| import com.cloud.network.dao.FirewallRulesDao; |
| import com.cloud.network.dao.IPAddressDao; |
| import com.cloud.network.dao.IPAddressVO; |
| import com.cloud.network.dao.LoadBalancerCertMapDao; |
| import com.cloud.network.dao.LoadBalancerCertMapVO; |
| import com.cloud.network.dao.NetworkDao; |
| import com.cloud.network.dao.NetworkDetailVO; |
| import com.cloud.network.dao.NetworkDetailsDao; |
| import com.cloud.network.dao.NetworkVO; |
| import com.cloud.network.dao.SslCertVO; |
| import com.cloud.network.dao.TungstenGuestNetworkIpAddressDao; |
| import com.cloud.network.dao.TungstenProviderDao; |
| import com.cloud.network.element.TungstenProviderVO; |
| import com.cloud.network.lb.LoadBalancingRule; |
| import com.cloud.network.rules.FirewallRule; |
| import com.cloud.network.rules.FirewallRuleVO; |
| import com.cloud.network.security.SecurityGroup; |
| import com.cloud.network.security.SecurityGroupManager; |
| import com.cloud.network.security.SecurityGroupRuleVO; |
| import com.cloud.network.security.SecurityGroupService; |
| import com.cloud.network.security.SecurityGroupVO; |
| import com.cloud.network.security.SecurityRule; |
| import com.cloud.network.security.TungstenSecurityGroupRuleVO; |
| import com.cloud.network.security.dao.SecurityGroupDao; |
| import com.cloud.network.security.dao.SecurityGroupRuleDao; |
| import com.cloud.network.security.dao.SecurityGroupVMMapDao; |
| import com.cloud.network.security.dao.TungstenSecurityGroupRuleDao; |
| import com.cloud.projects.ProjectManager; |
| import com.cloud.projects.ProjectVO; |
| import com.cloud.projects.dao.ProjectDao; |
| import com.cloud.user.AccountVO; |
| import com.cloud.user.DomainManager; |
| import com.cloud.user.dao.AccountDao; |
| import com.cloud.utils.db.EntityManager; |
| import com.cloud.utils.db.Transaction; |
| import com.cloud.utils.db.TransactionCallback; |
| import com.cloud.utils.net.Ip; |
| import com.cloud.utils.net.NetUtils; |
| import com.cloud.vm.Nic; |
| import com.cloud.vm.NicSecondaryIp; |
| import com.cloud.vm.NicVO; |
| import com.cloud.vm.VMInstanceVO; |
| import com.cloud.vm.dao.NicDao; |
| import com.cloud.vm.dao.NicSecondaryIpDao; |
| import com.cloud.vm.dao.NicSecondaryIpVO; |
| import net.juniper.tungsten.api.ApiObjectBase; |
| import net.juniper.tungsten.api.ApiPropertyBase; |
| import net.juniper.tungsten.api.ObjectReference; |
| import net.juniper.tungsten.api.types.ActionListType; |
| import net.juniper.tungsten.api.types.AddressGroup; |
| import net.juniper.tungsten.api.types.AddressType; |
| import net.juniper.tungsten.api.types.ApplicationPolicySet; |
| import net.juniper.tungsten.api.types.FirewallPolicy; |
| import net.juniper.tungsten.api.types.FirewallRuleEndpointType; |
| import net.juniper.tungsten.api.types.FirewallRuleMatchTagsType; |
| import net.juniper.tungsten.api.types.FirewallSequence; |
| import net.juniper.tungsten.api.types.FirewallServiceGroupType; |
| import net.juniper.tungsten.api.types.FirewallServiceType; |
| import net.juniper.tungsten.api.types.Loadbalancer; |
| import net.juniper.tungsten.api.types.LogicalRouter; |
| import net.juniper.tungsten.api.types.NetworkPolicy; |
| import net.juniper.tungsten.api.types.PolicyEntriesType; |
| import net.juniper.tungsten.api.types.PolicyRuleType; |
| import net.juniper.tungsten.api.types.PortType; |
| import net.juniper.tungsten.api.types.ServiceGroup; |
| import net.juniper.tungsten.api.types.SubnetListType; |
| import net.juniper.tungsten.api.types.SubnetType; |
| import net.juniper.tungsten.api.types.Tag; |
| import net.juniper.tungsten.api.types.TagType; |
| import net.juniper.tungsten.api.types.VirtualMachine; |
| import net.juniper.tungsten.api.types.VirtualMachineInterface; |
| import net.juniper.tungsten.api.types.VirtualNetwork; |
| import org.apache.cloudstack.framework.config.dao.ConfigurationDao; |
| import org.apache.cloudstack.framework.messagebus.MessageBus; |
| import org.apache.cloudstack.framework.messagebus.MessageSubscriber; |
| import org.apache.cloudstack.network.tungsten.agent.api.AddTungstenNetworkGatewayToLogicalRouterCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.AddTungstenNetworkSubnetCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.AddTungstenPolicyRuleCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.AddTungstenSecondaryIpAddressCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.AddTungstenSecurityGroupRuleCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.AddTungstenVmToSecurityGroupCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.ApplyTungstenNetworkPolicyCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.ApplyTungstenTagCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenAddressGroupCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenApplicationPolicySetCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenDefaultProjectCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenDomainCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenFirewallPolicyCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenFirewallRuleCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenFloatingIpCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenFloatingIpPoolCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenNetworkCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenNetworkPolicyCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenPolicyCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenProjectCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenRoutingLogicalRouterCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenSecurityGroupCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenServiceGroupCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenTagCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.CreateTungstenTagTypeCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenAddressGroupCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenApplicationPolicySetCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenDomainCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenFirewallPolicyCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenFirewallRuleCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenFloatingIpCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenFloatingIpPoolCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenNetworkCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenNetworkPolicyCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenPolicyCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenProjectCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenRoutingLogicalRouterCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenSecurityGroupCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenServiceGroupCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenTagCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.DeleteTungstenTagTypeCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.GetTungstenFabricNetworkCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.GetTungstenLoadBalancerCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.GetTungstenNetworkDnsCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.GetTungstenSecurityGroupCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.ListTungstenAddressGroupCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.ListTungstenApplicationPolicySetCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.ListTungstenFirewallPolicyCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.ListTungstenFirewallRuleCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.ListTungstenNetworkCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.ListTungstenNicCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.ListTungstenPolicyCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.ListTungstenPolicyRuleCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.ListTungstenRoutingLogicalRouterCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.ListTungstenServiceGroupCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.ListTungstenTagCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.ListTungstenTagTypeCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.ListTungstenVmCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.RemoveTungstenNetworkGatewayFromLogicalRouterCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.RemoveTungstenNetworkSubnetCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.RemoveTungstenPolicyCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.RemoveTungstenPolicyRuleCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.RemoveTungstenSecondaryIpAddressCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.RemoveTungstenSecurityGroupRuleCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.RemoveTungstenTagCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.SetupTungstenVRouterCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.TungstenAnswer; |
| import org.apache.cloudstack.network.tungsten.agent.api.UpdateLoadBalancerServiceInstanceCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.UpdateTungstenDefaultSecurityGroupCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.UpdateTungstenLoadbalancerSslCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.UpdateTungstenLoadbalancerStatsCommand; |
| import org.apache.cloudstack.network.tungsten.agent.api.UpdateTungstenVrouterConfigCommand; |
| import org.apache.cloudstack.network.tungsten.model.TungstenLogicalRouter; |
| import org.apache.cloudstack.network.tungsten.model.TungstenNetworkPolicy; |
| import org.apache.cloudstack.network.tungsten.model.TungstenRule; |
| import org.apache.cloudstack.network.tungsten.model.TungstenTag; |
| import org.junit.After; |
| import org.junit.Before; |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| import org.mockito.Mock; |
| import org.mockito.MockedConstruction; |
| import org.mockito.MockedStatic; |
| import org.mockito.Mockito; |
| import org.mockito.MockitoAnnotations; |
| import org.mockito.junit.MockitoJUnitRunner; |
| import org.springframework.test.util.ReflectionTestUtils; |
| |
| import java.util.Arrays; |
| import java.util.List; |
| |
| @RunWith(MockitoJUnitRunner.class) |
| public class TungstenServiceImplTest { |
| @Mock |
| MessageBus messageBus; |
| @Mock |
| ProjectDao projectDao; |
| @Mock |
| AccountDao accountDao; |
| @Mock |
| NetworkDao networkDao; |
| @Mock |
| ConfigurationDao configDao; |
| @Mock |
| IPAddressDao ipAddressDao; |
| @Mock |
| EntityManager entityMgr; |
| @Mock |
| NetworkModel networkModel; |
| @Mock |
| DomainDao domainDao; |
| @Mock |
| LoadBalancerCertMapDao lbCertMapDao; |
| @Mock |
| FirewallRulesDao fwRulesDao; |
| @Mock |
| TungstenGuestNetworkIpAddressDao tungstenGuestNetworkIpAddressDao; |
| @Mock |
| TungstenProviderDao tungstenProviderDao; |
| @Mock |
| TungstenFabricUtils tungstenFabricUtils; |
| @Mock |
| AgentManager agentMgr; |
| @Mock |
| HostDao hostDao; |
| @Mock |
| NetworkDetailsDao networkDetailsDao; |
| @Mock |
| SecurityGroupDao securityGroupDao; |
| @Mock |
| NicDao nicDao; |
| @Mock |
| TungstenSecurityGroupRuleDao tungstenSecurityGroupRuleDao; |
| @Mock |
| SecurityGroupVMMapDao securityGroupVMMapDao; |
| @Mock |
| SecurityGroupRuleDao securityGroupRuleDao; |
| @Mock |
| SecurityGroupManager securityGroupManager; |
| @Mock |
| NicSecondaryIpDao nicSecIpDao; |
| @Mock |
| DataCenterIpAddressDao dataCenterIpAddressDao; |
| @Mock |
| DataCenterDao dataCenterDao; |
| @Mock |
| IpAddressManager ipAddressManager; |
| |
| TungstenServiceImpl tungstenService; |
| |
| AutoCloseable closeable; |
| |
| @Before |
| public void setup() { |
| closeable = MockitoAnnotations.openMocks(this); |
| tungstenService = new TungstenServiceImpl(); |
| tungstenService.projectDao = projectDao; |
| tungstenService.tungstenProviderDao = tungstenProviderDao; |
| tungstenService.networkModel = networkModel; |
| tungstenService.ipAddressDao = ipAddressDao; |
| tungstenService.tungstenFabricUtils = tungstenFabricUtils; |
| tungstenService.domainDao = domainDao; |
| tungstenService.accountDao = accountDao; |
| tungstenService.dataCenterIpAddressDao = dataCenterIpAddressDao; |
| tungstenService.networkDetailsDao = networkDetailsDao; |
| tungstenService.agentMgr = agentMgr; |
| tungstenService.hostDao = hostDao; |
| tungstenService.configDao = configDao; |
| tungstenService.fwRulesDao = fwRulesDao; |
| tungstenService.lbCertMapDao = lbCertMapDao; |
| tungstenService.entityMgr = entityMgr; |
| tungstenService.tungstenGuestNetworkIpAddressDao = tungstenGuestNetworkIpAddressDao; |
| tungstenService.securityGroupDao = securityGroupDao; |
| tungstenService.tungstenSecurityGroupRuleDao = tungstenSecurityGroupRuleDao; |
| tungstenService.securityGroupVMMapDao = securityGroupVMMapDao; |
| tungstenService.nicDao = nicDao; |
| tungstenService.nicSecIpDao = nicSecIpDao; |
| tungstenService.securityGroupRuleDao = securityGroupRuleDao; |
| tungstenService.securityGroupManager = securityGroupManager; |
| tungstenService.networkDao = networkDao; |
| tungstenService.dataCenterDao = dataCenterDao; |
| tungstenService.ipAddressManager = ipAddressManager; |
| tungstenService.messageBus = messageBus; |
| } |
| |
| @After |
| public void tearDown() throws Exception { |
| closeable.close(); |
| } |
| |
| @Test |
| public void createTungstenFloatingIpTest() throws Exception { |
| IPAddressVO ipAddressVO = mock(IPAddressVO.class); |
| NetworkVO networkVO = mock(NetworkVO.class); |
| TungstenAnswer createTungstenFloatingIpAnswer = MockTungstenAnswerFactory.get(true); |
| Ip ip = mock(Ip.class); |
| |
| when(networkModel.getSystemNetworkByZoneAndTrafficType(anyLong(), eq(Networks.TrafficType.Public))).thenReturn(networkVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenFloatingIpCommand.class), anyLong())).thenReturn(createTungstenFloatingIpAnswer); |
| when(ipAddressVO.getAddress()).thenReturn(ip); |
| |
| assertTrue(ReflectionTestUtils.invokeMethod(tungstenService, "createTungstenFloatingIp", 1L, ipAddressVO)); |
| } |
| |
| @Test |
| public void deleteTungstenFloatingIpWithIpAddressTest() throws Exception { |
| IPAddressVO ipAddressVO = mock(IPAddressVO.class); |
| NetworkVO networkVO = mock(NetworkVO.class); |
| TungstenAnswer deleteTungstenFloatingIpAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(networkModel.getSystemNetworkByZoneAndTrafficType(anyLong(), eq(Networks.TrafficType.Public))).thenReturn(networkVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenFloatingIpCommand.class), anyLong())).thenReturn(deleteTungstenFloatingIpAnswer); |
| |
| assertTrue(ReflectionTestUtils.invokeMethod(tungstenService, "deleteTungstenFloatingIp", 1L, ipAddressVO)); |
| } |
| |
| @Test |
| public void deleteTungstenDomainTest() throws Exception { |
| DomainVO domainVO = mock(DomainVO.class); |
| TungstenProviderVO tungstenProviderVO = mock(TungstenProviderVO.class); |
| TungstenAnswer deleteTungstenDomainAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(tungstenProviderDao.findAll()).thenReturn(List.of(tungstenProviderVO)); |
| when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenDomainCommand.class), anyLong())).thenReturn(deleteTungstenDomainAnswer); |
| |
| assertTrue(ReflectionTestUtils.invokeMethod(tungstenService, "deleteTungstenDomain", domainVO)); |
| } |
| |
| @Test |
| public void deleteTungstenProjectTest() throws Exception { |
| ProjectVO projectVO = mock(ProjectVO.class); |
| TungstenProviderVO tungstenProviderVO = mock(TungstenProviderVO.class); |
| TungstenAnswer deleteTungstenProjectAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(tungstenProviderDao.findAll()).thenReturn(List.of(tungstenProviderVO)); |
| when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenProjectCommand.class), anyLong())).thenReturn(deleteTungstenProjectAnswer); |
| |
| assertTrue(ReflectionTestUtils.invokeMethod(tungstenService, "deleteTungstenProject", projectVO)); |
| } |
| |
| @Test |
| public void addTungstenDefaultNetworkPolicyTest() { |
| TungstenRule tungstenRule = mock(TungstenRule.class); |
| TungstenAnswer createTungstenPolicyAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer applyTungstenPolicyAnswer = MockTungstenAnswerFactory.get(true); |
| NetworkPolicy networkPolicy = mock(NetworkPolicy.class); |
| |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(createTungstenPolicyAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(ApplyTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(applyTungstenPolicyAnswer); |
| when(createTungstenPolicyAnswer.getApiObjectBase()).thenReturn(networkPolicy); |
| |
| assertTrue(tungstenService.addTungstenDefaultNetworkPolicy(1L, "default-domain:default-project", "policyName", "7279ed91-314e-45be-81b4-b10395fd2ae3" |
| , List.of(tungstenRule), 1, 1)); |
| } |
| |
| @Test |
| public void createManagementNetworkTest() { |
| Network managementNetwork = mock(Network.class); |
| VirtualNetwork managementVirtualNetwork = mock(VirtualNetwork.class); |
| VirtualNetwork fabricVirtualNetwork = mock(VirtualNetwork.class); |
| NetworkPolicy networkPolicy = mock(NetworkPolicy.class); |
| TungstenAnswer createTungstenNetworkAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer updateTungstenDefaultSecurityGroupAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer updateTungstenGlobalVrouterConfigAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer getTungstenFabricNetworkAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer createTungstenPolicyAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer applyTungstenPolicyAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(networkModel.getSystemNetworkByZoneAndTrafficType(anyLong(), |
| eq(Networks.TrafficType.Management))).thenReturn(managementNetwork); |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenNetworkCommand.class), anyLong())).thenReturn(createTungstenNetworkAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(UpdateTungstenDefaultSecurityGroupCommand.class), anyLong())).thenReturn(updateTungstenDefaultSecurityGroupAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(UpdateTungstenVrouterConfigCommand.class), anyLong())).thenReturn(updateTungstenGlobalVrouterConfigAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(GetTungstenFabricNetworkCommand.class), anyLong())).thenReturn(getTungstenFabricNetworkAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(createTungstenPolicyAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(ApplyTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(applyTungstenPolicyAnswer); |
| |
| when(createTungstenNetworkAnswer.getApiObjectBase()).thenReturn(managementVirtualNetwork); |
| when(createTungstenPolicyAnswer.getApiObjectBase()).thenReturn(networkPolicy); |
| when(getTungstenFabricNetworkAnswer.getApiObjectBase()).thenReturn(fabricVirtualNetwork); |
| |
| assertTrue(tungstenService.createManagementNetwork(1L)); |
| } |
| |
| @Test |
| public void addManagementNetworkSubnetTest() { |
| HostPodVO hostPodVO = mock(HostPodVO.class); |
| Network managementNetwork = mock(Network.class); |
| TungstenAnswer addTungstenNetworkSubnetAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer getTungstenNetworkDnsAnswer = MockTungstenAnswerFactory.get(true); |
| DataCenterIpAddressVO dataCenterIpAddressVO = mock(DataCenterIpAddressVO.class); |
| |
| when(hostPodVO.getDescription()).thenReturn("192.168.100.100-192.168.100.200"); |
| when(networkModel.getSystemNetworkByZoneAndTrafficType(anyLong(), |
| eq(Networks.TrafficType.Management))).thenReturn(managementNetwork); |
| when(tungstenFabricUtils.sendTungstenCommand(any(AddTungstenNetworkSubnetCommand.class), anyLong())).thenReturn(addTungstenNetworkSubnetAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(GetTungstenNetworkDnsCommand.class), anyLong())).thenReturn(getTungstenNetworkDnsAnswer); |
| when(getTungstenNetworkDnsAnswer.getDetails()).thenReturn("192.168.100.150"); |
| when(managementNetwork.getCidr()).thenReturn("192.168.100.0/24"); |
| when(managementNetwork.getTrafficType()).thenReturn(Networks.TrafficType.Management); |
| when(dataCenterIpAddressDao.listByPodIdDcIdIpAddress(anyLong(), anyLong(), anyString())).thenReturn(List.of(dataCenterIpAddressVO)); |
| when(dataCenterIpAddressDao.mark(anyLong(), anyLong(), anyString())).thenReturn(true); |
| |
| assertTrue(tungstenService.addManagementNetworkSubnet(hostPodVO)); |
| } |
| |
| @Test |
| public void deleteManagementNetworkTest() { |
| Network managementNetwork = mock(Network.class); |
| TungstenAnswer deleteTungstenManagementPolicyAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer getTungstenFabricNetworkAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer deleteTungstenFabricPolicyAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer deleteTungstenNetworkAnswer = MockTungstenAnswerFactory.get(true); |
| VirtualNetwork fabricVirtualNetwork = mock(VirtualNetwork.class); |
| |
| when(networkModel.getSystemNetworkByZoneAndTrafficType(anyLong(), |
| eq(Networks.TrafficType.Management))).thenReturn(managementNetwork); |
| when(tungstenFabricUtils.sendTungstenCommand(any(GetTungstenFabricNetworkCommand.class), anyLong())).thenReturn(getTungstenFabricNetworkAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(deleteTungstenFabricPolicyAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenNetworkCommand.class), anyLong())).thenReturn(deleteTungstenNetworkAnswer); |
| when(getTungstenFabricNetworkAnswer.getApiObjectBase()).thenReturn(fabricVirtualNetwork); |
| |
| assertTrue(tungstenService.deleteManagementNetwork(1L)); |
| } |
| |
| @Test |
| public void removeManagementNetworkSubnetTest() { |
| HostPodVO hostPodVO = mock(HostPodVO.class); |
| Network managementNetwork = mock(Network.class); |
| TungstenAnswer removeTungstenNetworkSubnetAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer getTungstenNetworkDnsAnswer = MockTungstenAnswerFactory.get(true); |
| DataCenterIpAddressVO dataCenterIpAddressVO = mock(DataCenterIpAddressVO.class); |
| |
| when(networkModel.getSystemNetworkByZoneAndTrafficType(anyLong(), |
| eq(Networks.TrafficType.Management))).thenReturn(managementNetwork); |
| when(tungstenFabricUtils.sendTungstenCommand(any(RemoveTungstenNetworkSubnetCommand.class), anyLong())).thenReturn(removeTungstenNetworkSubnetAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(GetTungstenNetworkDnsCommand.class), anyLong())).thenReturn(getTungstenNetworkDnsAnswer); |
| when(getTungstenNetworkDnsAnswer.getDetails()).thenReturn("192.168.100.150"); |
| when(managementNetwork.getTrafficType()).thenReturn(Networks.TrafficType.Management); |
| when(dataCenterIpAddressDao.listByPodIdDcIdIpAddress(anyLong(), anyLong(), anyString())).thenReturn(List.of(dataCenterIpAddressVO)); |
| |
| assertTrue(tungstenService.removeManagementNetworkSubnet(hostPodVO)); |
| verify(dataCenterIpAddressDao, times(1)).releasePodIpAddress(anyLong()); |
| } |
| |
| @Test |
| public void createPublicNetworkTest() { |
| Network publicNetwork = mock(Network.class); |
| VirtualNetwork virtualNetwork = mock(VirtualNetwork.class); |
| NetworkDetailVO networkDetailVO = mock(NetworkDetailVO.class); |
| NetworkPolicy networkPolicy = mock(NetworkPolicy.class); |
| TungstenAnswer createPublicNetworkAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer createFloatingIpPoolAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer createTungstenPolicyAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer applyTungstenPolicyAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(networkModel.getSystemNetworkByZoneAndTrafficType(anyLong(), eq(Networks.TrafficType.Public))).thenReturn(publicNetwork); |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenNetworkCommand.class), anyLong())).thenReturn(createPublicNetworkAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenFloatingIpPoolCommand.class), anyLong())).thenReturn(createFloatingIpPoolAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(createTungstenPolicyAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(ApplyTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(applyTungstenPolicyAnswer); |
| when(createPublicNetworkAnswer.getApiObjectBase()).thenReturn(virtualNetwork); |
| when(createTungstenPolicyAnswer.getApiObjectBase()).thenReturn(networkPolicy); |
| when(networkDetailsDao.persist(any(NetworkDetailVO.class))).thenReturn(networkDetailVO); |
| when(virtualNetwork.getQualifiedName()).thenReturn(Arrays.asList("default-domain", "default-project", "publicNetwork")); |
| |
| assertTrue(tungstenService.createPublicNetwork(1L)); |
| } |
| |
| @Test |
| public void addPublicNetworkSubnetTest() { |
| VlanVO vlanVO = mock(VlanVO.class); |
| Network publicNetwork = mock(Network.class); |
| TungstenAnswer addTungstenNetworkSubnetAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer createTungstenPolicyAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer applyTungstenPolicyAnswer = MockTungstenAnswerFactory.get(true); |
| NetworkPolicy networkPolicy = mock(NetworkPolicy.class); |
| TungstenAnswer getTungstenNetworkDnsAnswer = MockTungstenAnswerFactory.get(true); |
| IPAddressVO ipAddressVO = mock(IPAddressVO.class); |
| |
| when(networkModel.getSystemNetworkByZoneAndTrafficType(anyLong(), eq(Networks.TrafficType.Public))).thenReturn(publicNetwork); |
| when(tungstenFabricUtils.sendTungstenCommand(any(AddTungstenNetworkSubnetCommand.class), anyLong())).thenReturn(addTungstenNetworkSubnetAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(createTungstenPolicyAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(ApplyTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(applyTungstenPolicyAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(GetTungstenNetworkDnsCommand.class), anyLong())).thenReturn(getTungstenNetworkDnsAnswer); |
| when(getTungstenNetworkDnsAnswer.getDetails()).thenReturn("192.168.100.150"); |
| when(vlanVO.getIpRange()).thenReturn("192.168.100.100-192.168.100.200"); |
| when(vlanVO.getVlanGateway()).thenReturn("192.168.100.1"); |
| when(vlanVO.getVlanNetmask()).thenReturn("255.255.255.0"); |
| when(publicNetwork.getCidr()).thenReturn("192.168.100.0/24"); |
| when(publicNetwork.getTrafficType()).thenReturn(Networks.TrafficType.Public); |
| when(createTungstenPolicyAnswer.getApiObjectBase()).thenReturn(networkPolicy); |
| when(ipAddressDao.mark(anyLong(), any(Ip.class))).thenReturn(true); |
| |
| assertTrue(tungstenService.addPublicNetworkSubnet(vlanVO)); |
| } |
| |
| @Test |
| public void deletePublicNetworkTest() { |
| Network publicNetwork = mock(Network.class); |
| TungstenAnswer deleteTungstenNetworkPolicyAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer deleteTungstenFloatingIpPoolAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer deleteTungstenNetworkAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(networkModel.getSystemNetworkByZoneAndTrafficType(anyLong(), eq(Networks.TrafficType.Public))).thenReturn(publicNetwork); |
| when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(deleteTungstenNetworkPolicyAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenFloatingIpPoolCommand.class), anyLong())).thenReturn(deleteTungstenFloatingIpPoolAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenNetworkCommand.class), anyLong())).thenReturn(deleteTungstenNetworkAnswer); |
| |
| assertTrue(tungstenService.deletePublicNetwork(1L)); |
| } |
| |
| @Test |
| public void removePublicNetworkSubnetTest() { |
| VlanVO vlanVO = mock(VlanVO.class); |
| Network publicNetwork = mock(Network.class); |
| TungstenAnswer deleteTungstenNetworkPolicyAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer removeTungstenNetworkSubnetAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer getTungstenNetworkDnsAnswer = MockTungstenAnswerFactory.get(true); |
| IPAddressVO ipAddressVO = mock(IPAddressVO.class); |
| |
| when(networkModel.getSystemNetworkByZoneAndTrafficType(anyLong(), eq(Networks.TrafficType.Public))).thenReturn(publicNetwork); |
| when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(deleteTungstenNetworkPolicyAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(RemoveTungstenNetworkSubnetCommand.class), anyLong())).thenReturn(removeTungstenNetworkSubnetAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(GetTungstenNetworkDnsCommand.class), anyLong())).thenReturn(getTungstenNetworkDnsAnswer); |
| when(getTungstenNetworkDnsAnswer.getDetails()).thenReturn("192.168.100.150"); |
| when(publicNetwork.getTrafficType()).thenReturn(Networks.TrafficType.Public); |
| when(ipAddressDao.findByIpAndDcId(anyLong(), anyString())).thenReturn(ipAddressVO); |
| |
| assertTrue(tungstenService.removePublicNetworkSubnet(vlanVO)); |
| verify(ipAddressDao, times(1)).unassignIpAddress(anyLong()); |
| } |
| |
| @Test |
| public void allocateDnsIpAddressTest() { |
| NetworkVO networkVO = mock(NetworkVO.class); |
| TungstenAnswer getTungstenNetworkDnsAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenGuestNetworkIpAddressVO tungstenGuestNetworkIpAddressVO = mock(TungstenGuestNetworkIpAddressVO.class); |
| |
| when(tungstenFabricUtils.sendTungstenCommand(any(GetTungstenNetworkDnsCommand.class), anyLong())).thenReturn(getTungstenNetworkDnsAnswer); |
| when(networkVO.getTrafficType()).thenReturn(Networks.TrafficType.Guest); |
| when(networkVO.getGuestType()).thenReturn(Network.GuestType.Isolated); |
| when(tungstenGuestNetworkIpAddressDao.persist(any(TungstenGuestNetworkIpAddressVO.class))).thenReturn(tungstenGuestNetworkIpAddressVO); |
| when(networkVO.getCidr()).thenReturn("192.168.100.0/24"); |
| when(getTungstenNetworkDnsAnswer.getDetails()).thenReturn("192.168.100.100"); |
| |
| assertTrue(tungstenService.allocateDnsIpAddress(networkVO, null, "test")); |
| } |
| |
| @Test |
| public void deallocateDnsIpAddressTest() { |
| NetworkVO networkVO = mock(NetworkVO.class); |
| TungstenAnswer getTungstenNetworkDnsAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenGuestNetworkIpAddressVO tungstenGuestNetworkIpAddressVO = mock(TungstenGuestNetworkIpAddressVO.class); |
| |
| when(tungstenFabricUtils.sendTungstenCommand(any(GetTungstenNetworkDnsCommand.class), anyLong())).thenReturn(getTungstenNetworkDnsAnswer); |
| when(networkVO.getTrafficType()).thenReturn(Networks.TrafficType.Guest); |
| when(networkVO.getGuestType()).thenReturn(Network.GuestType.Isolated); |
| when(tungstenGuestNetworkIpAddressDao.findByNetworkAndGuestIpAddress(anyLong(), anyString())).thenReturn(tungstenGuestNetworkIpAddressVO); |
| when(getTungstenNetworkDnsAnswer.getDetails()).thenReturn("192.168.100.100"); |
| |
| tungstenService.deallocateDnsIpAddress(networkVO, null, "test"); |
| verify(tungstenGuestNetworkIpAddressDao, times(1)).expunge(anyLong()); |
| } |
| |
| @Test |
| public void subscribeTungstenEventTest() { |
| tungstenService.subscribeTungstenEvent(); |
| |
| verify(messageBus, times(1)).subscribe(eq(IpAddressManager.MESSAGE_ASSIGN_IPADDR_EVENT), any(MessageSubscriber.class)); |
| verify(messageBus, times(1)).subscribe(eq(IpAddressManager.MESSAGE_RELEASE_IPADDR_EVENT), any(MessageSubscriber.class)); |
| verify(messageBus, times(1)).subscribe(eq(TungstenService.MESSAGE_APPLY_NETWORK_POLICY_EVENT), any(MessageSubscriber.class)); |
| verify(messageBus, times(1)).subscribe(eq(ConfigurationManager.MESSAGE_CREATE_VLAN_IP_RANGE_EVENT), any(MessageSubscriber.class)); |
| verify(messageBus, times(1)).subscribe(eq(ConfigurationManager.MESSAGE_DELETE_VLAN_IP_RANGE_EVENT), any(MessageSubscriber.class)); |
| verify(messageBus, times(1)).subscribe(eq(ConfigurationManager.MESSAGE_CREATE_POD_IP_RANGE_EVENT), any(MessageSubscriber.class)); |
| verify(messageBus, times(1)).subscribe(eq(ConfigurationManager.MESSAGE_DELETE_POD_IP_RANGE_EVENT), any(MessageSubscriber.class)); |
| verify(messageBus, times(1)).subscribe(eq(DomainManager.MESSAGE_CREATE_TUNGSTEN_DOMAIN_EVENT), any(MessageSubscriber.class)); |
| verify(messageBus, times(1)).subscribe(eq(DomainManager.MESSAGE_DELETE_TUNGSTEN_DOMAIN_EVENT), any(MessageSubscriber.class)); |
| verify(messageBus, times(1)).subscribe(eq(ProjectManager.MESSAGE_CREATE_TUNGSTEN_PROJECT_EVENT), any(MessageSubscriber.class)); |
| verify(messageBus, times(1)).subscribe(eq(ProjectManager.MESSAGE_DELETE_TUNGSTEN_PROJECT_EVENT), any(MessageSubscriber.class)); |
| verify(messageBus, times(1)).subscribe(eq(TungstenService.MESSAGE_SYNC_TUNGSTEN_DB_WITH_DOMAINS_AND_PROJECTS_EVENT), any(MessageSubscriber.class)); |
| verify(messageBus, times(1)).subscribe(eq(SecurityGroupService.MESSAGE_CREATE_TUNGSTEN_SECURITY_GROUP_EVENT), any(MessageSubscriber.class)); |
| verify(messageBus, times(1)).subscribe(eq(SecurityGroupService.MESSAGE_DELETE_TUNGSTEN_SECURITY_GROUP_EVENT), any(MessageSubscriber.class)); |
| verify(messageBus, times(1)).subscribe(eq(SecurityGroupService.MESSAGE_ADD_SECURITY_GROUP_RULE_EVENT), any(MessageSubscriber.class)); |
| verify(messageBus, times(1)).subscribe(eq(SecurityGroupService.MESSAGE_REMOVE_SECURITY_GROUP_RULE_EVENT), any(MessageSubscriber.class)); |
| verify(messageBus, times(1)).subscribe(eq(NetworkService.MESSAGE_ASSIGN_NIC_SECONDARY_IP_EVENT), any(MessageSubscriber.class)); |
| verify(messageBus, times(1)).subscribe(eq(NetworkService.MESSAGE_RELEASE_NIC_SECONDARY_IP_EVENT), any(MessageSubscriber.class)); |
| } |
| |
| @Test |
| public void syncTungstenDbWithCloudstackProjectsAndDomainsTest() { |
| DomainVO domainVO = mock(DomainVO.class); |
| ProjectVO projectVO = mock(ProjectVO.class); |
| TungstenProviderVO tungstenProviderVO = mock(TungstenProviderVO.class); |
| TungstenAnswer createTungstenDomainAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer createTungstenProjectAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer createTungstenDefaultProjectAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer updateTungstenDefaultSecurityGroupAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(domainDao.listAll()).thenReturn(List.of(domainVO)); |
| when(projectDao.listAll()).thenReturn(List.of(projectVO)); |
| when(tungstenProviderDao.findAll()).thenReturn(List.of(tungstenProviderVO)); |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenDomainCommand.class), anyLong())).thenReturn(createTungstenDomainAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenProjectCommand.class), anyLong())).thenReturn(createTungstenProjectAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(UpdateTungstenDefaultSecurityGroupCommand.class), anyLong())).thenReturn(updateTungstenDefaultSecurityGroupAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenDefaultProjectCommand.class), anyLong())).thenReturn(createTungstenDefaultProjectAnswer); |
| when(domainDao.findById(anyLong())).thenReturn(domainVO); |
| |
| assertTrue(tungstenService.syncTungstenDbWithCloudstackProjectsAndDomains()); |
| } |
| |
| @Test |
| public void updateLoadBalancerTest() { |
| Network network = mock(Network.class); |
| LoadBalancingRule loadBalancingRule = mock(LoadBalancingRule.class); |
| Network publicNetwork = mock(Network.class); |
| IPAddressVO ipAddressVO = mock(IPAddressVO.class); |
| HostVO hostVO = mock(HostVO.class); |
| TungstenAnswer getTungstenLoadBalancerAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer updateLoadBalancerServiceInstanceAnswer = MockTungstenAnswerFactory.get(true); |
| Answer updateTungstenLoadbalancerStatsAnswer = mock(Answer.class); |
| Answer updateTungstenLoadbalancerSslAnswer = mock(Answer.class); |
| FirewallRuleVO firewallRuleVO = mock(FirewallRuleVO.class); |
| LoadBalancerCertMapVO loadBalancerCertMapVO = mock(LoadBalancerCertMapVO.class); |
| SslCertVO sslCertVO = mock(SslCertVO.class); |
| TungstenGuestNetworkIpAddressVO tungstenGuestNetworkIpAddressVO = mock(TungstenGuestNetworkIpAddressVO.class); |
| Ip ip = mock(Ip.class); |
| AccountVO accountVO = mock(AccountVO.class); |
| Loadbalancer loadbalancer = mock(Loadbalancer.class); |
| |
| when(networkModel.getSystemNetworkByZoneAndTrafficType(anyLong(), eq(Networks.TrafficType.Public))).thenReturn(publicNetwork); |
| when(ipAddressDao.findByIpAndDcId(anyLong(), anyString())).thenReturn(ipAddressVO); |
| when(hostDao.listAllHostsByZoneAndHypervisorType(anyLong(), eq(Hypervisor.HypervisorType.KVM))).thenReturn(List.of(hostVO)); |
| when(tungstenFabricUtils.sendTungstenCommand(any(GetTungstenLoadBalancerCommand.class), anyLong())).thenReturn(getTungstenLoadBalancerAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(UpdateLoadBalancerServiceInstanceCommand.class), anyLong())).thenReturn(updateLoadBalancerServiceInstanceAnswer); |
| when(agentMgr.easySend(anyLong(), any(UpdateTungstenLoadbalancerStatsCommand.class))).thenReturn(updateTungstenLoadbalancerStatsAnswer); |
| when(agentMgr.easySend(anyLong(), any(UpdateTungstenLoadbalancerSslCommand.class))).thenReturn(updateTungstenLoadbalancerSslAnswer); |
| when(updateTungstenLoadbalancerStatsAnswer.getResult()).thenReturn(true); |
| when(updateTungstenLoadbalancerSslAnswer.getResult()).thenReturn(true); |
| when(configDao.getValue(Config.NetworkLBHaproxyStatsVisbility.key())).thenReturn("enabled"); |
| when(fwRulesDao.listByIpAndPurposeAndNotRevoked(anyLong(), eq(FirewallRule.Purpose.LoadBalancing))).thenReturn(List.of(firewallRuleVO)); |
| when(lbCertMapDao.findByLbRuleId(anyLong())).thenReturn(loadBalancerCertMapVO); |
| when(entityMgr.findById(eq(SslCertVO.class), anyLong())).thenReturn(sslCertVO); |
| when(tungstenGuestNetworkIpAddressDao.findByNetworkIdAndPublicIp(anyLong(), anyString())).thenReturn(tungstenGuestNetworkIpAddressVO); |
| when(loadBalancingRule.getSourceIp()).thenReturn(ip); |
| when(accountDao.findById(anyLong())).thenReturn(accountVO); |
| when(ip.addr()).thenReturn("192.168.100.100"); |
| when(getTungstenLoadBalancerAnswer.getApiObjectBase()).thenReturn(loadbalancer); |
| when(ipAddressVO.getAddress()).thenReturn(ip); |
| when(tungstenGuestNetworkIpAddressVO.getGuestIpAddress()).thenReturn(ip); |
| |
| assertTrue(tungstenService.updateLoadBalancer(network, loadBalancingRule)); |
| } |
| |
| @Test |
| public void createTungstenSecurityGroupTest() { |
| SecurityGroup securityGroup = mock(SecurityGroup.class); |
| ProjectVO projectVO = mock(ProjectVO.class); |
| TungstenProviderVO tungstenProviderVO = mock(TungstenProviderVO.class); |
| DomainVO domainVO = mock(DomainVO.class); |
| TungstenSecurityGroupRuleVO tungstenSecurityGroupRuleVO = mock(TungstenSecurityGroupRuleVO.class); |
| TungstenAnswer createTungstenSecurityGroupAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer addTungstenSecurityGroupRuleAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(projectDao.findByProjectAccountId(anyLong())).thenReturn(projectVO); |
| when(tungstenProviderDao.findAll()).thenReturn(List.of(tungstenProviderVO)); |
| when(domainDao.findById(anyLong())).thenReturn(domainVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenSecurityGroupCommand.class), anyLong())).thenReturn(createTungstenSecurityGroupAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(AddTungstenSecurityGroupRuleCommand.class), anyLong())).thenReturn(addTungstenSecurityGroupRuleAnswer); |
| |
| try (MockedStatic<Transaction> transactionMocked = Mockito.mockStatic(Transaction.class)) { |
| transactionMocked.when(() -> Transaction.execute(any(TransactionCallback.class))).thenReturn(List.of(tungstenSecurityGroupRuleVO)); |
| assertTrue(tungstenService.createTungstenSecurityGroup(securityGroup)); |
| } |
| } |
| |
| @Test |
| public void deleteTungstenSecurityGroupTest() { |
| SecurityGroup securityGroup = mock(SecurityGroup.class); |
| TungstenProviderVO tungstenProviderVO = mock(TungstenProviderVO.class); |
| TungstenAnswer deleteTungstenSecurityGroupAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(tungstenProviderDao.findAll()).thenReturn(List.of(tungstenProviderVO)); |
| when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenSecurityGroupCommand.class), anyLong())).thenReturn(deleteTungstenSecurityGroupAnswer); |
| |
| assertTrue(tungstenService.deleteTungstenSecurityGroup(securityGroup)); |
| } |
| |
| @Test |
| public void addTungstenSecurityGroupEgressRuleTest() { |
| SecurityRule securityRule = mock(SecurityRule.class); |
| SecurityGroupVO securityGroupVO = mock(SecurityGroupVO.class); |
| TungstenAnswer getTungstenSecurityGroupAnswer = mock(TungstenAnswer.class); |
| TungstenAnswer removeTungstenSecurityGroupRuleAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer addTungstenSecurityGroupRuleAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenProviderVO tungstenProviderVO = mock(TungstenProviderVO.class); |
| net.juniper.tungsten.api.types.SecurityGroup securityGroup = mock(net.juniper.tungsten.api.types.SecurityGroup.class); |
| TungstenSecurityGroupRuleVO tungstenSecurityGroupRuleVO = mock(TungstenSecurityGroupRuleVO.class); |
| NicVO nicVO = mock(NicVO.class); |
| |
| when(tungstenProviderDao.findAll()).thenReturn(List.of(tungstenProviderVO)); |
| when(securityGroupDao.findById(anyLong())).thenReturn(securityGroupVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(GetTungstenSecurityGroupCommand.class), anyLong())).thenReturn(getTungstenSecurityGroupAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(RemoveTungstenSecurityGroupRuleCommand.class), anyLong())).thenReturn(removeTungstenSecurityGroupRuleAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(AddTungstenSecurityGroupRuleCommand.class), anyLong())).thenReturn(addTungstenSecurityGroupRuleAnswer); |
| when(getTungstenSecurityGroupAnswer.getApiObjectBase()).thenReturn(securityGroup); |
| when(securityRule.getRuleType()).thenReturn(SecurityRule.SecurityRuleType.EgressRule); |
| when(tungstenSecurityGroupRuleDao.findDefaultSecurityRule(anyLong(), anyString(), anyString())).thenReturn(tungstenSecurityGroupRuleVO); |
| when(securityRule.getProtocol()).thenReturn(NetUtils.ALL_PROTO); |
| when(securityRule.getEndPort()).thenReturn(NetUtils.PORT_RANGE_MIN); |
| when(securityGroupVMMapDao.listVmIdsBySecurityGroup(anyLong())).thenReturn(List.of(1L)); |
| when(nicDao.findDefaultNicForVM(anyLong())).thenReturn(nicVO); |
| when(nicVO.getIPv4Address()).thenReturn("192.168.100.100"); |
| when(nicVO.getIPv6Address()).thenReturn("fd00::1"); |
| when(nicVO.getSecondaryIp()).thenReturn(true); |
| when(nicSecIpDao.getSecondaryIpAddressesForNic(anyLong())).thenReturn(List.of("192.168.100.200")); |
| when(tungstenSecurityGroupRuleDao.persist(any(TungstenSecurityGroupRuleVO.class))).thenReturn(tungstenSecurityGroupRuleVO); |
| when(securityRule.getAllowedNetworkId()).thenReturn(1L); |
| |
| assertTrue(tungstenService.addTungstenSecurityGroupRule(List.of(securityRule))); |
| } |
| |
| @Test |
| public void addTungstenSecurityGroupIngressRuleTest() { |
| SecurityRule securityRule = mock(SecurityRule.class); |
| SecurityGroupVO securityGroupVO = mock(SecurityGroupVO.class); |
| TungstenAnswer getTungstenSecurityGroupAnswer = mock(TungstenAnswer.class); |
| TungstenAnswer addTungstenSecurityGroupRuleAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenProviderVO tungstenProviderVO = mock(TungstenProviderVO.class); |
| net.juniper.tungsten.api.types.SecurityGroup securityGroup = mock(net.juniper.tungsten.api.types.SecurityGroup.class); |
| |
| when(tungstenProviderDao.findAll()).thenReturn(List.of(tungstenProviderVO)); |
| when(securityGroupDao.findById(anyLong())).thenReturn(securityGroupVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(GetTungstenSecurityGroupCommand.class), anyLong())).thenReturn(getTungstenSecurityGroupAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(AddTungstenSecurityGroupRuleCommand.class), anyLong())).thenReturn(addTungstenSecurityGroupRuleAnswer); |
| when(getTungstenSecurityGroupAnswer.getApiObjectBase()).thenReturn(securityGroup); |
| when(securityRule.getRuleType()).thenReturn(SecurityRule.SecurityRuleType.IngressRule); |
| when(securityRule.getProtocol()).thenReturn(NetUtils.ALL_PROTO); |
| when(securityRule.getEndPort()).thenReturn(NetUtils.PORT_RANGE_MIN); |
| when(securityRule.getAllowedNetworkId()).thenReturn(null); |
| |
| assertTrue(tungstenService.addTungstenSecurityGroupRule(List.of(securityRule))); |
| } |
| |
| @Test |
| public void removeTungstenSecurityGroupEgressRuleTest() { |
| SecurityRule securityRule = mock(SecurityRule.class); |
| SecurityGroupVO securityGroupVO = mock(SecurityGroupVO.class); |
| TungstenProviderVO tungstenProviderVO = mock(TungstenProviderVO.class); |
| TungstenSecurityGroupRuleVO tungstenSecurityGroupRuleVO = mock(TungstenSecurityGroupRuleVO.class); |
| TungstenAnswer addTungstenSecurityGroupRuleAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer removeTungstenSecurityGroupRuleAnswer = MockTungstenAnswerFactory.get(true); |
| NicVO nicVO = mock(NicVO.class); |
| |
| when(tungstenProviderDao.findAll()).thenReturn(List.of(tungstenProviderVO)); |
| when(securityGroupDao.findById(anyLong())).thenReturn(securityGroupVO); |
| when(securityRule.getRuleType()).thenReturn(SecurityRule.SecurityRuleType.EgressRule); |
| when(securityRule.getType()).thenReturn("egress"); |
| when(tungstenSecurityGroupRuleDao.persist(any(TungstenSecurityGroupRuleVO.class))).thenReturn(tungstenSecurityGroupRuleVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(AddTungstenSecurityGroupRuleCommand.class), anyLong())).thenReturn(addTungstenSecurityGroupRuleAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(RemoveTungstenSecurityGroupRuleCommand.class), anyLong())).thenReturn(removeTungstenSecurityGroupRuleAnswer); |
| when(securityRule.getAllowedNetworkId()).thenReturn(1L); |
| when(securityGroupVMMapDao.listVmIdsBySecurityGroup(anyLong())).thenReturn(List.of(1L)); |
| when(nicDao.findDefaultNicForVM(anyLong())).thenReturn(nicVO); |
| when(tungstenSecurityGroupRuleDao.expunge(anyLong())).thenReturn(true); |
| when(nicVO.getIPv4Address()).thenReturn("192.168.100.100"); |
| when(nicVO.getIPv6Address()).thenReturn("fd00::1"); |
| when(nicVO.getSecondaryIp()).thenReturn(true); |
| when(nicSecIpDao.getSecondaryIpAddressesForNic(anyLong())).thenReturn(List.of("192.168.100.200")); |
| when(tungstenSecurityGroupRuleDao.findBySecurityGroupAndRuleTypeAndRuleTarget(anyLong(), anyString(), anyString())).thenReturn(tungstenSecurityGroupRuleVO); |
| |
| assertTrue(tungstenService.removeTungstenSecurityGroupRule(securityRule)); |
| } |
| |
| @Test |
| public void removeTungstenSecurityGroupIngressRuleTest() { |
| SecurityRule securityRule = mock(SecurityRule.class); |
| SecurityGroupVO securityGroupVO = mock(SecurityGroupVO.class); |
| TungstenProviderVO tungstenProviderVO = mock(TungstenProviderVO.class); |
| TungstenAnswer removeTungstenSecurityGroupRuleAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(tungstenProviderDao.findAll()).thenReturn(List.of(tungstenProviderVO)); |
| when(securityGroupDao.findById(anyLong())).thenReturn(securityGroupVO); |
| when(securityRule.getRuleType()).thenReturn(SecurityRule.SecurityRuleType.IngressRule); |
| when(tungstenFabricUtils.sendTungstenCommand(any(RemoveTungstenSecurityGroupRuleCommand.class), anyLong())).thenReturn(removeTungstenSecurityGroupRuleAnswer); |
| when(securityRule.getAllowedNetworkId()).thenReturn(null); |
| |
| assertTrue(tungstenService.removeTungstenSecurityGroupRule(securityRule)); |
| } |
| |
| @Test |
| public void addTungstenNicSecondaryIpAddressTest() { |
| NicSecondaryIp nicSecondaryIp = mock(NicSecondaryIp.class); |
| Network network = mock(Network.class); |
| DataCenter dataCenter = mock(DataCenter.class); |
| Nic nic = mock(Nic.class); |
| SecurityGroupVO securityGroupVO = mock(SecurityGroupVO.class); |
| SecurityGroupRuleVO securityGroupRuleVO = mock(SecurityGroupRuleVO.class); |
| TungstenSecurityGroupRuleVO tungstenSecurityGroupRuleVO = mock(TungstenSecurityGroupRuleVO.class); |
| TungstenProviderVO tungstenProviderVO = mock(TungstenProviderVO.class); |
| TungstenAnswer addTungstenSecondaryIpAddressAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer addTungstenSecurityGroupRuleAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(entityMgr.findById(eq(NicSecondaryIp.class), anyLong())).thenReturn(nicSecondaryIp); |
| when(entityMgr.findById(eq(Network.class), anyLong())).thenReturn(network); |
| when(entityMgr.findById(eq(DataCenter.class), anyLong())).thenReturn(dataCenter); |
| when(entityMgr.findById(eq(Nic.class), anyLong())).thenReturn(nic); |
| when(nicSecondaryIp.getIp4Address()).thenReturn("192.168.100.100"); |
| when(tungstenFabricUtils.sendTungstenCommand(any(AddTungstenSecondaryIpAddressCommand.class), anyLong())).thenReturn(addTungstenSecondaryIpAddressAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(AddTungstenSecurityGroupRuleCommand.class), anyLong())).thenReturn(addTungstenSecurityGroupRuleAnswer); |
| when(dataCenter.isSecurityGroupEnabled()).thenReturn(true); |
| when(network.getGuestType()).thenReturn(Network.GuestType.Shared); |
| when(securityGroupManager.getSecurityGroupsForVm(anyLong())).thenReturn(List.of(securityGroupVO)); |
| when(securityGroupRuleDao.listByAllowedSecurityGroupId(anyLong())).thenReturn(List.of(securityGroupRuleVO)); |
| when(tungstenSecurityGroupRuleDao.persist(any(TungstenSecurityGroupRuleVO.class))).thenReturn(tungstenSecurityGroupRuleVO); |
| when(securityGroupRuleVO.getProtocol()).thenReturn(NetUtils.ALL_PROTO); |
| when(tungstenProviderDao.findAll()).thenReturn(List.of(tungstenProviderVO)); |
| |
| assertTrue(tungstenService.addTungstenNicSecondaryIpAddress(1L)); |
| } |
| |
| @Test |
| public void removeTungstenNicSecondaryIpAddressTest() { |
| NicSecondaryIpVO nicSecondaryIpVO = mock(NicSecondaryIpVO.class); |
| Network network = mock(Network.class); |
| DataCenter dataCenter = mock(DataCenter.class); |
| TungstenAnswer removeTungstenSecondaryIpAddressAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenSecurityGroupRuleVO tungstenSecurityGroupRuleVO = mock(TungstenSecurityGroupRuleVO.class); |
| SecurityGroupVO securityGroupVO = mock(SecurityGroupVO.class); |
| TungstenAnswer removeTungstenSecurityGroupRuleAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(entityMgr.findById(eq(Network.class), anyLong())).thenReturn(network); |
| when(entityMgr.findById(eq(DataCenter.class), anyLong())).thenReturn(dataCenter); |
| when(tungstenFabricUtils.sendTungstenCommand(any(RemoveTungstenSecondaryIpAddressCommand.class), anyLong())).thenReturn(removeTungstenSecondaryIpAddressAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(RemoveTungstenSecurityGroupRuleCommand.class), anyLong())).thenReturn(removeTungstenSecurityGroupRuleAnswer); |
| |
| when(dataCenter.isSecurityGroupEnabled()).thenReturn(true); |
| when(network.getGuestType()).thenReturn(Network.GuestType.Shared); |
| when(tungstenSecurityGroupRuleDao.listByRuleTarget(anyString())).thenReturn(List.of(tungstenSecurityGroupRuleVO)); |
| when(securityGroupDao.findById(anyLong())).thenReturn(securityGroupVO); |
| when(tungstenSecurityGroupRuleDao.expunge(anyLong())).thenReturn(true); |
| when(nicSecondaryIpVO.getIp4Address()).thenReturn("192.168.100.100"); |
| |
| assertTrue(tungstenService.removeTungstenNicSecondaryIpAddress(nicSecondaryIpVO)); |
| } |
| |
| @Test |
| public void createTungstenPolicyTest() { |
| TungstenAnswer createTungstenPolicyAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenNetworkPolicy tungstenNetworkPolicy = mock(TungstenNetworkPolicy.class); |
| NetworkPolicy networkPolicy = mock(NetworkPolicy.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenPolicyCommand.class), anyLong())).thenReturn(createTungstenPolicyAnswer); |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(createTungstenPolicyAnswer.getTungstenModel()).thenReturn(tungstenNetworkPolicy); |
| when(tungstenNetworkPolicy.getNetworkPolicy()).thenReturn(networkPolicy); |
| |
| assertNotNull(tungstenService.createTungstenPolicy(1L, "test")); |
| } |
| |
| @Test |
| public void addTungstenPolicyRuleTest() throws Exception { |
| TungstenAnswer addTungstenPolicyRuleAnswer = MockTungstenAnswerFactory.get(true); |
| NetworkPolicy networkPolicy = mock(NetworkPolicy.class); |
| PolicyEntriesType policyEntriesType = mock(PolicyEntriesType.class); |
| PolicyRuleType policyRuleType = mock(PolicyRuleType.class); |
| ActionListType actionListType = mock(ActionListType.class); |
| AddressType addressType = mock(AddressType.class); |
| SubnetType subnetType = mock(SubnetType.class); |
| PortType portType = mock(PortType.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(tungstenFabricUtils.sendTungstenCommand(any(AddTungstenPolicyRuleCommand.class), anyLong())).thenReturn(addTungstenPolicyRuleAnswer); |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(addTungstenPolicyRuleAnswer.getApiObjectBase()).thenReturn(networkPolicy); |
| when(networkPolicy.getEntries()).thenReturn(policyEntriesType); |
| when(policyEntriesType.getPolicyRule()).thenReturn(List.of(policyRuleType)); |
| |
| when(policyRuleType.getRuleUuid()).thenReturn("8b4637b6-5629-46de-8fb2-d0b0502bfa85"); |
| when(policyRuleType.getActionList()).thenReturn(actionListType); |
| when(actionListType.getSimpleAction()).thenReturn("pass"); |
| when(policyRuleType.getSrcAddresses()).thenReturn(List.of(addressType)); |
| when(addressType.getSubnet()).thenReturn(subnetType); |
| when(policyRuleType.getSrcPorts()).thenReturn(List.of(portType)); |
| when(policyRuleType.getDstAddresses()).thenReturn(List.of(addressType)); |
| when(policyRuleType.getDstPorts()).thenReturn(List.of(portType)); |
| |
| try (MockedConstruction<AddTungstenPolicyRuleCommand> ignored = |
| Mockito.mockConstruction(AddTungstenPolicyRuleCommand.class, (mock, context) -> { |
| when(mock.getUuid()).thenReturn("8b4637b6-5629-46de-8fb2-d0b0502bfa85"); |
| })) { |
| |
| assertNotNull(tungstenService.addTungstenPolicyRule(1L, "948f421c-edde-4518-a391-09299cc25dc2", "pass", |
| "<>", "tcp", "network1", "192.168.100.100", 32, 80, 80, |
| "network2", "192.168.200.200", 32, 80, 80)); |
| } |
| } |
| |
| @Test |
| public void listTungstenPolicyTest() { |
| NetworkVO networkVO = mock(NetworkVO.class); |
| TungstenAnswer listTungstenPolicyAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenNetworkPolicy tungstenNetworkPolicy = mock(TungstenNetworkPolicy.class); |
| NetworkPolicy networkPolicy = mock(NetworkPolicy.class); |
| VirtualNetwork virtualNetwork = mock(VirtualNetwork.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(networkDao.findById(anyLong())).thenReturn(networkVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(ListTungstenPolicyCommand.class), anyLong())).thenReturn(listTungstenPolicyAnswer); |
| when(listTungstenPolicyAnswer.getTungstenModelList()).thenReturn(List.of(tungstenNetworkPolicy)); |
| when(tungstenNetworkPolicy.getNetworkPolicy()).thenReturn(networkPolicy); |
| when(tungstenNetworkPolicy.getVirtualNetworkList()).thenReturn( |
| List.of(virtualNetwork)); |
| |
| assertNotNull(tungstenService.listTungstenPolicy(1L, 2L, 3L, "948f421c-edde-4518-a391-09299cc25dc2")); |
| } |
| |
| @Test |
| public void listTungstenNetworkTest() { |
| TungstenAnswer listTungstenNetworkAnswer = MockTungstenAnswerFactory.get(true); |
| VirtualNetwork virtualNetwork = mock(VirtualNetwork.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(ListTungstenNetworkCommand.class), anyLong())).thenReturn(listTungstenNetworkAnswer); |
| doReturn(List.of(virtualNetwork)).when(listTungstenNetworkAnswer).getApiObjectBaseList(); |
| when((virtualNetwork.getName())).thenReturn("guestNetwork1"); |
| |
| assertNotNull(tungstenService.listTungstenNetwork(1L, "948f421c-edde-4518-a391-09299cc25dc2", false)); |
| } |
| |
| @Test |
| public void listTungstenNicTest() { |
| TungstenAnswer listTungstenNicAnswer = MockTungstenAnswerFactory.get(true); |
| VirtualMachineInterface virtualMachineInterface = mock(VirtualMachineInterface.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(ListTungstenNicCommand.class), anyLong())).thenReturn(listTungstenNicAnswer); |
| doReturn(List.of(virtualMachineInterface)).when(listTungstenNicAnswer).getApiObjectBaseList(); |
| |
| assertNotNull(tungstenService.listTungstenNic(1L, "948f421c-edde-4518-a391-09299cc25dc2")); |
| } |
| |
| @Test |
| public void listTungstenVmTest() { |
| TungstenAnswer listTungstenVmAnswer = MockTungstenAnswerFactory.get(true); |
| VirtualMachine virtualMachine = mock(VirtualMachine.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(ListTungstenVmCommand.class), anyLong())).thenReturn(listTungstenVmAnswer); |
| doReturn(List.of(virtualMachine)).when(listTungstenVmAnswer).getApiObjectBaseList(); |
| |
| assertNotNull(tungstenService.listTungstenVm(1L, "948f421c-edde-4518-a391-09299cc25dc2")); |
| } |
| |
| @Test |
| public void deleteTungstenPolicyTest() { |
| TungstenAnswer deleteTungstenPolicyAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenPolicyCommand.class), anyLong())).thenReturn(deleteTungstenPolicyAnswer); |
| |
| assertTrue(tungstenService.deleteTungstenPolicy(1L, "948f421c-edde-4518-a391-09299cc25dc2")); |
| } |
| |
| @Test |
| public void listTungstenPolicyRuleWithRuleUuidTest() { |
| TungstenAnswer listTungstenPolicyRuleAnswer = MockTungstenAnswerFactory.get(true); |
| NetworkPolicy networkPolicy = mock(NetworkPolicy.class); |
| PolicyEntriesType policyEntriesType = mock(PolicyEntriesType.class); |
| PolicyRuleType policyRuleType = mock(PolicyRuleType.class); |
| ActionListType actionListType = mock(ActionListType.class); |
| AddressType addressType = mock(AddressType.class); |
| SubnetType subnetType = mock(SubnetType.class); |
| PortType portType = mock(PortType.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(ListTungstenPolicyRuleCommand.class), anyLong())).thenReturn(listTungstenPolicyRuleAnswer); |
| doReturn(networkPolicy).when(listTungstenPolicyRuleAnswer).getApiObjectBase(); |
| when(networkPolicy.getEntries()).thenReturn(policyEntriesType); |
| when(policyEntriesType.getPolicyRule()).thenReturn(List.of(policyRuleType)); |
| when(policyRuleType.getRuleUuid()).thenReturn("8b4637b6-5629-46de-8fb2-d0b0502bfa85"); |
| when(policyRuleType.getActionList()).thenReturn(actionListType); |
| when(actionListType.getSimpleAction()).thenReturn("pass"); |
| when(policyRuleType.getSrcAddresses()).thenReturn(List.of(addressType)); |
| when(addressType.getSubnet()).thenReturn(subnetType); |
| when(policyRuleType.getSrcPorts()).thenReturn(List.of(portType)); |
| when(policyRuleType.getDstAddresses()).thenReturn(List.of(addressType)); |
| when(policyRuleType.getDstPorts()).thenReturn(List.of(portType)); |
| |
| assertNotNull(tungstenService.listTungstenPolicyRule(1L, "948f421c-edde-4518-a391-09299cc25dc2", "8b4637b6-5629-46de-8fb2-d0b0502bfa85")); |
| } |
| |
| @Test |
| public void listTungstenPolicyRuleWithAllRuleTest() { |
| TungstenAnswer listTungstenPolicyRuleAnswer = MockTungstenAnswerFactory.get(true); |
| NetworkPolicy networkPolicy = mock(NetworkPolicy.class); |
| PolicyEntriesType policyEntriesType = mock(PolicyEntriesType.class); |
| PolicyRuleType policyRuleType = mock(PolicyRuleType.class); |
| ActionListType actionListType = mock(ActionListType.class); |
| AddressType addressType = mock(AddressType.class); |
| SubnetType subnetType = mock(SubnetType.class); |
| PortType portType = mock(PortType.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(ListTungstenPolicyRuleCommand.class), anyLong())).thenReturn(listTungstenPolicyRuleAnswer); |
| doReturn(networkPolicy).when(listTungstenPolicyRuleAnswer).getApiObjectBase(); |
| when(networkPolicy.getEntries()).thenReturn(policyEntriesType); |
| when(policyEntriesType.getPolicyRule()).thenReturn(List.of(policyRuleType)); |
| when(policyRuleType.getRuleUuid()).thenReturn("8b4637b6-5629-46de-8fb2-d0b0502bfa85"); |
| when(policyRuleType.getActionList()).thenReturn(actionListType); |
| when(actionListType.getSimpleAction()).thenReturn("pass"); |
| when(policyRuleType.getSrcAddresses()).thenReturn(List.of(addressType)); |
| when(addressType.getSubnet()).thenReturn(subnetType); |
| when(policyRuleType.getSrcPorts()).thenReturn(List.of(portType)); |
| when(policyRuleType.getDstAddresses()).thenReturn(List.of(addressType)); |
| when(policyRuleType.getDstPorts()).thenReturn(List.of(portType)); |
| |
| assertNotNull(tungstenService.listTungstenPolicyRule(1L, "948f421c-edde-4518-a391-09299cc25dc2", null)); |
| } |
| |
| @Test |
| public void removeTungstenPolicyRuleTest() { |
| TungstenAnswer removeTungstenPolicyRuleAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenNetworkPolicy tungstenNetworkPolicy = mock(TungstenNetworkPolicy.class); |
| NetworkPolicy networkPolicy = mock(NetworkPolicy.class); |
| VirtualNetwork virtualNetwork = mock(VirtualNetwork.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(RemoveTungstenPolicyRuleCommand.class), anyLong())).thenReturn(removeTungstenPolicyRuleAnswer); |
| when(removeTungstenPolicyRuleAnswer.getTungstenModel()).thenReturn(tungstenNetworkPolicy); |
| when(tungstenNetworkPolicy.getNetworkPolicy()).thenReturn(networkPolicy); |
| when(tungstenNetworkPolicy.getVirtualNetworkList()).thenReturn(List.of(virtualNetwork)); |
| |
| assertNotNull(tungstenService.removeTungstenPolicyRule(1L, "948f421c-edde-4518-a391-09299cc25dc2", "8b4637b6-5629-46de-8fb2-d0b0502bfa85")); |
| } |
| |
| @Test |
| public void createTungstenTagTest() { |
| TungstenAnswer createTungstenTagAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenTag tungstenTag = mock(TungstenTag.class); |
| Tag tag = mock(Tag.class); |
| VirtualNetwork virtualNetwork = mock(VirtualNetwork.class); |
| VirtualMachineInterface virtualMachineInterface = mock(VirtualMachineInterface.class); |
| VirtualMachine virtualMachine = mock(VirtualMachine.class); |
| NetworkPolicy networkPolicy = mock(NetworkPolicy.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenTagCommand.class), anyLong())).thenReturn(createTungstenTagAnswer); |
| when(createTungstenTagAnswer.getTungstenModel()).thenReturn(tungstenTag); |
| when(tungstenTag.getTag()).thenReturn(tag); |
| doReturn(List.of(virtualNetwork)).when(tungstenTag).getVirtualNetworkList(); |
| doReturn(List.of(virtualMachine)).when(tungstenTag).getVirtualMachineList(); |
| doReturn(List.of(virtualMachineInterface)).when(tungstenTag).getVirtualMachineInterfaceList(); |
| doReturn(List.of(networkPolicy)).when(tungstenTag).getNetworkPolicyList(); |
| |
| assertNotNull(tungstenService.createTungstenTag(1L, "testTag", "testTagType")); |
| } |
| |
| @Test |
| public void createTungstenTagTypeTest() { |
| TungstenAnswer createTungstenTagTypeAnswer = MockTungstenAnswerFactory.get(true); |
| TagType tagtype = mock(TagType.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenTagTypeCommand.class), anyLong())).thenReturn(createTungstenTagTypeAnswer); |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(createTungstenTagTypeAnswer.getApiObjectBase()).thenReturn(tagtype); |
| |
| assertNotNull(tungstenService.createTungstenTagType(1L, "testTagType")); |
| } |
| |
| @Test |
| public void listTungstenTagsTest() { |
| TungstenAnswer listTungstenTagAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenTag tungstenTag = mock(TungstenTag.class); |
| Tag tag = mock(Tag.class); |
| VirtualNetwork virtualNetwork = mock(VirtualNetwork.class); |
| VirtualMachineInterface virtualMachineInterface = mock(VirtualMachineInterface.class); |
| VirtualMachine virtualMachine = mock(VirtualMachine.class); |
| NetworkPolicy networkPolicy = mock(NetworkPolicy.class); |
| ApplicationPolicySet applicationPolicySet = mock(ApplicationPolicySet.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(ListTungstenTagCommand.class), anyLong())).thenReturn(listTungstenTagAnswer); |
| when(listTungstenTagAnswer.getTungstenModelList()).thenReturn(List.of(tungstenTag)); |
| when(tungstenTag.getTag()).thenReturn(tag); |
| doReturn(List.of(virtualNetwork)).when(tungstenTag).getVirtualNetworkList(); |
| doReturn(List.of(virtualMachine)).when(tungstenTag).getVirtualMachineList(); |
| doReturn(List.of(virtualMachineInterface)).when(tungstenTag).getVirtualMachineInterfaceList(); |
| doReturn(List.of(networkPolicy)).when(tungstenTag).getNetworkPolicyList(); |
| |
| assertNotNull(tungstenService.listTungstenTags(1L, "948f421c-edde-4518-a391-09299cc25dc2" |
| , "8b4637b6-5629-46de-8fb2-d0b0502bfa85", "8d097a79-a38d-4db4-8a41-16f15d9c5afa", "a329662e-1805-4a89-9b05-2b818ea35978", |
| "d5e3f5c5-97ed-41b6-9b6f-7f696b9eddeb", "f5ba12c8-d4c5-4c20-a57d-67a9b6fca652")); |
| } |
| |
| @Test |
| public void listTungstenTagTypesTest() { |
| TungstenAnswer listTungstenTagTypeAnswer = MockTungstenAnswerFactory.get(true); |
| TagType tagtype = mock(TagType.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(ListTungstenTagTypeCommand.class), anyLong())).thenReturn(listTungstenTagTypeAnswer); |
| doReturn(List.of(tagtype)).when(listTungstenTagTypeAnswer).getApiObjectBaseList(); |
| |
| assertNotNull(tungstenService.listTungstenTagTypes(1L, "testTagType")); |
| } |
| |
| @Test |
| public void deleteTungstenTagTest() { |
| TungstenAnswer deleteTungstenTagAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenTagCommand.class), anyLong())).thenReturn(deleteTungstenTagAnswer); |
| |
| assertTrue(tungstenService.deleteTungstenTag(1L, "948f421c-edde-4518-a391-09299cc25dc2")); |
| } |
| |
| @Test |
| public void deleteTungstenTagTypeTest() { |
| TungstenAnswer deleteTungstenTagTypeAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenTagTypeCommand.class), anyLong())).thenReturn(deleteTungstenTagTypeAnswer); |
| |
| assertTrue(tungstenService.deleteTungstenTagType(1L, "948f421c-edde-4518-a391-09299cc25dc2")); |
| } |
| |
| @Test |
| public void applyTungstenPolicyTest() { |
| TungstenAnswer applyTungstenPolicyAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenNetworkPolicy tungstenNetworkPolicy = mock(TungstenNetworkPolicy.class); |
| NetworkPolicy networkPolicy = mock(NetworkPolicy.class); |
| VirtualNetwork virtualNetwork = mock(VirtualNetwork.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(ApplyTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(applyTungstenPolicyAnswer); |
| when(applyTungstenPolicyAnswer.getTungstenModel()).thenReturn(tungstenNetworkPolicy); |
| when(tungstenNetworkPolicy.getNetworkPolicy()).thenReturn(networkPolicy); |
| when(tungstenNetworkPolicy.getVirtualNetworkList()).thenReturn(List.of(virtualNetwork)); |
| |
| assertNotNull(tungstenService.applyTungstenPolicy(1L, "948f421c-edde-4518-a391-09299cc25dc2", "8b4637b6-5629-46de-8fb2-d0b0502bfa85", 1, 1)); |
| } |
| |
| @Test |
| public void applyTungstenTagTest() { |
| TungstenAnswer applyTungstenTagAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenTag tungstenTag = mock(TungstenTag.class); |
| Tag tag = mock(Tag.class); |
| NetworkPolicy networkPolicy = mock(NetworkPolicy.class); |
| VirtualNetwork virtualNetwork = mock(VirtualNetwork.class); |
| VirtualMachine virtualMachine = mock(VirtualMachine.class); |
| VirtualMachineInterface virtualMachineInterface = mock(VirtualMachineInterface.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(ApplyTungstenTagCommand.class), anyLong())).thenReturn(applyTungstenTagAnswer); |
| when(applyTungstenTagAnswer.getTungstenModel()).thenReturn(tungstenTag); |
| when(tungstenTag.getTag()).thenReturn(tag); |
| when(tungstenTag.getNetworkPolicyList()).thenReturn(List.of(networkPolicy)); |
| when(tungstenTag.getVirtualNetworkList()).thenReturn(List.of(virtualNetwork)); |
| when(tungstenTag.getVirtualMachineList()).thenReturn(List.of(virtualMachine)); |
| when(tungstenTag.getVirtualMachineInterfaceList()).thenReturn(List.of(virtualMachineInterface)); |
| |
| assertNotNull(tungstenService.applyTungstenTag(1L, List.of("948f421c-edde-4518-a391-09299cc25dc2"), List.of("8b4637b6-5629-46de-8fb2-d0b0502bfa85") |
| , List.of("8d097a79-a38d-4db4-8a41-16f15d9c5afa"), "a329662e-1805-4a89-9b05-2b818ea35978", "d5e3f5c5-97ed-41b6-9b6f-7f696b9eddeb" |
| , "f5ba12c8-d4c5-4c20-a57d-67a9b6fca652")); |
| } |
| |
| @Test |
| public void removeTungstenPolicyTest() { |
| TungstenAnswer removeTungstenPolicyAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenNetworkPolicy tungstenNetworkPolicy = mock(TungstenNetworkPolicy.class); |
| NetworkPolicy networkPolicy = mock(NetworkPolicy.class); |
| VirtualNetwork virtualNetwork = mock(VirtualNetwork.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(RemoveTungstenPolicyCommand.class), anyLong())).thenReturn(removeTungstenPolicyAnswer); |
| when(removeTungstenPolicyAnswer.getTungstenModel()).thenReturn(tungstenNetworkPolicy); |
| when(tungstenNetworkPolicy.getNetworkPolicy()).thenReturn(networkPolicy); |
| when(tungstenNetworkPolicy.getVirtualNetworkList()).thenReturn(List.of(virtualNetwork)); |
| |
| assertNotNull(tungstenService.removeTungstenPolicy(1L, "948f421c-edde-4518-a391-09299cc25dc2", "8b4637b6-5629-46de-8fb2-d0b0502bfa85")); |
| } |
| |
| @Test |
| public void removeTungstenTagTest() { |
| TungstenAnswer removeTungstenTagAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenTag tungstenTag = mock(TungstenTag.class); |
| Tag tag = mock(Tag.class); |
| NetworkPolicy networkPolicy = mock(NetworkPolicy.class); |
| VirtualNetwork virtualNetwork = mock(VirtualNetwork.class); |
| VirtualMachine virtualMachine = mock(VirtualMachine.class); |
| VirtualMachineInterface virtualMachineInterface = mock(VirtualMachineInterface.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(RemoveTungstenTagCommand.class), anyLong())).thenReturn(removeTungstenTagAnswer); |
| when(removeTungstenTagAnswer.getTungstenModel()).thenReturn(tungstenTag); |
| when(tungstenTag.getTag()).thenReturn(tag); |
| when(tungstenTag.getNetworkPolicyList()).thenReturn(List.of(networkPolicy)); |
| when(tungstenTag.getVirtualNetworkList()).thenReturn(List.of(virtualNetwork)); |
| when(tungstenTag.getVirtualMachineList()).thenReturn(List.of(virtualMachine)); |
| when(tungstenTag.getVirtualMachineInterfaceList()).thenReturn(List.of(virtualMachineInterface)); |
| |
| assertNotNull(tungstenService.removeTungstenTag(1L, List.of("948f421c-edde-4518-a391-09299cc25dc2"), |
| List.of("8b4637b6-5629-46de-8fb2-d0b0502bfa85"), |
| List.of("8d097a79-a38d-4db4-8a41-16f15d9c5afa"), "a329662e-1805-4a89-9b05-2b818ea35978", null, |
| "d5e3f5c5-97ed-41b6-9b6f-7f696b9eddeb")); |
| } |
| |
| @Test |
| public void createTungstenAddressGroupTest() { |
| TungstenAnswer createTungstenAddressGroupAnswer = MockTungstenAnswerFactory.get(true); |
| AddressGroup addressGroup = mock(AddressGroup.class); |
| SubnetListType subnetListType = mock(SubnetListType.class); |
| SubnetType subnetType = mock(SubnetType.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenAddressGroupCommand.class), anyLong())).thenReturn(createTungstenAddressGroupAnswer); |
| when(createTungstenAddressGroupAnswer.getApiObjectBase()).thenReturn(addressGroup); |
| when(addressGroup.getPrefix()).thenReturn(subnetListType); |
| when(subnetListType.getSubnet()).thenReturn(List.of(subnetType)); |
| |
| assertNotNull(tungstenService.createTungstenAddressGroup(1L, "test", "192.168.100.0", 24)); |
| } |
| |
| @Test |
| public void createTungstenServiceGroupTest() { |
| TungstenAnswer createTungstenServiceGroupAnswer = MockTungstenAnswerFactory.get(true); |
| ServiceGroup serviceGroup = mock(ServiceGroup.class); |
| FirewallServiceGroupType firewallServiceGroupType = mock(FirewallServiceGroupType.class); |
| FirewallServiceType firewallServiceType = mock(FirewallServiceType.class); |
| PortType portType = mock(PortType.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenServiceGroupCommand.class), anyLong())).thenReturn(createTungstenServiceGroupAnswer); |
| when(createTungstenServiceGroupAnswer.getApiObjectBase()).thenReturn(serviceGroup); |
| when(serviceGroup.getFirewallServiceList()).thenReturn(firewallServiceGroupType); |
| when(firewallServiceGroupType.getFirewallService()).thenReturn(List.of(firewallServiceType)); |
| when(firewallServiceType.getDstPorts()).thenReturn(portType); |
| |
| assertNotNull(tungstenService.createTungstenServiceGroup(1L, "test", "tcp", 80, 80)); |
| } |
| |
| @Test |
| public void createTungstenFirewallRuleTest() { |
| TungstenAnswer createTungstenFirewallRuleAnswer = MockTungstenAnswerFactory.get(true); |
| net.juniper.tungsten.api.types.FirewallRule firewallRule = mock(net.juniper.tungsten.api.types.FirewallRule.class); |
| ActionListType actionListType = mock(ActionListType.class); |
| ObjectReference<ApiPropertyBase> serviceGroup = mock(ObjectReference.class); |
| FirewallRuleEndpointType firewallRuleEndpointType1 = mock(FirewallRuleEndpointType.class); |
| FirewallRuleEndpointType firewallRuleEndpointType2 = mock(FirewallRuleEndpointType.class); |
| FirewallRuleMatchTagsType firewallRuleMatchTagsType = mock(FirewallRuleMatchTagsType.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenFirewallRuleCommand.class), anyLong())).thenReturn(createTungstenFirewallRuleAnswer); |
| when(createTungstenFirewallRuleAnswer.getApiObjectBase()).thenReturn(firewallRule); |
| when(firewallRule.getActionList()).thenReturn(actionListType); |
| when(actionListType.getSimpleAction()).thenReturn("pass"); |
| when(firewallRule.getServiceGroup()).thenReturn(List.of(serviceGroup)); |
| when(serviceGroup.getReferredName()).thenReturn(List.of("service")); |
| when(firewallRule.getEndpoint1()).thenReturn(firewallRuleEndpointType1); |
| when(firewallRule.getEndpoint2()).thenReturn(firewallRuleEndpointType2); |
| when(firewallRuleEndpointType1.getTags()).thenReturn(List.of("tag")); |
| when(firewallRuleEndpointType2.getTags()).thenReturn(null); |
| when(firewallRuleEndpointType2.getAddressGroup()).thenReturn("address:group"); |
| when(firewallRule.getMatchTags()).thenReturn(firewallRuleMatchTagsType); |
| |
| assertNotNull(tungstenService.createTungstenFirewallRule(1L, "f5ba12c8-d4c5-4c20-a57d-67a9b6fca652", "test", "pass", "948f421c-edde-4518-a391-09299cc25dc2", |
| "8b4637b6-5629-46de-8fb2-d0b0502bfa85", "8d097a79-a38d-4db4-8a41-16f15d9c5afa", null, "<>", "a329662e-1805-4a89-9b05-2b818ea35978" |
| , "d5e3f5c5-97ed-41b6-9b6f-7f696b9eddeb", null, "df8e4490-2a40-4d63-a6f3-1f829ffe4fc6", 1)); |
| } |
| |
| @Test |
| public void createTungstenFirewallPolicyTest() { |
| TungstenAnswer createTungstenFirewallPolicyAnswer = MockTungstenAnswerFactory.get(true); |
| FirewallPolicy firewallPolicy = mock(FirewallPolicy.class); |
| ObjectReference<FirewallSequence> firewallSequenceObjectReference = mock(ObjectReference.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenFirewallPolicyCommand.class), anyLong())).thenReturn(createTungstenFirewallPolicyAnswer); |
| when(createTungstenFirewallPolicyAnswer.getApiObjectBase()).thenReturn(firewallPolicy); |
| when(firewallPolicy.getFirewallRule()).thenReturn(List.of(firewallSequenceObjectReference)); |
| when(firewallSequenceObjectReference.getReferredName()).thenReturn(List.of("firewallrule")); |
| |
| assertNotNull(tungstenService.createTungstenFirewallPolicy(1L, "f5ba12c8-d4c5-4c20-a57d-67a9b6fca652","test", 1)); |
| } |
| |
| @Test |
| public void createTungstenApplicationPolicySetTest() { |
| TungstenAnswer createTungstenApplicationPolicySetAnswer = MockTungstenAnswerFactory.get(true); |
| ApplicationPolicySet applicationPolicySet = mock(ApplicationPolicySet.class); |
| ObjectReference<ApiPropertyBase> objectReference = mock(ObjectReference.class); |
| ObjectReference<FirewallSequence> firewallSequenceObjectReference = mock(ObjectReference.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenApplicationPolicySetCommand.class), anyLong())).thenReturn(createTungstenApplicationPolicySetAnswer); |
| when(createTungstenApplicationPolicySetAnswer.getApiObjectBase()).thenReturn(applicationPolicySet); |
| when(applicationPolicySet.getTag()).thenReturn(List.of(objectReference)); |
| when(objectReference.getReferredName()).thenReturn(List.of("tag")); |
| when(applicationPolicySet.getFirewallPolicy()).thenReturn(List.of(firewallSequenceObjectReference)); |
| when(firewallSequenceObjectReference.getReferredName()).thenReturn(List.of("firewallrule")); |
| |
| assertNotNull(tungstenService.createTungstenApplicationPolicySet(1L, "test")); |
| } |
| |
| @Test |
| public void listTungstenApplicationPolicySetTest() { |
| TungstenAnswer listTungstenApplicationPolicySetAnswer = MockTungstenAnswerFactory.get(true); |
| ApplicationPolicySet applicationPolicySet = mock(ApplicationPolicySet.class); |
| ObjectReference<ApiPropertyBase> objectReference = mock(ObjectReference.class); |
| ObjectReference<FirewallSequence> firewallSequenceObjectReference = mock(ObjectReference.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(ListTungstenApplicationPolicySetCommand.class), anyLong())).thenReturn(listTungstenApplicationPolicySetAnswer); |
| doReturn(List.of(applicationPolicySet)).when(listTungstenApplicationPolicySetAnswer).getApiObjectBaseList(); |
| when(applicationPolicySet.getTag()).thenReturn(List.of(objectReference)); |
| when(objectReference.getReferredName()).thenReturn(List.of("tag")); |
| when(applicationPolicySet.getFirewallPolicy()).thenReturn(List.of(firewallSequenceObjectReference)); |
| when(firewallSequenceObjectReference.getReferredName()).thenReturn(List.of("firewallrule")); |
| |
| assertNotNull(tungstenService.listTungstenApplicationPolicySet(1L, "948f421c-edde-4518-a391-09299cc25dc2")); |
| } |
| |
| @Test |
| public void listTungstenFirewallPolicyTest() { |
| TungstenAnswer listTungstenFirewallPolicyAnswer = MockTungstenAnswerFactory.get(true); |
| FirewallPolicy firewallPolicy = mock(FirewallPolicy.class); |
| ObjectReference<FirewallSequence> firewallSequenceObjectReference = mock(ObjectReference.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(ListTungstenFirewallPolicyCommand.class), anyLong())).thenReturn(listTungstenFirewallPolicyAnswer); |
| doReturn(List.of(firewallPolicy)).when(listTungstenFirewallPolicyAnswer).getApiObjectBaseList(); |
| when(firewallPolicy.getFirewallRule()).thenReturn(List.of(firewallSequenceObjectReference)); |
| when(firewallSequenceObjectReference.getReferredName()).thenReturn(List.of("firewallrule")); |
| |
| assertNotNull(tungstenService.listTungstenFirewallPolicy(1L, "948f421c-edde-4518-a391-09299cc25dc2", "8b4637b6-5629-46de-8fb2-d0b0502bfa85")); |
| } |
| |
| @Test |
| public void listTungstenFirewallRuleTest() { |
| TungstenAnswer listTungstenFirewallRuleAnswer = MockTungstenAnswerFactory.get(true); |
| net.juniper.tungsten.api.types.FirewallRule firewallRule = mock(net.juniper.tungsten.api.types.FirewallRule.class); |
| ActionListType actionListType = mock(ActionListType.class); |
| ObjectReference<ApiPropertyBase> serviceGroup = mock(ObjectReference.class); |
| FirewallRuleEndpointType firewallRuleEndpointType1 = mock(FirewallRuleEndpointType.class); |
| FirewallRuleEndpointType firewallRuleEndpointType2 = mock(FirewallRuleEndpointType.class); |
| FirewallRuleMatchTagsType firewallRuleMatchTagsType = mock(FirewallRuleMatchTagsType.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(ListTungstenFirewallRuleCommand.class), anyLong())).thenReturn(listTungstenFirewallRuleAnswer); |
| doReturn(List.of(firewallRule)).when(listTungstenFirewallRuleAnswer).getApiObjectBaseList(); |
| when(firewallRule.getActionList()).thenReturn(actionListType); |
| when(actionListType.getSimpleAction()).thenReturn("pass"); |
| when(firewallRule.getServiceGroup()).thenReturn(List.of(serviceGroup)); |
| when(serviceGroup.getReferredName()).thenReturn(List.of("service")); |
| when(firewallRule.getEndpoint1()).thenReturn(firewallRuleEndpointType1); |
| when(firewallRule.getEndpoint2()).thenReturn(firewallRuleEndpointType2); |
| when(firewallRuleEndpointType1.getTags()).thenReturn(List.of("tag")); |
| when(firewallRuleEndpointType2.getTags()).thenReturn(null); |
| when(firewallRuleEndpointType2.getAddressGroup()).thenReturn("address:group"); |
| when(firewallRule.getMatchTags()).thenReturn(firewallRuleMatchTagsType); |
| |
| assertNotNull(tungstenService.listTungstenFirewallRule(1L, "948f421c-edde-4518-a391-09299cc25dc2", |
| "8b4637b6-5629-46de-8fb2-d0b0502bfa85")); |
| } |
| |
| @Test |
| public void listTungstenAddressGroupTest() { |
| TungstenAnswer listTungstenAddressGroupAnswer = MockTungstenAnswerFactory.get(true); |
| AddressGroup addressGroup = mock(AddressGroup.class); |
| SubnetListType subnetListType = mock(SubnetListType.class); |
| SubnetType subnetType = mock(SubnetType.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(ListTungstenAddressGroupCommand.class), anyLong())).thenReturn(listTungstenAddressGroupAnswer); |
| doReturn(List.of(addressGroup)).when(listTungstenAddressGroupAnswer).getApiObjectBaseList(); |
| when(addressGroup.getPrefix()).thenReturn(subnetListType); |
| when(subnetListType.getSubnet()).thenReturn( |
| List.of(subnetType)); |
| |
| assertNotNull(tungstenService.listTungstenAddressGroup(1L, "948f421c-edde-4518-a391-09299cc25dc2")); |
| } |
| |
| @Test |
| public void listTungstenServiceGroupTest() { |
| TungstenAnswer listTungstenServiceGroupAnswer = MockTungstenAnswerFactory.get(true); |
| ServiceGroup serviceGroup = mock(ServiceGroup.class); |
| FirewallServiceGroupType firewallServiceGroupType = mock(FirewallServiceGroupType.class); |
| FirewallServiceType firewallServiceType = mock(FirewallServiceType.class); |
| PortType portType = mock(PortType.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(ListTungstenServiceGroupCommand.class), anyLong())).thenReturn(listTungstenServiceGroupAnswer); |
| doReturn(List.of(serviceGroup)).when(listTungstenServiceGroupAnswer).getApiObjectBaseList(); |
| when(serviceGroup.getFirewallServiceList()).thenReturn(firewallServiceGroupType); |
| when(firewallServiceGroupType.getFirewallService()).thenReturn(List.of(firewallServiceType)); |
| when(firewallServiceType.getDstPorts()).thenReturn(portType); |
| |
| assertNotNull(tungstenService.listTungstenServiceGroup(1L, "948f421c-edde-4518-a391-09299cc25dc2")); |
| } |
| |
| @Test |
| public void deleteTungstenApplicationPolicySetTest() { |
| TungstenAnswer tungstenAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenApplicationPolicySetCommand.class), anyLong())).thenReturn(tungstenAnswer); |
| |
| assertTrue(tungstenService.deleteTungstenApplicationPolicySet(1L, "948f421c-edde-4518-a391-09299cc25dc2")); |
| } |
| |
| @Test |
| public void deleteTungstenFirewallPolicyTest() { |
| TungstenAnswer tungstenAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenFirewallPolicyCommand.class), anyLong())).thenReturn(tungstenAnswer); |
| |
| assertTrue(tungstenService.deleteTungstenFirewallPolicy(1L, "948f421c-edde-4518-a391-09299cc25dc2")); |
| } |
| |
| @Test |
| public void deleteTungstenFirewallRuleTest() { |
| TungstenAnswer tungstenAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenFirewallRuleCommand.class), anyLong())).thenReturn(tungstenAnswer); |
| |
| assertTrue(tungstenService.deleteTungstenFirewallRule(1L, "948f421c-edde-4518-a391-09299cc25dc2")); |
| } |
| |
| @Test |
| public void deleteTungstenServiceGroupTest() { |
| TungstenAnswer tungstenAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenServiceGroupCommand.class), anyLong())).thenReturn(tungstenAnswer); |
| |
| assertTrue(tungstenService.deleteTungstenServiceGroup(1L, "948f421c-edde-4518-a391-09299cc25dc2")); |
| } |
| |
| @Test |
| public void deleteTungstenAddressGroupTest() { |
| TungstenAnswer tungstenAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenAddressGroupCommand.class), anyLong())).thenReturn(tungstenAnswer); |
| |
| assertTrue(tungstenService.deleteTungstenAddressGroup(1L, "948f421c-edde-4518-a391-09299cc25dc2")); |
| } |
| |
| @Test |
| public void createSharedNetworkTest() { |
| Network network = mock(Network.class); |
| Vlan vlan = mock(Vlan.class); |
| AccountVO accountVO = mock(AccountVO.class); |
| TungstenAnswer createTungstenSharedNetworkAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer addNetworkSubnetAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenAnswer getTungstenNetworkDnsAnswer = MockTungstenAnswerFactory.get(true); |
| NetworkDetailVO networkDetailVO = mock(NetworkDetailVO.class); |
| TungstenProviderVO tungstenProviderVO = mock(TungstenProviderVO.class); |
| HostVO hostVO = mock(HostVO.class); |
| Answer answer = mock(Answer.class); |
| IPAddressVO ipAddressVO = mock(IPAddressVO.class); |
| ApiObjectBase apiObjectBase = mock(ApiObjectBase.class); |
| |
| when(accountDao.findById(anyLong())).thenReturn(accountVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenNetworkCommand.class), anyLong())).thenReturn(createTungstenSharedNetworkAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(AddTungstenNetworkSubnetCommand.class), anyLong())).thenReturn(addNetworkSubnetAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(GetTungstenNetworkDnsCommand.class), anyLong())).thenReturn(getTungstenNetworkDnsAnswer); |
| when(network.getMode()).thenReturn(Networks.Mode.Dhcp); |
| when(network.getCidr()).thenReturn("192.168.100.0/24"); |
| when(vlan.getIpRange()).thenReturn("192.168.100.100-192.168.100.200"); |
| when(vlan.getVlanGateway()).thenReturn("192.168.100.1"); |
| when(vlan.getIp6Gateway()).thenReturn("fd00::1"); |
| when(networkDetailsDao.persist(any(NetworkDetailVO.class))).thenReturn(networkDetailVO); |
| when(tungstenProviderDao.findByZoneId(anyLong())).thenReturn(tungstenProviderVO); |
| when(hostDao.findByPublicIp(anyString())).thenReturn(hostVO); |
| when(agentMgr.easySend(anyLong(), any(SetupTungstenVRouterCommand.class))).thenReturn(answer); |
| when(answer.getResult()).thenReturn(true); |
| when(vlan.getIp6Cidr()).thenReturn("fd00::1/64"); |
| when(vlan.getIp6Range()).thenReturn("fd00::100-fd00::200"); |
| when(getTungstenNetworkDnsAnswer.getDetails()).thenReturn("192.168.1.150"); |
| when(createTungstenSharedNetworkAnswer.getApiObjectBase()).thenReturn(apiObjectBase); |
| when(apiObjectBase.getQualifiedName()).thenReturn(List.of("network")); |
| when(tungstenProviderVO.getGateway()).thenReturn("192.168.100.1"); |
| |
| assertTrue(tungstenService.createSharedNetwork(network, vlan)); |
| } |
| |
| @Test |
| public void addTungstenVmSecurityGroupTest() { |
| VMInstanceVO vmInstanceVO = mock(VMInstanceVO.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| SecurityGroupVO securityGroupVO = mock(SecurityGroupVO.class); |
| TungstenProviderVO tungstenProviderVO = mock(TungstenProviderVO.class); |
| TungstenAnswer getTungstenSecurityGroupAnswer = mock(TungstenAnswer.class); |
| TungstenAnswer addTungstenVmToSecurityGroupAnswer = MockTungstenAnswerFactory.get(true); |
| net.juniper.tungsten.api.types.SecurityGroup securityGroup = mock(net.juniper.tungsten.api.types.SecurityGroup.class); |
| NicVO nicVO = mock(NicVO.class); |
| SecurityGroupRuleVO securityGroupRuleVO = mock(SecurityGroupRuleVO.class); |
| TungstenSecurityGroupRuleVO tungstenSecurityGroupRuleVO = mock(TungstenSecurityGroupRuleVO.class); |
| TungstenAnswer addTungstenSecurityGroupRuleAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(dataCenterVO.isSecurityGroupEnabled()).thenReturn(true); |
| when(securityGroupManager.getSecurityGroupsForVm(anyLong())).thenReturn(List.of(securityGroupVO)); |
| when(tungstenProviderDao.findAll()).thenReturn(List.of(tungstenProviderVO)); |
| when(tungstenFabricUtils.sendTungstenCommand(any(GetTungstenSecurityGroupCommand.class), anyLong())).thenReturn(getTungstenSecurityGroupAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(AddTungstenVmToSecurityGroupCommand.class), anyLong())).thenReturn(addTungstenVmToSecurityGroupAnswer); |
| when(tungstenFabricUtils.sendTungstenCommand(any(AddTungstenSecurityGroupRuleCommand.class), anyLong())).thenReturn(addTungstenSecurityGroupRuleAnswer); |
| when(getTungstenSecurityGroupAnswer.getApiObjectBase()).thenReturn(securityGroup); |
| when(nicDao.findDefaultNicForVM(anyLong())).thenReturn(nicVO); |
| when(nicVO.getBroadcastUri()).thenReturn(Networks.BroadcastDomainType.TUNGSTEN.toUri("tf")); |
| when(securityGroupRuleDao.listByAllowedSecurityGroupId(anyLong())).thenReturn(List.of(securityGroupRuleVO)); |
| when(nicVO.getIPv4Address()).thenReturn("192.168.100.100"); |
| when(nicVO.getIPv6Address()).thenReturn("fd00::1"); |
| when(nicVO.getSecondaryIp()).thenReturn(true); |
| when(nicSecIpDao.getSecondaryIpAddressesForNic(anyLong())).thenReturn(List.of("192.168.100.200")); |
| when(securityGroupRuleVO.getProtocol()).thenReturn(NetUtils.ALL_PROTO); |
| when(tungstenSecurityGroupRuleDao.persist(any(TungstenSecurityGroupRuleVO.class))).thenReturn(tungstenSecurityGroupRuleVO); |
| |
| assertTrue(tungstenService.addTungstenVmSecurityGroup(vmInstanceVO)); |
| } |
| |
| @Test |
| public void removeTungstenVmSecurityGroupTest() { |
| VMInstanceVO vmInstanceVO = mock(VMInstanceVO.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| SecurityGroupVO securityGroupVO = mock(SecurityGroupVO.class); |
| TungstenAnswer removeTungstenVmFromSecurityGroupAnswer = MockTungstenAnswerFactory.get(true); |
| NicVO nicVO = mock(NicVO.class); |
| SecurityGroupRuleVO securityGroupRuleVO = mock(SecurityGroupRuleVO.class); |
| TungstenAnswer removeTungstenSecurityGroupRuleAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenSecurityGroupRuleVO tungstenSecurityGroupRuleVO = mock(TungstenSecurityGroupRuleVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(dataCenterVO.isSecurityGroupEnabled()).thenReturn(true); |
| |
| assertTrue(tungstenService.removeTungstenVmSecurityGroup(vmInstanceVO)); |
| } |
| |
| @Test |
| public void createRoutingLogicalRouterTest() { |
| TungstenAnswer tungstenAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenLogicalRouter tungstenLogicalRouter = mock(TungstenLogicalRouter.class); |
| LogicalRouter logicalRouter = mock(LogicalRouter.class); |
| VirtualNetwork virtualNetwork = mock(VirtualNetwork.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenRoutingLogicalRouterCommand.class), anyLong())).thenReturn(tungstenAnswer); |
| when(tungstenAnswer.getTungstenModel()).thenReturn(tungstenLogicalRouter); |
| when(tungstenLogicalRouter.getLogicalRouter()).thenReturn(logicalRouter); |
| when(tungstenLogicalRouter.getVirtualNetworkList()).thenReturn(List.of(virtualNetwork)); |
| |
| assertNotNull(tungstenService.createRoutingLogicalRouter(1L, "default-domain:default-project", "testLR")); |
| } |
| |
| @Test |
| public void addNetworkGatewayToLogicalRouterTest() { |
| NetworkVO networkVO = mock(NetworkVO.class); |
| TungstenAnswer tungstenAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenLogicalRouter tungstenLogicalRouter = mock(TungstenLogicalRouter.class); |
| LogicalRouter logicalRouter = mock(LogicalRouter.class); |
| VirtualNetwork virtualNetwork = mock(VirtualNetwork.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(networkDao.findByUuid(anyString())).thenReturn(networkVO); |
| when(ipAddressManager.acquireLastGuestIpAddress(any(Network.class))).thenReturn("192.168.100.100"); |
| when(tungstenFabricUtils.sendTungstenCommand(any(AddTungstenNetworkGatewayToLogicalRouterCommand.class), anyLong())).thenReturn(tungstenAnswer); |
| when(tungstenAnswer.getTungstenModel()).thenReturn(tungstenLogicalRouter); |
| when(tungstenLogicalRouter.getLogicalRouter()).thenReturn(logicalRouter); |
| when(tungstenLogicalRouter.getVirtualNetworkList()).thenReturn(List.of(virtualNetwork)); |
| |
| assertNotNull(tungstenService.addNetworkGatewayToLogicalRouter(1L, "948f421c-edde-4518-a391-09299cc25dc2", "8b4637b6-5629-46de-8fb2-d0b0502bfa85")); |
| } |
| |
| @Test |
| public void listRoutingLogicalRouterTest() { |
| TungstenAnswer tungstenAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenLogicalRouter tungstenLogicalRouter = mock(TungstenLogicalRouter.class); |
| LogicalRouter logicalRouter = mock(LogicalRouter.class); |
| VirtualNetwork virtualNetwork = mock(VirtualNetwork.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(ListTungstenRoutingLogicalRouterCommand.class), anyLong())).thenReturn(tungstenAnswer); |
| when(tungstenAnswer.getTungstenModelList()).thenReturn(List.of(tungstenLogicalRouter)); |
| when(tungstenLogicalRouter.getLogicalRouter()).thenReturn(logicalRouter); |
| when(tungstenLogicalRouter.getVirtualNetworkList()).thenReturn(List.of(virtualNetwork)); |
| |
| assertNotNull(tungstenService.listRoutingLogicalRouter(1L, null, "948f421c-edde-4518-a391-09299cc25dc2")); |
| } |
| |
| @Test |
| public void removeNetworkGatewayFromLogicalRouterTest() { |
| NetworkVO networkVO = mock(NetworkVO.class); |
| TungstenAnswer tungstenAnswer = MockTungstenAnswerFactory.get(true); |
| TungstenGuestNetworkIpAddressVO tungstenGuestNetworkIpAddressVO = mock(TungstenGuestNetworkIpAddressVO.class); |
| TungstenLogicalRouter tungstenLogicalRouter = mock(TungstenLogicalRouter.class); |
| LogicalRouter logicalRouter = mock(LogicalRouter.class); |
| VirtualNetwork virtualNetwork = mock(VirtualNetwork.class); |
| DataCenterVO dataCenterVO = mock(DataCenterVO.class); |
| |
| when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO); |
| when(networkDao.findByUuid(anyString())).thenReturn(networkVO); |
| when(tungstenGuestNetworkIpAddressDao.findByNetworkAndLogicalRouter(anyLong(), anyString())).thenReturn(tungstenGuestNetworkIpAddressVO); |
| when(tungstenFabricUtils.sendTungstenCommand(any(RemoveTungstenNetworkGatewayFromLogicalRouterCommand.class), anyLong())).thenReturn(tungstenAnswer); |
| when(tungstenAnswer.getTungstenModel()).thenReturn(tungstenLogicalRouter); |
| when(tungstenLogicalRouter.getLogicalRouter()).thenReturn(logicalRouter); |
| when(tungstenLogicalRouter.getVirtualNetworkList()).thenReturn(List.of(virtualNetwork)); |
| |
| assertNotNull(tungstenService.removeNetworkGatewayFromLogicalRouter(1L, "948f421c-edde-4518-a391-09299cc25dc2", "8b4637b6-5629-46de-8fb2-d0b0502bfa85")); |
| } |
| |
| @Test |
| public void deleteLogicalRouterTest() { |
| TungstenAnswer tungstenAnswer = MockTungstenAnswerFactory.get(true); |
| |
| when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenRoutingLogicalRouterCommand.class), anyLong())).thenReturn(tungstenAnswer); |
| |
| assertTrue(tungstenService.deleteLogicalRouter(1L, "948f421c-edde-4518-a391-09299cc25dc2")); |
| } |
| } |