Updated Branches:
  refs/heads/scaleupvm 81cccde79 -> c2ea13dbf

Added test cases for CitrixResourceBase


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/c2ea13db
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/c2ea13db
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/c2ea13db

Branch: refs/heads/scaleupvm
Commit: c2ea13dbfbd1daa622dcb466a11f0c08fac06b82
Parents: 81cccde
Author: Nitin Mehta <[email protected]>
Authored: Wed Mar 20 21:11:51 2013 +0530
Committer: Nitin Mehta <[email protected]>
Committed: Wed Mar 20 21:11:51 2013 +0530

----------------------------------------------------------------------
 .../xen/resource/CitrixResourceBaseTest.java       |  148 +++++++++++++++
 1 files changed, 148 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/c2ea13db/plugins/hypervisors/xen/test/com/cloud/hypervisor/xen/resource/CitrixResourceBaseTest.java
----------------------------------------------------------------------
diff --git 
a/plugins/hypervisors/xen/test/com/cloud/hypervisor/xen/resource/CitrixResourceBaseTest.java
 
b/plugins/hypervisors/xen/test/com/cloud/hypervisor/xen/resource/CitrixResourceBaseTest.java
new file mode 100644
index 0000000..7392cb1
--- /dev/null
+++ 
b/plugins/hypervisors/xen/test/com/cloud/hypervisor/xen/resource/CitrixResourceBaseTest.java
@@ -0,0 +1,148 @@
+/*
+ * 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.hypervisor.xen.resource;
+
+import org.junit.Test;
+import org.junit.Before;
+import org.mockito.Mock;
+import org.mockito.Spy;
+import org.mockito.MockitoAnnotations;
+import static org.mockito.Mockito.*;
+
+import com.cloud.hypervisor.xen.resource.CitrixResourceBase.XsHost;
+import com.cloud.agent.api.ScaleVmCommand;
+import com.cloud.agent.api.to.VirtualMachineTO;
+import com.cloud.agent.api.ScaleVmAnswer;
+import com.xensource.xenapi.*;
+import org.apache.xmlrpc.XmlRpcException;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.Iterator;
+
+
+
+
+public class CitrixResourceBaseTest {
+
+    @Spy CitrixResourceBase _resource = new CitrixResourceBase() {
+
+        @Override
+        public ScaleVmAnswer execute(ScaleVmCommand cmd) {
+            return super.execute(cmd);
+        }
+        public String callHostPlugin(Connection conn, String plugin, String 
cmd, String... params) {
+            return "Success";
+        }
+        @Override
+        protected void scaleVM(Connection conn, VM vm, VirtualMachineTO 
vmSpec, Host host) throws Types.XenAPIException, XmlRpcException {
+            _host.speed = 500;
+            super.scaleVM(conn, vm, vmSpec, host);
+        }
+
+
+    };
+    @Mock XsHost _host;
+    @Mock Host host;
+    @Mock ScaleVmCommand cmd;
+    @Mock VirtualMachineTO vmSpec;
+    @Mock Connection conn;
+    @Mock VM vm;
+
+    @Before
+    public void setup(){
+
+        MockitoAnnotations.initMocks(this);
+
+        doReturn(vmSpec).when(cmd).getVirtualMachine();
+        doReturn("i-2-3-VM").when(vmSpec).getName();
+
+    }
+
+
+    // Expecting XmlRpcException while trying to get the record of vm using 
connection
+    @Test(expected = XmlRpcException.class)
+    public void testScaleVMF1()  throws
+            Types.BadServerResponse,
+            Types.XenAPIException,
+            XmlRpcException {
+        doReturn(conn).when(_resource).getConnection();
+        Set<VM> vms = (Set<VM> )mock(Set.class);
+
+        Iterator iter =  mock(Iterator.class);
+        doReturn(iter).when(vms).iterator();
+        when(iter.hasNext()).thenReturn(true).thenReturn(false);
+        doReturn(vm).when(iter).next();
+        VM.Record vmr = mock(VM.Record.class);
+        when(vm.getRecord(conn)).thenThrow(new 
XmlRpcException("XmlRpcException"));
+        when(vm.getRecord(conn)).thenReturn(vmr);
+        vmr.powerState = Types.VmPowerState.RUNNING;
+        vmr.residentOn = mock(Host.class);
+        XenAPIObject object = mock(XenAPIObject.class);
+        doReturn(new String("OpaqueRef:NULL")).when(object).toWireString();
+        doNothing().when(_resource).scaleVM(conn, vm, vmSpec, host);
+
+        _resource.execute(cmd);
+        verify(iter, times(2)).hasNext();
+        verify(iter, times(2)).next();
+
+    }
+
+    // Test to scale vm "i-2-3-VM" cpu-cap disabled
+    @Test
+    public void testScaleVMF2() throws Types.XenAPIException, XmlRpcException {
+
+        doReturn(null).when(vm).setMemoryDynamicRangeAsync(conn, 536870912L, 
536870912L);
+        doReturn(1).when(vmSpec).getCpus();
+        doNothing().when(vm).setVCPUsNumberLive(conn, 1L);
+        doReturn(500).when(vmSpec).getSpeed();
+        doReturn(false).when(vmSpec).getLimitCpuUse();
+        Map<String, String> args = (Map<String, String>)mock(HashMap.class);
+        when(host.callPlugin(conn, "vmops", "add_to_VCPUs_params_live", 
args)).thenReturn("Success");
+        doReturn(null).when(_resource).callHostPlugin(conn, "vmops", 
"add_to_VCPUs_params_live", "key", "weight", "value", "253", "vmname", 
"i-2-3-VM");
+
+        _resource.scaleVM(conn, vm, vmSpec, host);
+
+        verify(vmSpec, times(1)).getLimitCpuUse();
+        verify(_resource, times(1)).callHostPlugin(conn, "vmops", 
"add_to_VCPUs_params_live", "key", "weight", "value", "253", "vmname", 
"i-2-3-VM");
+    }
+
+    // Test to scale vm "i-2-3-VM" cpu-cap enabled
+    @Test
+    public void testScaleVMF3() throws Types.XenAPIException, XmlRpcException {
+
+        doReturn(null).when(vm).setMemoryDynamicRangeAsync(conn, 536870912L, 
536870912L);
+        doReturn(1).when(vmSpec).getCpus();
+        doNothing().when(vm).setVCPUsNumberLive(conn, 1L);
+        doReturn(500).when(vmSpec).getSpeed();
+        doReturn(true).when(vmSpec).getLimitCpuUse();
+        doNothing().when(vm).addToVCPUsParamsLive(conn, "cap", "100");
+        Map<String, String> args = (Map<String, String>)mock(HashMap.class);
+        when(host.callPlugin(conn, "vmops", "add_to_VCPUs_params_live", 
args)).thenReturn("Success");
+        doReturn(null).when(_resource).callHostPlugin(conn, "vmops", 
"add_to_VCPUs_params_live", "key", "weight", "value", "253", "vmname", 
"i-2-3-VM");
+
+        _resource.scaleVM(conn, vm, vmSpec, host);
+
+        verify(vmSpec, times(1)).getLimitCpuUse();
+        verify(_resource, times(1)).callHostPlugin(conn, "vmops", 
"add_to_VCPUs_params_live", "key", "weight", "value", "253", "vmname", 
"i-2-3-VM");
+        verify(vm, times(1)).addToVCPUsParamsLive(conn, "cap", "100");
+    }
+}
\ No newline at end of file

Reply via email to