This is an automated email from the ASF dual-hosted git repository. weizhou pushed a commit to branch 4.18-vm-autoscaling in repository https://gitbox.apache.org/repos/asf/cloudstack.git
commit 242398df17878a370785e768512202c6ee498533 Author: Wei Zhou <[email protected]> AuthorDate: Tue Nov 8 10:42:58 2022 +0100 AS: fix code smell and add unit test AutoScaleVmProfileVOTest --- .../com/cloud/network/as/AutoScaleVmProfileVO.java | 4 ++ .../cloud/network/as/AutoScaleVmProfileVOTest.java | 65 ++++++++++++++++++++++ .../as/dao/AutoScaleVmGroupVmMapDaoImplTest.java | 14 +++++ .../com/cloud/network/as/AutoScaleManagerImpl.java | 8 --- .../cloud/network/as/AutoScaleManagerImplTest.java | 7 +++ 5 files changed, 90 insertions(+), 8 deletions(-) diff --git a/engine/schema/src/main/java/com/cloud/network/as/AutoScaleVmProfileVO.java b/engine/schema/src/main/java/com/cloud/network/as/AutoScaleVmProfileVO.java index 7893e271bf7..0a0ba1e62aa 100644 --- a/engine/schema/src/main/java/com/cloud/network/as/AutoScaleVmProfileVO.java +++ b/engine/schema/src/main/java/com/cloud/network/as/AutoScaleVmProfileVO.java @@ -186,6 +186,10 @@ public class AutoScaleVmProfileVO implements AutoScaleVmProfile, Identity, Inter return paramsList; } + public String getCounterParamsString() { + return this.counterParams; + } + public void setCounterParams(String counterParam) { this.counterParams = counterParam; } diff --git a/engine/schema/src/test/java/com/cloud/network/as/AutoScaleVmProfileVOTest.java b/engine/schema/src/test/java/com/cloud/network/as/AutoScaleVmProfileVOTest.java new file mode 100755 index 00000000000..ff922986f88 --- /dev/null +++ b/engine/schema/src/test/java/com/cloud/network/as/AutoScaleVmProfileVOTest.java @@ -0,0 +1,65 @@ +// 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 com.cloud.network.as; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.cloud.utils.Pair; +import org.junit.Assert; +import org.junit.Test; + +public class AutoScaleVmProfileVOTest { + + @Test + public void testCounterParamsForUpdate() { + AutoScaleVmProfileVO profile = new AutoScaleVmProfileVO(); + + Map<String, HashMap<String, String>> counterParamList = new HashMap<>(); + counterParamList.put("0", new HashMap<>() {{ put("name", "snmpcommunity"); put("value", "public"); }}); + counterParamList.put("1", new HashMap<>() {{ put("name", "snmpport"); put("value", "161"); }}); + + profile.setCounterParamsForUpdate(counterParamList); + Assert.assertEquals("snmpcommunity=public&snmpport=161", profile.getCounterParamsString()); + + List<Pair<String, String>> counterParams = profile.getCounterParams(); + Assert.assertEquals(2, counterParams.size()); + Assert.assertEquals("snmpcommunity", counterParams.get(0).first()); + Assert.assertEquals("public", counterParams.get(0).second()); + Assert.assertEquals("snmpport", counterParams.get(1).first()); + Assert.assertEquals("161", counterParams.get(1).second()); + } + + @Test + public void tstSetOtherDeployParamsForUpdate() { + AutoScaleVmProfileVO profile = new AutoScaleVmProfileVO(); + + Map<String, HashMap<String, String>> otherDeployParamsMap = new HashMap<>(); + otherDeployParamsMap.put("0", new HashMap<>() {{ put("name", "serviceofferingid"); put("value", "a7fb50f6-01d9-11ed-8bc1-77f8f0228926"); }}); + otherDeployParamsMap.put("1", new HashMap<>() {{ put("name", "rootdisksize"); put("value", "10"); }}); + + profile.setOtherDeployParamsForUpdate(otherDeployParamsMap); + + List<Pair<String, String>> otherDeployParamsList = profile.getOtherDeployParamsList(); + Assert.assertEquals(2, otherDeployParamsList.size()); + Assert.assertEquals("serviceofferingid", otherDeployParamsList.get(0).first()); + Assert.assertEquals("a7fb50f6-01d9-11ed-8bc1-77f8f0228926", otherDeployParamsList.get(0).second()); + Assert.assertEquals("rootdisksize", otherDeployParamsList.get(1).first()); + Assert.assertEquals("10", otherDeployParamsList.get(1).second()); + } +} \ No newline at end of file diff --git a/engine/schema/src/test/java/com/cloud/network/as/dao/AutoScaleVmGroupVmMapDaoImplTest.java b/engine/schema/src/test/java/com/cloud/network/as/dao/AutoScaleVmGroupVmMapDaoImplTest.java index add0a40c628..2dde1008e6b 100644 --- a/engine/schema/src/test/java/com/cloud/network/as/dao/AutoScaleVmGroupVmMapDaoImplTest.java +++ b/engine/schema/src/test/java/com/cloud/network/as/dao/AutoScaleVmGroupVmMapDaoImplTest.java @@ -83,6 +83,20 @@ public class AutoScaleVmGroupVmMapDaoImplTest { Mockito.verify(searchCriteriaCountAvailableVmsByGroup).setJoinParameters("vmSearch", "states", new Object[] {VirtualMachine.State.Starting, VirtualMachine.State.Running, VirtualMachine.State.Stopping, VirtualMachine.State.Migrating}); } + @Test + public void testCountByGroup() throws Exception { + Mockito.doNothing().when(searchCriteriaAutoScaleVmGroupVmMapVOMock).setParameters(Mockito.anyString(), Mockito.any()); + PowerMockito.doReturn(6).when(AutoScaleVmGroupVmMapDaoImplSpy, "getCountIncludingRemoved", Mockito.any(SearchCriteria.class)); + + long groupId = 4L; + + int result = AutoScaleVmGroupVmMapDaoImplSpy.countByGroup(groupId); + + Assert.assertEquals(6, result); + + Mockito.verify(searchCriteriaAutoScaleVmGroupVmMapVOMock).setParameters("vmGroupId", groupId); + } + @Test public void testListByGroup() throws Exception { Mockito.doNothing().when(searchCriteriaAutoScaleVmGroupVmMapVOMock).setParameters(Mockito.anyString(), Mockito.any()); diff --git a/server/src/main/java/com/cloud/network/as/AutoScaleManagerImpl.java b/server/src/main/java/com/cloud/network/as/AutoScaleManagerImpl.java index 0c2f52c6b45..477b16e5836 100644 --- a/server/src/main/java/com/cloud/network/as/AutoScaleManagerImpl.java +++ b/server/src/main/java/com/cloud/network/as/AutoScaleManagerImpl.java @@ -17,7 +17,6 @@ package com.cloud.network.as; import java.security.SecureRandom; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; @@ -1887,13 +1886,6 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScaleManage RandomStringUtils.random(6, 0, 0, true, false, (char[])null, new SecureRandom()).toLowerCase(); } - private String getCurrentTimeStampString() { - Date current = new Date(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); - - return sdf.format(current); - } - private boolean startNewVM(long vmId) { try { CallContext.current().setEventDetails("Vm Id: " + vmId); diff --git a/server/src/test/java/com/cloud/network/as/AutoScaleManagerImplTest.java b/server/src/test/java/com/cloud/network/as/AutoScaleManagerImplTest.java index 0761f7fed27..b494c02fe98 100644 --- a/server/src/test/java/com/cloud/network/as/AutoScaleManagerImplTest.java +++ b/server/src/test/java/com/cloud/network/as/AutoScaleManagerImplTest.java @@ -324,6 +324,7 @@ public class AutoScaleManagerImplTest { private static final Long scaleUpCounterId = 36L; private static final Long scaleDownConditionId = 37L; private static final Long scaleDownCounterId = 38L; + private static final Long nextVmSeq = 39L; @Mock DataCenterVO zoneMock; @@ -1142,6 +1143,7 @@ public class AutoScaleManagerImplTest { public void testCreateNewVM1() throws ResourceUnavailableException, InsufficientCapacityException, ResourceAllocationException { when(asVmGroupMock.getProfileId()).thenReturn(vmProfileId); when(asVmGroupMock.getLoadBalancerId()).thenReturn(loadBalancerId); + when(asVmGroupMock.getNextVmSeq()).thenReturn(nextVmSeq); when(autoScaleVmProfileDao.findById(vmProfileId)).thenReturn(asVmProfileMock); when(asVmProfileMock.getTemplateId()).thenReturn(templateId); @@ -1175,12 +1177,14 @@ public class AutoScaleManagerImplTest { Mockito.verify(userVmService).createBasicSecurityGroupVirtualMachine(any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), eq(true), any(), any(), any(), any(), any(), any(), any(), eq(true), any()); + Mockito.verify(asVmGroupMock).setNextVmSeq(nextVmSeq + 1); } @Test public void testCreateNewVM2() throws ResourceUnavailableException, InsufficientCapacityException, ResourceAllocationException { when(asVmGroupMock.getProfileId()).thenReturn(vmProfileId); when(asVmGroupMock.getLoadBalancerId()).thenReturn(loadBalancerId); + when(asVmGroupMock.getNextVmSeq()).thenReturn(nextVmSeq + 1); when(autoScaleVmProfileDao.findById(vmProfileId)).thenReturn(asVmProfileMock); when(asVmProfileMock.getTemplateId()).thenReturn(templateId); @@ -1215,12 +1219,14 @@ public class AutoScaleManagerImplTest { Mockito.verify(userVmService).createAdvancedSecurityGroupVirtualMachine(any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), eq(true), any(), any()); + Mockito.verify(asVmGroupMock).setNextVmSeq(nextVmSeq + 2); } @Test public void testCreateNewVM3() throws ResourceUnavailableException, InsufficientCapacityException, ResourceAllocationException { when(asVmGroupMock.getProfileId()).thenReturn(vmProfileId); when(asVmGroupMock.getLoadBalancerId()).thenReturn(loadBalancerId); + when(asVmGroupMock.getNextVmSeq()).thenReturn(nextVmSeq + 2); when(autoScaleVmProfileDao.findById(vmProfileId)).thenReturn(asVmProfileMock); when(asVmProfileMock.getTemplateId()).thenReturn(templateId); @@ -1255,6 +1261,7 @@ public class AutoScaleManagerImplTest { Mockito.verify(userVmService).createAdvancedVirtualMachine(any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), eq(true), any(), any(), any(), any(), any(), any(), any(), eq(true), any(), any()); + Mockito.verify(asVmGroupMock).setNextVmSeq(nextVmSeq + 3); } @Test
