Return-Path: X-Original-To: apmail-cloudstack-commits-archive@www.apache.org Delivered-To: apmail-cloudstack-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 617901793F for ; Thu, 2 Apr 2015 18:22:48 +0000 (UTC) Received: (qmail 56832 invoked by uid 500); 2 Apr 2015 18:22:43 -0000 Delivered-To: apmail-cloudstack-commits-archive@cloudstack.apache.org Received: (qmail 56645 invoked by uid 500); 2 Apr 2015 18:22:43 -0000 Mailing-List: contact commits-help@cloudstack.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cloudstack.apache.org Delivered-To: mailing list commits@cloudstack.apache.org Received: (qmail 56615 invoked by uid 99); 2 Apr 2015 18:22:43 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 02 Apr 2015 18:22:43 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id CD129E2F54; Thu, 2 Apr 2015 18:22:42 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: bhaisaab@apache.org To: commits@cloudstack.apache.org Date: Thu, 02 Apr 2015 18:22:47 -0000 Message-Id: <179bb828ea6e4f13b2b27d004646a876@git.apache.org> In-Reply-To: <6a8fce03a2e842598ff8434e61a9df66@git.apache.org> References: <6a8fce03a2e842598ff8434e61a9df66@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [06/39] git commit: updated refs/heads/master to 3e28747 http://git-wip-us.apache.org/repos/asf/cloudstack/blob/30e72e4a/plugins/hypervisors/xenserver/src/org/apache/cloudstack/hypervisor/xenserver/XenServerResourceNewBase.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/xenserver/src/org/apache/cloudstack/hypervisor/xenserver/XenServerResourceNewBase.java b/plugins/hypervisors/xenserver/src/org/apache/cloudstack/hypervisor/xenserver/XenServerResourceNewBase.java index 161a7b2..4971eb3 100644 --- a/plugins/hypervisors/xenserver/src/org/apache/cloudstack/hypervisor/xenserver/XenServerResourceNewBase.java +++ b/plugins/hypervisors/xenserver/src/org/apache/cloudstack/hypervisor/xenserver/XenServerResourceNewBase.java @@ -25,6 +25,11 @@ import java.util.concurrent.TimeoutException; import org.apache.log4j.Logger; import org.apache.xmlrpc.XmlRpcException; +import com.cloud.agent.api.StartupCommand; +import com.cloud.hypervisor.xenserver.resource.XenServer620SP1Resource; +import com.cloud.utils.Pair; +import com.cloud.utils.exception.CloudRuntimeException; +import com.cloud.vm.VirtualMachine; import com.xensource.xenapi.Connection; import com.xensource.xenapi.Event; import com.xensource.xenapi.EventBatch; @@ -35,12 +40,6 @@ import com.xensource.xenapi.Types; import com.xensource.xenapi.Types.XenAPIException; import com.xensource.xenapi.VM; -import com.cloud.agent.api.StartupCommand; -import com.cloud.hypervisor.xenserver.resource.XenServer620SP1Resource; -import com.cloud.utils.Pair; -import com.cloud.utils.exception.CloudRuntimeException; -import com.cloud.vm.VirtualMachine; - /** * * XenServerResourceNewBase is an abstract base class that encapsulates how @@ -67,16 +66,16 @@ public class XenServerResourceNewBase extends XenServer620SP1Resource { @Override public StartupCommand[] initialize() throws IllegalArgumentException { - StartupCommand[] cmds = super.initialize(); + final StartupCommand[] cmds = super.initialize(); - Connection conn = getConnection(); + final Connection conn = getConnection(); Pool pool; try { - pool = Pool.getByUuid(conn, _host.pool); - Pool.Record poolr = pool.getRecord(conn); + pool = Pool.getByUuid(conn, _host.getPool()); + final Pool.Record poolr = pool.getRecord(conn); - Host.Record masterRecord = poolr.master.getRecord(conn); - if (_host.uuid.equals(masterRecord.uuid)) { + final Host.Record masterRecord = poolr.master.getRecord(conn); + if (_host.getUuid().equals(masterRecord.uuid)) { _listener = new VmEventListener(true); // @@ -87,36 +86,37 @@ public class XenServerResourceNewBase extends XenServer620SP1Resource { } else { _listener = new VmEventListener(false); } - } catch (XenAPIException e) { + } catch (final XenAPIException e) { throw new CloudRuntimeException("Unable to determine who is the master", e); - } catch (XmlRpcException e) { + } catch (final XmlRpcException e) { throw new CloudRuntimeException("Unable to determine who is the master", e); } return cmds; } - protected void waitForTask2(Connection c, Task task, long pollInterval, long timeout) throws XenAPIException, XmlRpcException, TimeoutException { - long beginTime = System.currentTimeMillis(); + protected void waitForTask2(final Connection c, final Task task, final long pollInterval, final long timeout) throws XenAPIException, XmlRpcException, TimeoutException { + final long beginTime = System.currentTimeMillis(); if (s_logger.isTraceEnabled()) { s_logger.trace("Task " + task.getNameLabel(c) + " (" + task.getType(c) + ") sent to " + c.getSessionReference() + " is pending completion with a " + timeout + - "ms timeout"); + "ms timeout"); } - Set classes = new HashSet(); + final Set classes = new HashSet(); classes.add("Task/" + task.toWireString()); String token = ""; - Double t = new Double(timeout / 1000); + final Double t = new Double(timeout / 1000); while (true) { - EventBatch map = Event.from(c, classes, token, t); + final EventBatch map = Event.from(c, classes, token, t); token = map.token; @SuppressWarnings("unchecked") + final Set events = map.events; if (events.size() == 0) { - String msg = "No event for task " + task.toWireString(); + final String msg = "No event for task " + task.toWireString(); s_logger.warn(msg); task.cancel(c); throw new TimeoutException(msg); } - for (Event.Record rec : events) { + for (final Event.Record rec : events) { if (!(rec.snapshot instanceof Task.Record)) { if (s_logger.isDebugEnabled()) { s_logger.debug("Skipping over " + rec); @@ -124,7 +124,7 @@ public class XenServerResourceNewBase extends XenServer620SP1Resource { continue; } - Task.Record taskRecord = (Task.Record)rec.snapshot; + final Task.Record taskRecord = (Task.Record)rec.snapshot; if (taskRecord.status != Types.TaskStatusType.PENDING) { if (s_logger.isDebugEnabled()) { @@ -139,7 +139,7 @@ public class XenServerResourceNewBase extends XenServer620SP1Resource { } } if (System.currentTimeMillis() - beginTime > timeout) { - String msg = "Async " + timeout / 1000 + " seconds timeout for task " + task.toString(); + final String msg = "Async " + timeout / 1000 + " seconds timeout for task " + task.toString(); s_logger.warn(msg); task.cancel(c); throw new TimeoutException(msg); @@ -155,7 +155,7 @@ public class XenServerResourceNewBase extends XenServer620SP1Resource { Set _classes; String _token = ""; - public VmEventListener(boolean isMaster) { + public VmEventListener(final boolean isMaster) { _isMaster = isMaster; _classes = new HashSet(); _classes.add("VM"); @@ -163,22 +163,23 @@ public class XenServerResourceNewBase extends XenServer620SP1Resource { @Override public void run() { - setName("XS-Listener-" + _host.ip); + setName("XS-Listener-" + _host.getIp()); while (!_stop) { try { - Connection conn = getConnection(); + final Connection conn = getConnection(); EventBatch results; try { results = Event.from(conn, _classes, _token, new Double(30)); - } catch (Exception e) { + } catch (final Exception e) { s_logger.error("Retrying the waiting on VM events due to: ", e); continue; } _token = results.token; @SuppressWarnings("unchecked") + final Set events = results.events; - for (Event.Record event : events) { + for (final Event.Record event : events) { try { if (!(event.snapshot instanceof VM.Record)) { if (s_logger.isDebugEnabled()) { @@ -186,24 +187,24 @@ public class XenServerResourceNewBase extends XenServer620SP1Resource { } continue; } - VM.Record vm = (VM.Record)event.snapshot; + final VM.Record vm = (VM.Record)event.snapshot; String hostUuid = null; if (vm.residentOn != null && !vm.residentOn.toWireString().contains("OpaqueRef:NULL")) { hostUuid = vm.residentOn.getUuid(conn); } recordChanges(conn, vm, hostUuid); - } catch (Exception e) { + } catch (final Exception e) { s_logger.error("Skipping over " + event, e); } } - } catch (Throwable th) { + } catch (final Throwable th) { s_logger.error("Exception caught in eventlistener thread: ", th); } } } - protected void recordChanges(Connection conn, VM.Record rec, String hostUuid) { + protected void recordChanges(final Connection conn, final VM.Record rec, final String hostUuid) { } @@ -211,16 +212,16 @@ public class XenServerResourceNewBase extends XenServer620SP1Resource { public void start() { if (_isMaster) { // Throw away the initial set of events because they're history - Connection conn = getConnection(); + final Connection conn = getConnection(); EventBatch results; try { results = Event.from(conn, _classes, _token, new Double(30)); - } catch (Exception e) { + } catch (final Exception e) { s_logger.error("Retrying the waiting on VM events due to: ", e); throw new CloudRuntimeException("Unable to start a listener thread to listen to VM events", e); } _token = results.token; - s_logger.debug("Starting the event listener thread for " + _host.uuid); + s_logger.debug("Starting the event listener thread for " + _host.getUuid()); super.start(); } } @@ -234,7 +235,7 @@ public class XenServerResourceNewBase extends XenServer620SP1Resource { if (_changes.size() == 0) { return null; } - HashMap> diff = _changes; + final HashMap> diff = _changes; _changes = new HashMap>(); return diff; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/30e72e4a/plugins/hypervisors/xenserver/test/com/cloud/hypervisor/xenserver/resource/CitrixResourceBaseTest.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/xenserver/test/com/cloud/hypervisor/xenserver/resource/CitrixResourceBaseTest.java b/plugins/hypervisors/xenserver/test/com/cloud/hypervisor/xenserver/resource/CitrixResourceBaseTest.java index 0c2944c..e79e8af 100644 --- a/plugins/hypervisors/xenserver/test/com/cloud/hypervisor/xenserver/resource/CitrixResourceBaseTest.java +++ b/plugins/hypervisors/xenserver/test/com/cloud/hypervisor/xenserver/resource/CitrixResourceBaseTest.java @@ -39,6 +39,10 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.Spy; +import com.cloud.agent.api.ScaleVmAnswer; +import com.cloud.agent.api.ScaleVmCommand; +import com.cloud.agent.api.to.IpAddressTO; +import com.cloud.agent.api.to.VirtualMachineTO; import com.xensource.xenapi.Connection; import com.xensource.xenapi.Host; import com.xensource.xenapi.Types; @@ -46,35 +50,29 @@ import com.xensource.xenapi.VIF; import com.xensource.xenapi.VM; import com.xensource.xenapi.XenAPIObject; -import com.cloud.agent.api.ScaleVmAnswer; -import com.cloud.agent.api.ScaleVmCommand; -import com.cloud.agent.api.to.IpAddressTO; -import com.cloud.agent.api.to.VirtualMachineTO; -import com.cloud.hypervisor.xenserver.resource.CitrixResourceBase.XsHost; - public class CitrixResourceBaseTest { @Spy CitrixResourceBase _resource = new CitrixResourceBase() { @Override - public ScaleVmAnswer execute(ScaleVmCommand cmd) { + public ScaleVmAnswer execute(final ScaleVmCommand cmd) { return super.execute(cmd); } @Override - public String callHostPlugin(Connection conn, String plugin, String cmd, String... params) { + public String callHostPlugin(final Connection conn, final String plugin, final String cmd, final String... params) { return "Success"; } @Override - protected void scaleVM(Connection conn, VM vm, VirtualMachineTO vmSpec, Host host) throws Types.XenAPIException, XmlRpcException { - _host.speed = 500; + protected void scaleVM(final Connection conn, final VM vm, final VirtualMachineTO vmSpec, final Host host) throws Types.XenAPIException, XmlRpcException { + _host.setSpeed(500); super.scaleVM(conn, vm, vmSpec, host); } @Override - protected boolean isDmcEnabled(Connection conn, Host host) throws Types.XenAPIException, XmlRpcException { + protected boolean isDmcEnabled(final Connection conn, final Host host) throws Types.XenAPIException, XmlRpcException { return true; } }; @@ -105,18 +103,18 @@ public class CitrixResourceBaseTest { @Test(expected = XmlRpcException.class) public void testScaleVMF1() throws Types.BadServerResponse, Types.XenAPIException, XmlRpcException { doReturn(conn).when(_resource).getConnection(); - Set vms = mock(Set.class); + final Set vms = mock(Set.class); - Iterator iter = mock(Iterator.class); + final 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); + final 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); + final XenAPIObject object = mock(XenAPIObject.class); doReturn(new String("OpaqueRef:NULL")).when(object).toWireString(); doNothing().when(_resource).scaleVM(conn, vm, vmSpec, host); @@ -139,7 +137,7 @@ public class CitrixResourceBaseTest { doNothing().when(vm).setVCPUsNumberLive(conn, 1L); doReturn(500).when(vmSpec).getMinSpeed(); doReturn(false).when(vmSpec).getLimitCpuUse(); - Map args = mock(HashMap.class); + final Map args = 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"); @@ -164,7 +162,7 @@ public class CitrixResourceBaseTest { doReturn(500).when(vmSpec).getMaxSpeed(); doReturn(true).when(vmSpec).getLimitCpuUse(); doReturn(null).when(_resource).callHostPlugin(conn, "vmops", "add_to_VCPUs_params_live", "key", "cap", "value", "99", "vmname", "i-2-3-VM"); - Map args = mock(HashMap.class); + final Map args = 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"); @@ -178,12 +176,12 @@ public class CitrixResourceBaseTest { @Test public void testSetNicDevIdIfCorrectVifIsNotNull() throws Exception { - IpAddressTO ip = mock(IpAddressTO.class); + final IpAddressTO ip = mock(IpAddressTO.class); when(ip.isAdd()).thenReturn(false); - VIF correctVif = null; + final VIF correctVif = null; try { _resource.setNicDevIdIfCorrectVifIsNotNull(conn, ip, correctVif); - } catch (NullPointerException e) { + } catch (final NullPointerException e) { fail("this test is meant to show that null pointer is not thrown"); } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/30e72e4a/plugins/hypervisors/xenserver/test/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRequestWrapperTest.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/xenserver/test/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRequestWrapperTest.java b/plugins/hypervisors/xenserver/test/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRequestWrapperTest.java index f8af543..3e7fb57 100644 --- a/plugins/hypervisors/xenserver/test/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRequestWrapperTest.java +++ b/plugins/hypervisors/xenserver/test/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRequestWrapperTest.java @@ -14,6 +14,7 @@ import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import com.cloud.agent.api.Answer; +import com.cloud.agent.api.ReadyCommand; import com.cloud.agent.api.RebootAnswer; import com.cloud.agent.api.RebootCommand; import com.cloud.agent.api.RebootRouterCommand; @@ -96,4 +97,16 @@ public class CitrixRequestWrapperTest { assertFalse(answer.getResult()); } + + @Test + public void testReadyCommandCommand() { + final ReadyCommand readyCommand = new ReadyCommand(); + + final CitrixRequestWrapper wrapper = CitrixRequestWrapper.getInstance(); + assertNotNull(wrapper); + + final Answer answer = wrapper.execute(readyCommand, citrixResourceBase); + + assertFalse(answer.getResult()); + } } \ No newline at end of file