Refactoring org.apache.cloudstack.network.tungsten.service (#8098)

* Refactoring reduces mock cloning of TungstenAnswer

* Apply suggestions from code review

Great suggestions, thanks a lot!

Co-authored-by: dahn <daan.hoogland@gmail.com>

* Rename CreateMockTungstenAnswer  to MockTungstenAnswerFactory

* Updated parameter to camel case.

* Revised in accordance with the latest update

* Replace all `\r` with `\n`.

* Replace all \r with \n.

* temp for re-uploading

* reupdate

* update line ending

* update ling ending

* Add static methods to avoid duplicate creation of new

---------

Co-authored-by: dahn <daan.hoogland@gmail.com>
This commit is contained in:
gzhao9 2023-11-03 07:49:59 -04:00 committed by GitHub
parent 2f97e3bd83
commit 9e8f591ace
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 188 additions and 278 deletions

View File

@ -0,0 +1,38 @@
// 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 org.apache.cloudstack.network.tungsten.agent.api.TungstenAnswer;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class MockTungstenAnswerFactory {
TungstenAnswer tungstenAnswer;
MockTungstenAnswerFactory(boolean returnResult){
tungstenAnswer=mock(TungstenAnswer.class);
when(tungstenAnswer.getResult()).thenReturn(returnResult);
}
TungstenAnswer get() {
return tungstenAnswer;
}
public static TungstenAnswer get(boolean returnResult){
TungstenAnswer tungstenAnswers = new MockTungstenAnswerFactory(returnResult).get();
return tungstenAnswers;
}
}

View File

@ -256,13 +256,12 @@ public class TungstenElementTest {
StaticNatImpl staticNat = mock(StaticNatImpl.class); StaticNatImpl staticNat = mock(StaticNatImpl.class);
IPAddressVO ipAddressVO = mock(IPAddressVO.class); IPAddressVO ipAddressVO = mock(IPAddressVO.class);
VMInstanceVO vmInstanceVO = mock(VMInstanceVO.class); VMInstanceVO vmInstanceVO = mock(VMInstanceVO.class);
TungstenAnswer assignFloatingIpAnswer = mock(TungstenAnswer.class); TungstenAnswer assignFloatingIpAnswer = MockTungstenAnswerFactory.get(true);
Nic nic = mock(Nic.class); Nic nic = mock(Nic.class);
Network publicNetwork = mock(Network.class); Network publicNetwork = mock(Network.class);
List<StaticNatImpl> staticNatList = List.of(staticNat); List<StaticNatImpl> staticNatList = List.of(staticNat);
when(staticNat.isForRevoke()).thenReturn(false); when(staticNat.isForRevoke()).thenReturn(false);
when(assignFloatingIpAnswer.getResult()).thenReturn(true);
when(ipAddressDao.findByIdIncludingRemoved(anyLong())).thenReturn(ipAddressVO); when(ipAddressDao.findByIdIncludingRemoved(anyLong())).thenReturn(ipAddressVO);
when(vmInstanceDao.findByIdIncludingRemoved(anyLong())).thenReturn(vmInstanceVO); when(vmInstanceDao.findByIdIncludingRemoved(anyLong())).thenReturn(vmInstanceVO);
when(networkModel.getNicInNetworkIncludingRemoved(anyLong(), anyLong())).thenReturn(nic); when(networkModel.getNicInNetworkIncludingRemoved(anyLong(), anyLong())).thenReturn(nic);
@ -278,13 +277,12 @@ public class TungstenElementTest {
StaticNatImpl staticNat = mock(StaticNatImpl.class); StaticNatImpl staticNat = mock(StaticNatImpl.class);
IPAddressVO ipAddressVO = mock(IPAddressVO.class); IPAddressVO ipAddressVO = mock(IPAddressVO.class);
VMInstanceVO vmInstanceVO = mock(VMInstanceVO.class); VMInstanceVO vmInstanceVO = mock(VMInstanceVO.class);
TungstenAnswer assignFloatingIpAnswer = mock(TungstenAnswer.class); TungstenAnswer assignFloatingIpAnswer = MockTungstenAnswerFactory.get(false);
Nic nic = mock(Nic.class); Nic nic = mock(Nic.class);
Network publicNetwork = mock(Network.class); Network publicNetwork = mock(Network.class);
List<StaticNatImpl> staticNatList = List.of(staticNat); List<StaticNatImpl> staticNatList = List.of(staticNat);
when(staticNat.isForRevoke()).thenReturn(false); when(staticNat.isForRevoke()).thenReturn(false);
when(assignFloatingIpAnswer.getResult()).thenReturn(false);
when(ipAddressDao.findByIdIncludingRemoved(anyLong())).thenReturn(ipAddressVO); when(ipAddressDao.findByIdIncludingRemoved(anyLong())).thenReturn(ipAddressVO);
when(vmInstanceDao.findByIdIncludingRemoved(anyLong())).thenReturn(vmInstanceVO); when(vmInstanceDao.findByIdIncludingRemoved(anyLong())).thenReturn(vmInstanceVO);
when(networkModel.getNicInNetworkIncludingRemoved(anyLong(), anyLong())).thenReturn(nic); when(networkModel.getNicInNetworkIncludingRemoved(anyLong(), anyLong())).thenReturn(nic);
@ -300,13 +298,12 @@ public class TungstenElementTest {
StaticNatImpl staticNat = mock(StaticNatImpl.class); StaticNatImpl staticNat = mock(StaticNatImpl.class);
IPAddressVO ipAddressVO = mock(IPAddressVO.class); IPAddressVO ipAddressVO = mock(IPAddressVO.class);
VMInstanceVO vmInstanceVO = mock(VMInstanceVO.class); VMInstanceVO vmInstanceVO = mock(VMInstanceVO.class);
TungstenAnswer releaseFloatingIpAnswer = mock(TungstenAnswer.class); TungstenAnswer releaseFloatingIpAnswer = MockTungstenAnswerFactory.get(true);
Nic nic = mock(Nic.class); Nic nic = mock(Nic.class);
Network publicNetwork = mock(Network.class); Network publicNetwork = mock(Network.class);
List<StaticNatImpl> staticNatList = List.of(staticNat); List<StaticNatImpl> staticNatList = List.of(staticNat);
when(staticNat.isForRevoke()).thenReturn(true); when(staticNat.isForRevoke()).thenReturn(true);
when(releaseFloatingIpAnswer.getResult()).thenReturn(true);
when(ipAddressDao.findByIdIncludingRemoved(anyLong())).thenReturn(ipAddressVO); when(ipAddressDao.findByIdIncludingRemoved(anyLong())).thenReturn(ipAddressVO);
when(vmInstanceDao.findByIdIncludingRemoved(anyLong())).thenReturn(vmInstanceVO); when(vmInstanceDao.findByIdIncludingRemoved(anyLong())).thenReturn(vmInstanceVO);
when(networkModel.getNicInNetworkIncludingRemoved(anyLong(), anyLong())).thenReturn(nic); when(networkModel.getNicInNetworkIncludingRemoved(anyLong(), anyLong())).thenReturn(nic);
@ -322,13 +319,12 @@ public class TungstenElementTest {
StaticNatImpl staticNat = mock(StaticNatImpl.class); StaticNatImpl staticNat = mock(StaticNatImpl.class);
IPAddressVO ipAddressVO = mock(IPAddressVO.class); IPAddressVO ipAddressVO = mock(IPAddressVO.class);
VMInstanceVO vmInstanceVO = mock(VMInstanceVO.class); VMInstanceVO vmInstanceVO = mock(VMInstanceVO.class);
TungstenAnswer releaseFloatingIpAnswer = mock(TungstenAnswer.class); TungstenAnswer releaseFloatingIpAnswer = MockTungstenAnswerFactory.get(false);
Nic nic = mock(Nic.class); Nic nic = mock(Nic.class);
Network publicNetwork = mock(Network.class); Network publicNetwork = mock(Network.class);
List<StaticNatImpl> staticNatList = List.of(staticNat); List<StaticNatImpl> staticNatList = List.of(staticNat);
when(staticNat.isForRevoke()).thenReturn(true); when(staticNat.isForRevoke()).thenReturn(true);
when(releaseFloatingIpAnswer.getResult()).thenReturn(false);
when(ipAddressDao.findByIdIncludingRemoved(anyLong())).thenReturn(ipAddressVO); when(ipAddressDao.findByIdIncludingRemoved(anyLong())).thenReturn(ipAddressVO);
when(vmInstanceDao.findByIdIncludingRemoved(anyLong())).thenReturn(vmInstanceVO); when(vmInstanceDao.findByIdIncludingRemoved(anyLong())).thenReturn(vmInstanceVO);
when(networkModel.getNicInNetworkIncludingRemoved(anyLong(), anyLong())).thenReturn(nic); when(networkModel.getNicInNetworkIncludingRemoved(anyLong(), anyLong())).thenReturn(nic);
@ -355,11 +351,11 @@ public class TungstenElementTest {
TungstenFabricLBHealthMonitorVO tungstenFabricLBHealthMonitorVO = mock(TungstenFabricLBHealthMonitorVO.class); TungstenFabricLBHealthMonitorVO tungstenFabricLBHealthMonitorVO = mock(TungstenFabricLBHealthMonitorVO.class);
IPAddressVO ipAddressVO = mock(IPAddressVO.class); IPAddressVO ipAddressVO = mock(IPAddressVO.class);
TungstenGuestNetworkIpAddressVO tungstenGuestNetworkIpAddressVO = mock(TungstenGuestNetworkIpAddressVO.class); TungstenGuestNetworkIpAddressVO tungstenGuestNetworkIpAddressVO = mock(TungstenGuestNetworkIpAddressVO.class);
TungstenAnswer createTungstenNetworkLoadbalancerAnswer = mock(TungstenAnswer.class); TungstenAnswer createTungstenNetworkLoadbalancerAnswer = MockTungstenAnswerFactory.get(true);
TungstenAnswer updateTungstenLoadBalancerPoolAnswer = mock(TungstenAnswer.class); TungstenAnswer updateTungstenLoadBalancerPoolAnswer = MockTungstenAnswerFactory.get(true);
TungstenAnswer updateTungstenLoadBalancerMemberAnswer = mock(TungstenAnswer.class); TungstenAnswer updateTungstenLoadBalancerMemberAnswer = MockTungstenAnswerFactory.get(true);
TungstenAnswer updateTungstenLoadBalancerListenerAnswer = mock(TungstenAnswer.class); TungstenAnswer updateTungstenLoadBalancerListenerAnswer = MockTungstenAnswerFactory.get(true);
TungstenAnswer updateTungstenHealthMonitorAnswer = mock(TungstenAnswer.class); TungstenAnswer updateTungstenHealthMonitorAnswer = MockTungstenAnswerFactory.get(true);
LoadBalancingRule.LbSslCert lbSslCert = mock(LoadBalancingRule.LbSslCert.class); LoadBalancingRule.LbSslCert lbSslCert = mock(LoadBalancingRule.LbSslCert.class);
when(lbStickinessPolicy.getMethodName()).thenReturn("AppCookie"); when(lbStickinessPolicy.getMethodName()).thenReturn("AppCookie");
List<Pair<String, String>> pairList = List.of(new Pair<>("cookieName", "cookieValue")); List<Pair<String, String>> pairList = List.of(new Pair<>("cookieName", "cookieValue"));
@ -382,10 +378,6 @@ public class TungstenElementTest {
when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenNetworkLoadbalancerCommand.class), anyLong())).thenReturn(createTungstenNetworkLoadbalancerAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenNetworkLoadbalancerCommand.class), anyLong())).thenReturn(createTungstenNetworkLoadbalancerAnswer);
when(tungstenFabricUtils.sendTungstenCommand(any(UpdateTungstenLoadBalancerPoolCommand.class), anyLong())).thenReturn(updateTungstenLoadBalancerPoolAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(UpdateTungstenLoadBalancerPoolCommand.class), anyLong())).thenReturn(updateTungstenLoadBalancerPoolAnswer);
when(tungstenFabricUtils.sendTungstenCommand(any(UpdateTungstenLoadBalancerMemberCommand.class), anyLong())).thenReturn(updateTungstenLoadBalancerMemberAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(UpdateTungstenLoadBalancerMemberCommand.class), anyLong())).thenReturn(updateTungstenLoadBalancerMemberAnswer);
when(createTungstenNetworkLoadbalancerAnswer.getResult()).thenReturn(true);
when(updateTungstenLoadBalancerPoolAnswer.getResult()).thenReturn(true);
when(updateTungstenLoadBalancerMemberAnswer.getResult()).thenReturn(true);
when(updateTungstenHealthMonitorAnswer.getResult()).thenReturn(true);
when(configDao.getValue(Config.NetworkLBHaproxyStatsVisbility.key())).thenReturn("enabled"); when(configDao.getValue(Config.NetworkLBHaproxyStatsVisbility.key())).thenReturn("enabled");
when(tungstenService.updateLoadBalancer(any(), any())).thenReturn(true); when(tungstenService.updateLoadBalancer(any(), any())).thenReturn(true);
when(EncryptionUtil.generateSignature(anyString(), anyString())).thenReturn("generatedString"); when(EncryptionUtil.generateSignature(anyString(), anyString())).thenReturn("generatedString");
@ -410,10 +402,10 @@ public class TungstenElementTest {
List<LoadBalancerVO> loadBalancerVOList = List.of(loadBalancerVO); List<LoadBalancerVO> loadBalancerVOList = List.of(loadBalancerVO);
IPAddressVO ipAddressVO = mock(IPAddressVO.class); IPAddressVO ipAddressVO = mock(IPAddressVO.class);
TungstenGuestNetworkIpAddressVO tungstenGuestNetworkIpAddressVO = mock(TungstenGuestNetworkIpAddressVO.class); TungstenGuestNetworkIpAddressVO tungstenGuestNetworkIpAddressVO = mock(TungstenGuestNetworkIpAddressVO.class);
TungstenAnswer createTungstenNetworkLoadbalancerAnswer = mock(TungstenAnswer.class); TungstenAnswer createTungstenNetworkLoadbalancerAnswer = MockTungstenAnswerFactory.get(true);
TungstenAnswer updateTungstenLoadBalancerPoolAnswer = mock(TungstenAnswer.class); TungstenAnswer updateTungstenLoadBalancerPoolAnswer = MockTungstenAnswerFactory.get(true);
TungstenAnswer updateTungstenLoadBalancerMemberAnswer = mock(TungstenAnswer.class); TungstenAnswer updateTungstenLoadBalancerMemberAnswer = MockTungstenAnswerFactory.get(true);
TungstenAnswer updateTungstenHealthMonitorAnswer = mock(TungstenAnswer.class); TungstenAnswer updateTungstenHealthMonitorAnswer = MockTungstenAnswerFactory.get(true);
List<Pair<String, String>> pairList = List.of(new Pair<>("cookieName", "cookieValue")); List<Pair<String, String>> pairList = List.of(new Pair<>("cookieName", "cookieValue"));
TungstenFabricLBHealthMonitorVO tungstenFabricLBHealthMonitorVO = mock(TungstenFabricLBHealthMonitorVO.class); TungstenFabricLBHealthMonitorVO tungstenFabricLBHealthMonitorVO = mock(TungstenFabricLBHealthMonitorVO.class);
@ -435,12 +427,8 @@ public class TungstenElementTest {
when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenNetworkLoadbalancerCommand.class), anyLong())).thenReturn(createTungstenNetworkLoadbalancerAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenNetworkLoadbalancerCommand.class), anyLong())).thenReturn(createTungstenNetworkLoadbalancerAnswer);
when(tungstenFabricUtils.sendTungstenCommand(any(UpdateTungstenLoadBalancerPoolCommand.class), anyLong())).thenReturn(updateTungstenLoadBalancerPoolAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(UpdateTungstenLoadBalancerPoolCommand.class), anyLong())).thenReturn(updateTungstenLoadBalancerPoolAnswer);
when(tungstenFabricUtils.sendTungstenCommand(any(UpdateTungstenLoadBalancerMemberCommand.class), anyLong())).thenReturn(updateTungstenLoadBalancerMemberAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(UpdateTungstenLoadBalancerMemberCommand.class), anyLong())).thenReturn(updateTungstenLoadBalancerMemberAnswer);
when(createTungstenNetworkLoadbalancerAnswer.getResult()).thenReturn(true);
when(updateTungstenLoadBalancerPoolAnswer.getResult()).thenReturn(true);
when(updateTungstenLoadBalancerMemberAnswer.getResult()).thenReturn(true);
when(configDao.getValue(Config.NetworkLBHaproxyStatsVisbility.key())).thenReturn("disabled"); when(configDao.getValue(Config.NetworkLBHaproxyStatsVisbility.key())).thenReturn("disabled");
when(tungstenFabricLBHealthMonitorDao.findByLbId(anyLong())).thenReturn(tungstenFabricLBHealthMonitorVO); when(tungstenFabricLBHealthMonitorDao.findByLbId(anyLong())).thenReturn(tungstenFabricLBHealthMonitorVO);
when(updateTungstenHealthMonitorAnswer.getResult()).thenReturn(true);
when(tungstenFabricUtils.sendTungstenCommand(any(UpdateTungstenLoadBalancerHealthMonitorCommand.class), anyLong())).thenReturn(updateTungstenHealthMonitorAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(UpdateTungstenLoadBalancerHealthMonitorCommand.class), anyLong())).thenReturn(updateTungstenHealthMonitorAnswer);
assertFalse(tungstenElement.applyLBRules(network, loadBalancingRuleList1)); assertFalse(tungstenElement.applyLBRules(network, loadBalancingRuleList1));
@ -457,8 +445,8 @@ public class TungstenElementTest {
List<LoadBalancingRule> loadBalancingRuleList1 = List.of(loadBalancingRule1); List<LoadBalancingRule> loadBalancingRuleList1 = List.of(loadBalancingRule1);
List<LoadBalancerVO> loadBalancerVOList1 = List.of(loadBalancerVO1); List<LoadBalancerVO> loadBalancerVOList1 = List.of(loadBalancerVO1);
TungstenGuestNetworkIpAddressVO tungstenGuestNetworkIpAddressVO = mock(TungstenGuestNetworkIpAddressVO.class); TungstenGuestNetworkIpAddressVO tungstenGuestNetworkIpAddressVO = mock(TungstenGuestNetworkIpAddressVO.class);
TungstenAnswer deleteTungstenLoadBalancerListenerAnswer = mock(TungstenAnswer.class); TungstenAnswer deleteTungstenLoadBalancerListenerAnswer = MockTungstenAnswerFactory.get(true);
TungstenAnswer deleteTungstenLoadBalancerCommand = mock(TungstenAnswer.class); TungstenAnswer deleteTungstenLoadBalancerCommand = MockTungstenAnswerFactory.get(true);
when(networkModel.getSystemNetworkByZoneAndTrafficType(anyLong(), any())).thenReturn(publicNetwork); when(networkModel.getSystemNetworkByZoneAndTrafficType(anyLong(), any())).thenReturn(publicNetwork);
when(loadBalancingRule1.getSourceIp()).thenReturn(ip1); when(loadBalancingRule1.getSourceIp()).thenReturn(ip1);
@ -467,7 +455,6 @@ public class TungstenElementTest {
when(ipAddressVO.getAddress()).thenReturn(ip1); when(ipAddressVO.getAddress()).thenReturn(ip1);
when(ip1.addr()).thenReturn("10.10.10.10"); when(ip1.addr()).thenReturn("10.10.10.10");
when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenLoadBalancerCommand.class), anyLong())).thenReturn(deleteTungstenLoadBalancerCommand); when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenLoadBalancerCommand.class), anyLong())).thenReturn(deleteTungstenLoadBalancerCommand);
when(deleteTungstenLoadBalancerCommand.getResult()).thenReturn(true);
when(lbDao.listByIpAddress(anyLong())).thenReturn(loadBalancerVOList1); when(lbDao.listByIpAddress(anyLong())).thenReturn(loadBalancerVOList1);
when(tungstenGuestNetworkIpAddressDao.findByNetworkIdAndPublicIp(anyLong(),anyString())).thenReturn(tungstenGuestNetworkIpAddressVO); when(tungstenGuestNetworkIpAddressDao.findByNetworkIdAndPublicIp(anyLong(),anyString())).thenReturn(tungstenGuestNetworkIpAddressVO);
when(tungstenGuestNetworkIpAddressDao.remove(anyLong())).thenReturn(false); when(tungstenGuestNetworkIpAddressDao.remove(anyLong())).thenReturn(false);
@ -485,8 +472,8 @@ public class TungstenElementTest {
LoadBalancerVO loadBalancerVO1 = mock(LoadBalancerVO.class); LoadBalancerVO loadBalancerVO1 = mock(LoadBalancerVO.class);
LoadBalancerVO loadBalancerVO2 = mock(LoadBalancerVO.class); LoadBalancerVO loadBalancerVO2 = mock(LoadBalancerVO.class);
TungstenGuestNetworkIpAddressVO tungstenGuestNetworkIpAddressVO = mock(TungstenGuestNetworkIpAddressVO.class); TungstenGuestNetworkIpAddressVO tungstenGuestNetworkIpAddressVO = mock(TungstenGuestNetworkIpAddressVO.class);
TungstenAnswer deleteTungstenLoadBalancerListenerAnswer = mock(TungstenAnswer.class); TungstenAnswer deleteTungstenLoadBalancerListenerAnswer = MockTungstenAnswerFactory.get(true);
TungstenAnswer deleteTungstenLoadBalancerCommand = mock(TungstenAnswer.class); TungstenAnswer deleteTungstenLoadBalancerCommand = MockTungstenAnswerFactory.get(true);
List<LoadBalancingRule> loadBalancingRuleList = List.of(loadBalancingRule); List<LoadBalancingRule> loadBalancingRuleList = List.of(loadBalancingRule);
List<LoadBalancerVO> loadBalancerVOList = Arrays.asList(loadBalancerVO1, loadBalancerVO2); List<LoadBalancerVO> loadBalancerVOList = Arrays.asList(loadBalancerVO1, loadBalancerVO2);
@ -496,7 +483,6 @@ public class TungstenElementTest {
when(ipAddressDao.findByIpAndDcId(anyLong(), anyString())).thenReturn(ipAddressVO); when(ipAddressDao.findByIpAndDcId(anyLong(), anyString())).thenReturn(ipAddressVO);
when(ip.addr()).thenReturn("10.10.10.10"); when(ip.addr()).thenReturn("10.10.10.10");
when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenLoadBalancerListenerCommand.class), anyLong())).thenReturn(deleteTungstenLoadBalancerListenerAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenLoadBalancerListenerCommand.class), anyLong())).thenReturn(deleteTungstenLoadBalancerListenerAnswer);
when(deleteTungstenLoadBalancerListenerAnswer.getResult()).thenReturn(true);
when(tungstenService.updateLoadBalancer(any(), any())).thenReturn(true); when(tungstenService.updateLoadBalancer(any(), any())).thenReturn(true);
when(lbDao.listByIpAddress(anyLong())).thenReturn(loadBalancerVOList); when(lbDao.listByIpAddress(anyLong())).thenReturn(loadBalancerVOList);
@ -511,7 +497,7 @@ public class TungstenElementTest {
IPAddressVO ipAddressVO = mock(IPAddressVO.class); IPAddressVO ipAddressVO = mock(IPAddressVO.class);
UserVm userVm = mock(UserVm.class); UserVm userVm = mock(UserVm.class);
Nic nic = mock(Nic.class); Nic nic = mock(Nic.class);
TungstenAnswer applyTungstenPortForwardingAnswer = mock(TungstenAnswer.class); TungstenAnswer applyTungstenPortForwardingAnswer = MockTungstenAnswerFactory.get(true);
List<PortForwardingRule> portForwardingRuleList = List.of(portForwardingRule); List<PortForwardingRule> portForwardingRuleList = List.of(portForwardingRule);
when(portForwardingRule.getState()).thenReturn(FirewallRule.State.Add); when(portForwardingRule.getState()).thenReturn(FirewallRule.State.Add);
@ -520,7 +506,6 @@ public class TungstenElementTest {
when(ApiDBUtils.findUserVmById(anyLong())).thenReturn(userVm); when(ApiDBUtils.findUserVmById(anyLong())).thenReturn(userVm);
when(networkModel.getNicInNetwork(anyLong(), anyLong())).thenReturn(nic); when(networkModel.getNicInNetwork(anyLong(), anyLong())).thenReturn(nic);
when(tungstenFabricUtils.sendTungstenCommand(any(ApplyTungstenPortForwardingCommand.class), anyLong())).thenReturn(applyTungstenPortForwardingAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(ApplyTungstenPortForwardingCommand.class), anyLong())).thenReturn(applyTungstenPortForwardingAnswer);
when(applyTungstenPortForwardingAnswer.getResult()).thenReturn(true);
assertTrue(tungstenElement.applyPFRules(network, portForwardingRuleList)); assertTrue(tungstenElement.applyPFRules(network, portForwardingRuleList));
} }
@ -533,7 +518,7 @@ public class TungstenElementTest {
IPAddressVO ipAddressVO = mock(IPAddressVO.class); IPAddressVO ipAddressVO = mock(IPAddressVO.class);
UserVm userVm = mock(UserVm.class); UserVm userVm = mock(UserVm.class);
Nic nic = mock(Nic.class); Nic nic = mock(Nic.class);
TungstenAnswer applyTungstenPortForwardingAnswer = mock(TungstenAnswer.class); TungstenAnswer applyTungstenPortForwardingAnswer = MockTungstenAnswerFactory.get(false);
List<PortForwardingRule> portForwardingRuleList = List.of(portForwardingRule); List<PortForwardingRule> portForwardingRuleList = List.of(portForwardingRule);
when(portForwardingRule.getState()).thenReturn(FirewallRule.State.Add); when(portForwardingRule.getState()).thenReturn(FirewallRule.State.Add);
@ -542,7 +527,6 @@ public class TungstenElementTest {
when(ApiDBUtils.findUserVmById(anyLong())).thenReturn(userVm); when(ApiDBUtils.findUserVmById(anyLong())).thenReturn(userVm);
when(networkModel.getNicInNetwork(anyLong(), anyLong())).thenReturn(nic); when(networkModel.getNicInNetwork(anyLong(), anyLong())).thenReturn(nic);
when(tungstenFabricUtils.sendTungstenCommand(any(ApplyTungstenPortForwardingCommand.class), anyLong())).thenReturn(applyTungstenPortForwardingAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(ApplyTungstenPortForwardingCommand.class), anyLong())).thenReturn(applyTungstenPortForwardingAnswer);
when(applyTungstenPortForwardingAnswer.getResult()).thenReturn(false);
assertFalse(tungstenElement.applyPFRules(network, portForwardingRuleList)); assertFalse(tungstenElement.applyPFRules(network, portForwardingRuleList));
} }
@ -555,7 +539,7 @@ public class TungstenElementTest {
IPAddressVO ipAddressVO = mock(IPAddressVO.class); IPAddressVO ipAddressVO = mock(IPAddressVO.class);
UserVm userVm = mock(UserVm.class); UserVm userVm = mock(UserVm.class);
Nic nic = mock(Nic.class); Nic nic = mock(Nic.class);
TungstenAnswer applyTungstenPortForwardingAnswer = mock(TungstenAnswer.class); TungstenAnswer applyTungstenPortForwardingAnswer = MockTungstenAnswerFactory.get(true);
List<PortForwardingRule> portForwardingRuleList = List.of(portForwardingRule); List<PortForwardingRule> portForwardingRuleList = List.of(portForwardingRule);
when(portForwardingRule.getState()).thenReturn(FirewallRule.State.Revoke); when(portForwardingRule.getState()).thenReturn(FirewallRule.State.Revoke);
@ -564,7 +548,6 @@ public class TungstenElementTest {
when(ApiDBUtils.findUserVmById(anyLong())).thenReturn(userVm); when(ApiDBUtils.findUserVmById(anyLong())).thenReturn(userVm);
when(networkModel.getNicInNetwork(anyLong(), anyLong())).thenReturn(nic); when(networkModel.getNicInNetwork(anyLong(), anyLong())).thenReturn(nic);
when(tungstenFabricUtils.sendTungstenCommand(any(ApplyTungstenPortForwardingCommand.class), anyLong())).thenReturn(applyTungstenPortForwardingAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(ApplyTungstenPortForwardingCommand.class), anyLong())).thenReturn(applyTungstenPortForwardingAnswer);
when(applyTungstenPortForwardingAnswer.getResult()).thenReturn(true);
assertTrue(tungstenElement.applyPFRules(network, portForwardingRuleList)); assertTrue(tungstenElement.applyPFRules(network, portForwardingRuleList));
} }
@ -577,7 +560,7 @@ public class TungstenElementTest {
IPAddressVO ipAddressVO = mock(IPAddressVO.class); IPAddressVO ipAddressVO = mock(IPAddressVO.class);
UserVm userVm = mock(UserVm.class); UserVm userVm = mock(UserVm.class);
Nic nic = mock(Nic.class); Nic nic = mock(Nic.class);
TungstenAnswer applyTungstenPortForwardingAnswer = mock(TungstenAnswer.class); TungstenAnswer applyTungstenPortForwardingAnswer = MockTungstenAnswerFactory.get(false);
List<PortForwardingRule> portForwardingRuleList = List.of(portForwardingRule); List<PortForwardingRule> portForwardingRuleList = List.of(portForwardingRule);
when(portForwardingRule.getState()).thenReturn(FirewallRule.State.Revoke); when(portForwardingRule.getState()).thenReturn(FirewallRule.State.Revoke);
@ -586,7 +569,6 @@ public class TungstenElementTest {
when(ApiDBUtils.findUserVmById(anyLong())).thenReturn(userVm); when(ApiDBUtils.findUserVmById(anyLong())).thenReturn(userVm);
when(networkModel.getNicInNetwork(anyLong(), anyLong())).thenReturn(nic); when(networkModel.getNicInNetwork(anyLong(), anyLong())).thenReturn(nic);
when(tungstenFabricUtils.sendTungstenCommand(any(ApplyTungstenPortForwardingCommand.class), anyLong())).thenReturn(applyTungstenPortForwardingAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(ApplyTungstenPortForwardingCommand.class), anyLong())).thenReturn(applyTungstenPortForwardingAnswer);
when(applyTungstenPortForwardingAnswer.getResult()).thenReturn(false);
assertFalse(tungstenElement.applyPFRules(network, portForwardingRuleList)); assertFalse(tungstenElement.applyPFRules(network, portForwardingRuleList));
} }
@ -600,9 +582,9 @@ public class TungstenElementTest {
ReservationContext reservationContext = mock(ReservationContext.class); ReservationContext reservationContext = mock(ReservationContext.class);
VMInstanceVO vmInstanceVO = mock(VMInstanceVO.class); VMInstanceVO vmInstanceVO = mock(VMInstanceVO.class);
HostVO host = mock(HostVO.class); HostVO host = mock(HostVO.class);
TungstenAnswer createTungstenVMAnswer = mock(TungstenAnswer.class); TungstenAnswer createTungstenVMAnswer = MockTungstenAnswerFactory.get(true);
IPAddressVO ipAddressVO = mock(IPAddressVO.class); IPAddressVO ipAddressVO = mock(IPAddressVO.class);
TungstenAnswer createTungstenNetworkPolicyAnswer = mock(TungstenAnswer.class); TungstenAnswer createTungstenNetworkPolicyAnswer = MockTungstenAnswerFactory.get(true);
nicProfile.setIPv4Address("192.168.100.100"); nicProfile.setIPv4Address("192.168.100.100");
when(network.getTrafficType()).thenReturn(Networks.TrafficType.Public); when(network.getTrafficType()).thenReturn(Networks.TrafficType.Public);
@ -612,8 +594,6 @@ public class TungstenElementTest {
when(ipAddressDao.findByIpAndDcId(anyLong(), anyString())).thenReturn(ipAddressVO); when(ipAddressDao.findByIpAndDcId(anyLong(), anyString())).thenReturn(ipAddressVO);
when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(createTungstenNetworkPolicyAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(createTungstenNetworkPolicyAnswer);
when(virtualMachineProfile.getType()).thenReturn(VirtualMachine.Type.ConsoleProxy); when(virtualMachineProfile.getType()).thenReturn(VirtualMachine.Type.ConsoleProxy);
when(createTungstenVMAnswer.getResult()).thenReturn(true);
when(createTungstenNetworkPolicyAnswer.getResult()).thenReturn(true);
assertTrue(tungstenElement.prepare(network, nicProfile, virtualMachineProfile, deployDestination, reservationContext)); assertTrue(tungstenElement.prepare(network, nicProfile, virtualMachineProfile, deployDestination, reservationContext));
assertEquals(Nic.ReservationStrategy.Create, nicProfile.getReservationStrategy()); assertEquals(Nic.ReservationStrategy.Create, nicProfile.getReservationStrategy());
@ -631,7 +611,7 @@ public class TungstenElementTest {
ReservationContext reservationContext = mock(ReservationContext.class); ReservationContext reservationContext = mock(ReservationContext.class);
VMInstanceVO vmInstanceVO = mock(VMInstanceVO.class); VMInstanceVO vmInstanceVO = mock(VMInstanceVO.class);
HostVO host = mock(HostVO.class); HostVO host = mock(HostVO.class);
TungstenAnswer createTungstenVMAnswer = mock(TungstenAnswer.class); TungstenAnswer createTungstenVMAnswer = MockTungstenAnswerFactory.get(true);
nicProfile.setIPv4Address("192.168.100.100"); nicProfile.setIPv4Address("192.168.100.100");
when(network.getTrafficType()).thenReturn(Networks.TrafficType.Management); when(network.getTrafficType()).thenReturn(Networks.TrafficType.Management);
@ -639,7 +619,6 @@ public class TungstenElementTest {
when(hostDao.findById(anyLong())).thenReturn(host); when(hostDao.findById(anyLong())).thenReturn(host);
when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenVirtualMachineCommand.class), anyLong())).thenReturn(createTungstenVMAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenVirtualMachineCommand.class), anyLong())).thenReturn(createTungstenVMAnswer);
when(virtualMachineProfile.getType()).thenReturn(VirtualMachine.Type.SecondaryStorageVm); when(virtualMachineProfile.getType()).thenReturn(VirtualMachine.Type.SecondaryStorageVm);
when(createTungstenVMAnswer.getResult()).thenReturn(true);
assertTrue(tungstenElement.prepare(network, nicProfile, virtualMachineProfile, deployDestination, reservationContext)); assertTrue(tungstenElement.prepare(network, nicProfile, virtualMachineProfile, deployDestination, reservationContext));
assertEquals(Nic.ReservationStrategy.Create, nicProfile.getReservationStrategy()); assertEquals(Nic.ReservationStrategy.Create, nicProfile.getReservationStrategy());
@ -749,14 +728,12 @@ public class TungstenElementTest {
Network network = mock(Network.class); Network network = mock(Network.class);
ReservationContext reservationContext = mock(ReservationContext.class); ReservationContext reservationContext = mock(ReservationContext.class);
List<IPAddressVO> ipAddressVOList = Arrays.asList(ipAddressVO1, ipAddressVO2); List<IPAddressVO> ipAddressVOList = Arrays.asList(ipAddressVO1, ipAddressVO2);
TungstenAnswer tungstenDeleteFIPAnswer = mock(TungstenAnswer.class); TungstenAnswer tungstenDeleteFIPAnswer = MockTungstenAnswerFactory.get(true);
TungstenAnswer tungstenDeleteNPAnswer = mock(TungstenAnswer.class); TungstenAnswer tungstenDeleteNPAnswer = MockTungstenAnswerFactory.get(true);
when(ipAddressDao.listByAssociatedNetwork(anyLong(), anyBoolean())).thenReturn(ipAddressVOList); when(ipAddressDao.listByAssociatedNetwork(anyLong(), anyBoolean())).thenReturn(ipAddressVOList);
when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenFloatingIpCommand.class), anyLong())).thenReturn(tungstenDeleteFIPAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenFloatingIpCommand.class), anyLong())).thenReturn(tungstenDeleteFIPAnswer);
when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(tungstenDeleteNPAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(DeleteTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(tungstenDeleteNPAnswer);
when(tungstenDeleteFIPAnswer.getResult()).thenReturn(true);
when(tungstenDeleteNPAnswer.getResult()).thenReturn(true);
assertTrue(tungstenElement.destroy(network, reservationContext)); assertTrue(tungstenElement.destroy(network, reservationContext));
} }
@ -898,8 +875,8 @@ public class TungstenElementTest {
Network network = mock(Network.class); Network network = mock(Network.class);
FirewallRuleVO firewallRuleVO = mock(FirewallRuleVO.class); FirewallRuleVO firewallRuleVO = mock(FirewallRuleVO.class);
Network publicNetwork = mock(Network.class); Network publicNetwork = mock(Network.class);
TungstenAnswer createNetworkPolicyAnswer = mock(TungstenAnswer.class); TungstenAnswer createNetworkPolicyAnswer = MockTungstenAnswerFactory.get(true);
TungstenAnswer applyNetworkPolicyAnswer = mock(TungstenAnswer.class); TungstenAnswer applyNetworkPolicyAnswer = MockTungstenAnswerFactory.get(true);
when(firewallRuleVO.getState()).thenReturn(FirewallRule.State.Add); when(firewallRuleVO.getState()).thenReturn(FirewallRule.State.Add);
when(firewallRuleVO.getSourceCidrList()).thenReturn(List.of("192.168.100.0/24")); when(firewallRuleVO.getSourceCidrList()).thenReturn(List.of("192.168.100.0/24"));
@ -909,8 +886,6 @@ public class TungstenElementTest {
when(firewallRuleVO.getTrafficType()).thenReturn(FirewallRule.TrafficType.Egress); when(firewallRuleVO.getTrafficType()).thenReturn(FirewallRule.TrafficType.Egress);
when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(createNetworkPolicyAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(createNetworkPolicyAnswer);
when(tungstenFabricUtils.sendTungstenCommand(any(ApplyTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(applyNetworkPolicyAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(ApplyTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(applyNetworkPolicyAnswer);
when(createNetworkPolicyAnswer.getResult()).thenReturn(true);
when(applyNetworkPolicyAnswer.getResult()).thenReturn(true);
assertTrue(tungstenElement.applyFWRules(network, List.of(firewallRuleVO))); assertTrue(tungstenElement.applyFWRules(network, List.of(firewallRuleVO)));
} }
@ -920,8 +895,8 @@ public class TungstenElementTest {
Network network = mock(Network.class); Network network = mock(Network.class);
FirewallRuleVO firewallRuleVO = mock(FirewallRuleVO.class); FirewallRuleVO firewallRuleVO = mock(FirewallRuleVO.class);
Network publicNetwork = mock(Network.class); Network publicNetwork = mock(Network.class);
TungstenAnswer createNetworkPolicyAnswer = mock(TungstenAnswer.class); TungstenAnswer createNetworkPolicyAnswer = MockTungstenAnswerFactory.get(true);
TungstenAnswer applyNetworkPolicyAnswer = mock(TungstenAnswer.class); TungstenAnswer applyNetworkPolicyAnswer = MockTungstenAnswerFactory.get(true);
IPAddressVO ipAddressVO = mock(IPAddressVO.class); IPAddressVO ipAddressVO = mock(IPAddressVO.class);
Ip ip = mock(Ip.class); Ip ip = mock(Ip.class);
@ -935,8 +910,6 @@ public class TungstenElementTest {
when(firewallRuleVO.getTrafficType()).thenReturn(FirewallRule.TrafficType.Ingress); when(firewallRuleVO.getTrafficType()).thenReturn(FirewallRule.TrafficType.Ingress);
when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(createNetworkPolicyAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(createNetworkPolicyAnswer);
when(tungstenFabricUtils.sendTungstenCommand(any(ApplyTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(applyNetworkPolicyAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(ApplyTungstenNetworkPolicyCommand.class), anyLong())).thenReturn(applyNetworkPolicyAnswer);
when(createNetworkPolicyAnswer.getResult()).thenReturn(true);
when(applyNetworkPolicyAnswer.getResult()).thenReturn(true);
assertTrue(tungstenElement.applyFWRules(network, List.of(firewallRuleVO))); assertTrue(tungstenElement.applyFWRules(network, List.of(firewallRuleVO)));
} }
@ -992,14 +965,13 @@ public class TungstenElementTest {
ReservationContext context = mock(ReservationContext.class); ReservationContext context = mock(ReservationContext.class);
VMInstanceVO vmInstanceVO = mock(VMInstanceVO.class); VMInstanceVO vmInstanceVO = mock(VMInstanceVO.class);
HostVO hostVO = mock(HostVO.class); HostVO hostVO = mock(HostVO.class);
TungstenAnswer tungstenAnswer = mock(TungstenAnswer.class); TungstenAnswer tungstenAnswer = MockTungstenAnswerFactory.get(true);
when(vm.getType()).thenReturn(VirtualMachine.Type.ConsoleProxy); when(vm.getType()).thenReturn(VirtualMachine.Type.ConsoleProxy);
when(network.getTrafficType()).thenReturn(Networks.TrafficType.Public); when(network.getTrafficType()).thenReturn(Networks.TrafficType.Public);
when(vmInstanceDao.findById(anyLong())).thenReturn(vmInstanceVO); when(vmInstanceDao.findById(anyLong())).thenReturn(vmInstanceVO);
when(hostDao.findById(anyLong())).thenReturn(hostVO); when(hostDao.findById(anyLong())).thenReturn(hostVO);
when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenVirtualMachineCommand.class), anyLong())).thenReturn(tungstenAnswer); when(tungstenFabricUtils.sendTungstenCommand(any(CreateTungstenVirtualMachineCommand.class), anyLong())).thenReturn(tungstenAnswer);
when(tungstenAnswer.getResult()).thenReturn(true);
assertTrue(tungstenElement.prepareMigration(nic, network, vm, dest, context)); assertTrue(tungstenElement.prepareMigration(nic, network, vm, dest, context));
} }

View File

@ -63,12 +63,11 @@ public class TungstenFabricUtilsTest {
@Test @Test
public void sendTungstenCommandSuccessTest() { public void sendTungstenCommandSuccessTest() {
TungstenProviderVO tungstenProviderVO = mock(TungstenProviderVO.class); TungstenProviderVO tungstenProviderVO = mock(TungstenProviderVO.class);
TungstenAnswer tungstenAnswer = mock(TungstenAnswer.class); TungstenAnswer tungstenAnswer = MockTungstenAnswerFactory.get(true);
TungstenCommand tungstenCommand = mock(TungstenCommand.class); TungstenCommand tungstenCommand = mock(TungstenCommand.class);
when(tungstenProviderDao.findByZoneId(anyLong())).thenReturn(tungstenProviderVO); when(tungstenProviderDao.findByZoneId(anyLong())).thenReturn(tungstenProviderVO);
when(agentMgr.easySend(anyLong(), any(TungstenCommand.class))).thenReturn(tungstenAnswer); when(agentMgr.easySend(anyLong(), any(TungstenCommand.class))).thenReturn(tungstenAnswer);
when(tungstenAnswer.getResult()).thenReturn(true);
assertEquals(tungstenAnswer, tungstenFabricUtils.sendTungstenCommand(tungstenCommand, anyLong())); assertEquals(tungstenAnswer, tungstenFabricUtils.sendTungstenCommand(tungstenCommand, anyLong()));
} }
@ -93,12 +92,11 @@ public class TungstenFabricUtilsTest {
@Test(expected = InvalidParameterValueException.class) @Test(expected = InvalidParameterValueException.class)
public void sendTungstenCommandWithFalseAnswer() { public void sendTungstenCommandWithFalseAnswer() {
TungstenProviderVO tungstenProviderVO = mock(TungstenProviderVO.class); TungstenProviderVO tungstenProviderVO = mock(TungstenProviderVO.class);
TungstenAnswer tungstenAnswer = mock(TungstenAnswer.class); TungstenAnswer tungstenAnswer = MockTungstenAnswerFactory.get(false);
TungstenCommand tungstenCommand = mock(TungstenCommand.class); TungstenCommand tungstenCommand = mock(TungstenCommand.class);
when(tungstenProviderDao.findByZoneId(anyLong())).thenReturn(tungstenProviderVO); when(tungstenProviderDao.findByZoneId(anyLong())).thenReturn(tungstenProviderVO);
when(agentMgr.easySend(anyLong(), any(TungstenCommand.class))).thenReturn(tungstenAnswer); when(agentMgr.easySend(anyLong(), any(TungstenCommand.class))).thenReturn(tungstenAnswer);
when(tungstenAnswer.getResult()).thenReturn(false);
tungstenFabricUtils.sendTungstenCommand(tungstenCommand, anyLong()); tungstenFabricUtils.sendTungstenCommand(tungstenCommand, anyLong());
} }