You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by we...@apache.org on 2022/11/08 09:45:08 UTC
[cloudstack] 01/03: AS: fix code smell and add unit test AutoScaleVmProfileVOTest
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 <we...@apache.org>
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