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