You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ko...@apache.org on 2015/05/19 18:21:08 UTC
[22/50] [abbrv] git commit: updated refs/heads/CLOUDSTACK-8301 to
8ff9000
Refactoring the LibvirtComputingResource
- Addin LibvirtPvlanSetupCommandWrapper
- 6 unit tests added
- KVM hypervisor plugin with 21% coverage
>From the 6 tests added, 2 were extra tests to increase the coverage of the LibvirtStopCommandWrapper
- Increased from 35% to 78.7%
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/ae505e7b
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/ae505e7b
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/ae505e7b
Branch: refs/heads/CLOUDSTACK-8301
Commit: ae505e7befa28c2ab136ff7a3ce0217cb2da1bfe
Parents: 7fd43f3
Author: wilderrodrigues <wr...@schubergphilis.com>
Authored: Wed May 6 11:38:00 2015 +0200
Committer: wilderrodrigues <wr...@schubergphilis.com>
Committed: Wed May 6 19:24:15 2015 +0200
----------------------------------------------------------------------
.../kvm/resource/LibvirtComputingResource.java | 70 +-----
.../LibvirtPvlanSetupCommandWrapper.java | 105 +++++++++
.../resource/wrapper/LibvirtRequestWrapper.java | 2 +
.../resource/LibvirtComputingResourceTest.java | 236 ++++++++++++++++++-
4 files changed, 352 insertions(+), 61 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ae505e7b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
index 8b74b1c..31a9ed7 100644
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
@@ -68,7 +68,6 @@ import com.cloud.agent.api.HostVmStateReportEntry;
import com.cloud.agent.api.PingCommand;
import com.cloud.agent.api.PingRoutingCommand;
import com.cloud.agent.api.PingRoutingWithNwGroupsCommand;
-import com.cloud.agent.api.PvlanSetupCommand;
import com.cloud.agent.api.SetupGuestNetworkCommand;
import com.cloud.agent.api.StartAnswer;
import com.cloud.agent.api.StartCommand;
@@ -397,6 +396,18 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
return _manageSnapshotPath;
}
+ public String getGuestBridgeName() {
+ return _guestBridgeName;
+ }
+
+ public String getOvsPvlanDhcpHostPath() {
+ return _ovsPvlanDhcpHostPath;
+ }
+
+ public String getOvsPvlanVmPath() {
+ return _ovsPvlanVmPath;
+ }
+
private static final class KeyValueInterpreter extends OutputInterpreter {
private final Map<String, String> map = new HashMap<String, String>();
@@ -1252,8 +1263,6 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
return execute((ResizeVolumeCommand)cmd);
} else if (cmd instanceof StorageSubSystemCommand) {
return storageHandler.handleStorageCommands((StorageSubSystemCommand)cmd);
- } else if (cmd instanceof PvlanSetupCommand) {
- return execute((PvlanSetupCommand)cmd);
} else {
s_logger.warn("Unsupported command ");
return Answer.createUnsupportedCommandAnswer(cmd);
@@ -1519,61 +1528,6 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
}
}
- private Answer execute(final PvlanSetupCommand cmd) {
- final String primaryPvlan = cmd.getPrimary();
- final String isolatedPvlan = cmd.getIsolated();
- final String op = cmd.getOp();
- final String dhcpName = cmd.getDhcpName();
- final String dhcpMac = cmd.getDhcpMac();
- final String dhcpIp = cmd.getDhcpIp();
- final String vmMac = cmd.getVmMac();
- boolean add = true;
-
- String opr = "-A";
- if (op.equals("delete")) {
- opr = "-D";
- add = false;
- }
-
- String result = null;
- Connect conn;
- try {
- if (cmd.getType() == PvlanSetupCommand.Type.DHCP) {
- final Script script = new Script(_ovsPvlanDhcpHostPath, _timeout, s_logger);
- if (add) {
- conn = LibvirtConnection.getConnectionByVmName(dhcpName);
- final List<InterfaceDef> ifaces = getInterfaces(conn, dhcpName);
- final InterfaceDef guestNic = ifaces.get(0);
- script.add(opr, "-b", _guestBridgeName, "-p", primaryPvlan, "-i", isolatedPvlan, "-n", dhcpName, "-d", dhcpIp, "-m", dhcpMac, "-I",
- guestNic.getDevName());
- } else {
- script.add(opr, "-b", _guestBridgeName, "-p", primaryPvlan, "-i", isolatedPvlan, "-n", dhcpName, "-d", dhcpIp, "-m", dhcpMac);
- }
- result = script.execute();
- if (result != null) {
- s_logger.warn("Failed to program pvlan for dhcp server with mac " + dhcpMac);
- return new Answer(cmd, false, result);
- } else {
- s_logger.info("Programmed pvlan for dhcp server with mac " + dhcpMac);
- }
- } else if (cmd.getType() == PvlanSetupCommand.Type.VM) {
- final Script script = new Script(_ovsPvlanVmPath, _timeout, s_logger);
- script.add(opr, "-b", _guestBridgeName, "-p", primaryPvlan, "-i", isolatedPvlan, "-v", vmMac);
- result = script.execute();
- if (result != null) {
- s_logger.warn("Failed to program pvlan for vm with mac " + vmMac);
- return new Answer(cmd, false, result);
- } else {
- s_logger.info("Programmed pvlan for vm with mac " + vmMac);
- }
- }
- } catch (final LibvirtException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return new Answer(cmd, true, result);
- }
-
private void VifHotPlug(final Connect conn, final String vmName, final String broadcastUri, final String macAddr) throws InternalErrorException, LibvirtException {
final NicTO nicTO = new NicTO();
nicTO.setMac(macAddr);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ae505e7b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtPvlanSetupCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtPvlanSetupCommandWrapper.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtPvlanSetupCommandWrapper.java
new file mode 100644
index 0000000..7233723
--- /dev/null
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtPvlanSetupCommandWrapper.java
@@ -0,0 +1,105 @@
+//
+// 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.kvm.resource.wrapper;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.libvirt.Connect;
+import org.libvirt.LibvirtException;
+
+import com.cloud.agent.api.Answer;
+import com.cloud.agent.api.PvlanSetupCommand;
+import com.cloud.hypervisor.kvm.resource.LibvirtComputingResource;
+import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef;
+import com.cloud.resource.CommandWrapper;
+import com.cloud.utils.script.Script;
+
+public final class LibvirtPvlanSetupCommandWrapper extends CommandWrapper<PvlanSetupCommand, Answer, LibvirtComputingResource> {
+
+ private static final Logger s_logger = Logger.getLogger(LibvirtPvlanSetupCommandWrapper.class);
+
+ @Override
+ public Answer execute(final PvlanSetupCommand command, final LibvirtComputingResource libvirtComputingResource) {
+ final String primaryPvlan = command.getPrimary();
+ final String isolatedPvlan = command.getIsolated();
+ final String op = command.getOp();
+ final String dhcpName = command.getDhcpName();
+ final String dhcpMac = command.getDhcpMac();
+ final String dhcpIp = command.getDhcpIp();
+ final String vmMac = command.getVmMac();
+ boolean add = true;
+
+ String opr = "-A";
+ if (op.equals("delete")) {
+ opr = "-D";
+ add = false;
+ }
+
+ String result = null;
+ try {
+ final String guestBridgeName = libvirtComputingResource.getGuestBridgeName();
+ final int timeout = libvirtComputingResource.getTimeout();
+
+ if (command.getType() == PvlanSetupCommand.Type.DHCP) {
+ final String ovsPvlanDhcpHostPath = libvirtComputingResource.getOvsPvlanDhcpHostPath();
+ final Script script = new Script(ovsPvlanDhcpHostPath, timeout, s_logger);
+
+ if (add) {
+ final LibvirtUtilitiesHelper libvirtUtilitiesHelper = libvirtComputingResource.getLibvirtUtilitiesHelper();
+ final Connect conn = libvirtUtilitiesHelper.getConnectionByVmName(dhcpName);
+
+ final List<InterfaceDef> ifaces = libvirtComputingResource.getInterfaces(conn, dhcpName);
+ final InterfaceDef guestNic = ifaces.get(0);
+ script.add(opr, "-b", guestBridgeName, "-p", primaryPvlan, "-i", isolatedPvlan, "-n", dhcpName, "-d", dhcpIp, "-m", dhcpMac, "-I",
+ guestNic.getDevName());
+ } else {
+ script.add(opr, "-b", guestBridgeName, "-p", primaryPvlan, "-i", isolatedPvlan, "-n", dhcpName, "-d", dhcpIp, "-m", dhcpMac);
+ }
+
+ result = script.execute();
+
+ if (result != null) {
+ s_logger.warn("Failed to program pvlan for dhcp server with mac " + dhcpMac);
+ return new Answer(command, false, result);
+ } else {
+ s_logger.info("Programmed pvlan for dhcp server with mac " + dhcpMac);
+ }
+ } else if (command.getType() == PvlanSetupCommand.Type.VM) {
+ final String ovsPvlanVmPath = libvirtComputingResource.getOvsPvlanVmPath();
+
+ final Script script = new Script(ovsPvlanVmPath, timeout, s_logger);
+ script.add(opr, "-b", guestBridgeName, "-p", primaryPvlan, "-i", isolatedPvlan, "-v", vmMac);
+ result = script.execute();
+
+ if (result != null) {
+ s_logger.warn("Failed to program pvlan for vm with mac " + vmMac);
+ return new Answer(command, false, result);
+ } else {
+ s_logger.info("Programmed pvlan for vm with mac " + vmMac);
+ }
+ }
+ } catch (final LibvirtException e) {
+ s_logger.error("Error whislt executing OVS Setup command! ==> " + e.getMessage());
+ return new Answer(command, false, e.getMessage());
+ }
+ return new Answer(command, true, result);
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ae505e7b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtRequestWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtRequestWrapper.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtRequestWrapper.java
index 1ee14a1..c103ef3 100644
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtRequestWrapper.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtRequestWrapper.java
@@ -59,6 +59,7 @@ import com.cloud.agent.api.OvsVpcRoutingPolicyConfigCommand;
import com.cloud.agent.api.PingTestCommand;
import com.cloud.agent.api.PlugNicCommand;
import com.cloud.agent.api.PrepareForMigrationCommand;
+import com.cloud.agent.api.PvlanSetupCommand;
import com.cloud.agent.api.ReadyCommand;
import com.cloud.agent.api.RebootCommand;
import com.cloud.agent.api.RebootRouterCommand;
@@ -146,6 +147,7 @@ public class LibvirtRequestWrapper extends RequestWrapper {
linbvirtCommands.put(BackupSnapshotCommand.class, new LibvirtBackupSnapshotCommandWrapper());
linbvirtCommands.put(CreatePrivateTemplateFromSnapshotCommand.class, new LibvirtCreatePrivateTemplateFromSnapshotCommandWrapper());
linbvirtCommands.put(CopyVolumeCommand.class, new LibvirtCopyVolumeCommandWrapper());
+ linbvirtCommands.put(PvlanSetupCommand.class, new LibvirtPvlanSetupCommandWrapper());
resources.put(LibvirtComputingResource.class, linbvirtCommands);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ae505e7b/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java b/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java
index 86ff007..ad75b53 100644
--- a/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java
+++ b/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java
@@ -31,6 +31,7 @@ import static org.mockito.Mockito.when;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
+import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Arrays;
@@ -54,6 +55,7 @@ import org.libvirt.Connect;
import org.libvirt.Domain;
import org.libvirt.DomainBlockStats;
import org.libvirt.DomainInfo;
+import org.libvirt.DomainInfo.DomainState;
import org.libvirt.DomainInterfaceStats;
import org.libvirt.LibvirtException;
import org.libvirt.NodeInfo;
@@ -107,6 +109,7 @@ import com.cloud.agent.api.OvsVpcRoutingPolicyConfigCommand.Acl;
import com.cloud.agent.api.PingTestCommand;
import com.cloud.agent.api.PlugNicCommand;
import com.cloud.agent.api.PrepareForMigrationCommand;
+import com.cloud.agent.api.PvlanSetupCommand;
import com.cloud.agent.api.ReadyCommand;
import com.cloud.agent.api.RebootCommand;
import com.cloud.agent.api.RebootRouterCommand;
@@ -504,10 +507,13 @@ public class LibvirtComputingResourceTest {
}
@Test
- public void testStopCommandCheck() {
+ public void testStopCommandCheckVmNOTRunning() {
final Connect conn = Mockito.mock(Connect.class);
final LibvirtUtilitiesHelper libvirtUtilitiesHelper = Mockito.mock(LibvirtUtilitiesHelper.class);
- final Domain domain = Mockito.mock(Domain.class);
+ final Domain vm = Mockito.mock(Domain.class);
+ final DomainInfo info = Mockito.mock(DomainInfo.class);
+ final DomainState state = DomainInfo.DomainState.VIR_DOMAIN_SHUTDOWN;
+ info.state = state;
final String vmName = "Test";
final StopCommand command = new StopCommand(vmName, false, true);
@@ -515,7 +521,10 @@ public class LibvirtComputingResourceTest {
when(libvirtComputingResource.getLibvirtUtilitiesHelper()).thenReturn(libvirtUtilitiesHelper);
try {
when(libvirtUtilitiesHelper.getConnectionByVmName(vmName)).thenReturn(conn);
- when(conn.domainLookupByName(command.getVmName())).thenReturn(domain);
+ when(conn.domainLookupByName(command.getVmName())).thenReturn(vm);
+
+ when(vm.getInfo()).thenReturn(info);
+
} catch (final LibvirtException e) {
fail(e.getMessage());
}
@@ -535,6 +544,83 @@ public class LibvirtComputingResourceTest {
}
}
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testStopCommandCheckException1() {
+ final Connect conn = Mockito.mock(Connect.class);
+ final LibvirtUtilitiesHelper libvirtUtilitiesHelper = Mockito.mock(LibvirtUtilitiesHelper.class);
+ final Domain vm = Mockito.mock(Domain.class);
+ final DomainInfo info = Mockito.mock(DomainInfo.class);
+ final DomainState state = DomainInfo.DomainState.VIR_DOMAIN_RUNNING;
+ info.state = state;
+
+ final String vmName = "Test";
+ final StopCommand command = new StopCommand(vmName, false, true);
+
+ when(libvirtComputingResource.getLibvirtUtilitiesHelper()).thenReturn(libvirtUtilitiesHelper);
+ try {
+ when(libvirtUtilitiesHelper.getConnectionByVmName(vmName)).thenThrow(LibvirtException.class);
+ when(conn.domainLookupByName(command.getVmName())).thenReturn(vm);
+
+ when(vm.getInfo()).thenReturn(info);
+
+ } catch (final LibvirtException e) {
+ fail(e.getMessage());
+ }
+
+ final LibvirtRequestWrapper wrapper = LibvirtRequestWrapper.getInstance();
+ assertNotNull(wrapper);
+
+ final Answer answer = wrapper.execute(command, libvirtComputingResource);
+
+ assertFalse(answer.getResult());
+
+ verify(libvirtComputingResource, times(1)).getLibvirtUtilitiesHelper();
+ try {
+ verify(libvirtUtilitiesHelper, times(2)).getConnectionByVmName(vmName);
+ } catch (final LibvirtException e) {
+ fail(e.getMessage());
+ }
+ }
+
+ @Test
+ public void testStopCommandCheckVmRunning() {
+ final Connect conn = Mockito.mock(Connect.class);
+ final LibvirtUtilitiesHelper libvirtUtilitiesHelper = Mockito.mock(LibvirtUtilitiesHelper.class);
+ final Domain vm = Mockito.mock(Domain.class);
+ final DomainInfo info = Mockito.mock(DomainInfo.class);
+ final DomainState state = DomainInfo.DomainState.VIR_DOMAIN_RUNNING;
+ info.state = state;
+
+ final String vmName = "Test";
+ final StopCommand command = new StopCommand(vmName, false, true);
+
+ when(libvirtComputingResource.getLibvirtUtilitiesHelper()).thenReturn(libvirtUtilitiesHelper);
+ try {
+ when(libvirtUtilitiesHelper.getConnectionByVmName(vmName)).thenReturn(conn);
+ when(conn.domainLookupByName(command.getVmName())).thenReturn(vm);
+
+ when(vm.getInfo()).thenReturn(info);
+
+ } catch (final LibvirtException e) {
+ fail(e.getMessage());
+ }
+
+ final LibvirtRequestWrapper wrapper = LibvirtRequestWrapper.getInstance();
+ assertNotNull(wrapper);
+
+ final Answer answer = wrapper.execute(command, libvirtComputingResource);
+
+ assertFalse(answer.getResult());
+
+ verify(libvirtComputingResource, times(1)).getLibvirtUtilitiesHelper();
+ try {
+ verify(libvirtUtilitiesHelper, times(1)).getConnectionByVmName(vmName);
+ } catch (final LibvirtException e) {
+ fail(e.getMessage());
+ }
+ }
+
@Test
public void testGetVmStatsCommand() {
final Connect conn = Mockito.mock(Connect.class);
@@ -4098,4 +4184,148 @@ public class LibvirtComputingResourceTest {
verify(libvirtComputingResource, times(1)).getStoragePoolMgr();
}
+
+ @Test
+ public void testPvlanSetupCommandDhcpAdd() {
+ final String op = "add";
+ final URI uri = URI.create("http://localhost");
+ final String networkTag = "/105";
+ final String dhcpName = "dhcp";
+ final String dhcpMac = "00:00:00:00";
+ final String dhcpIp = "172.10.10.10";
+
+ final PvlanSetupCommand command = PvlanSetupCommand.createDhcpSetup(op, uri, networkTag, dhcpName, dhcpMac, dhcpIp);
+
+ final LibvirtUtilitiesHelper libvirtUtilitiesHelper = Mockito.mock(LibvirtUtilitiesHelper.class);
+ final Connect conn = Mockito.mock(Connect.class);
+
+ final String guestBridgeName = "br0";
+ when(libvirtComputingResource.getGuestBridgeName()).thenReturn(guestBridgeName);
+
+ final int timeout = 0;
+ when(libvirtComputingResource.getTimeout()).thenReturn(timeout);
+ final String ovsPvlanDhcpHostPath = "/pvlan";
+ when(libvirtComputingResource.getOvsPvlanDhcpHostPath()).thenReturn(ovsPvlanDhcpHostPath);
+ when(libvirtComputingResource.getLibvirtUtilitiesHelper()).thenReturn(libvirtUtilitiesHelper);
+
+ final List<InterfaceDef> ifaces = new ArrayList<InterfaceDef>();
+ final InterfaceDef nic = Mockito.mock(InterfaceDef.class);
+ ifaces.add(nic);
+
+ try {
+ when(libvirtUtilitiesHelper.getConnectionByVmName(dhcpName)).thenReturn(conn);
+ when(libvirtComputingResource.getInterfaces(conn, dhcpName)).thenReturn(ifaces);
+ } catch (final LibvirtException e) {
+ fail(e.getMessage());
+ }
+
+ final LibvirtRequestWrapper wrapper = LibvirtRequestWrapper.getInstance();
+ assertNotNull(wrapper);
+
+ final Answer answer = wrapper.execute(command, libvirtComputingResource);
+ assertFalse(answer.getResult());
+
+ verify(libvirtComputingResource, times(1)).getLibvirtUtilitiesHelper();
+ try {
+ verify(libvirtUtilitiesHelper, times(1)).getConnectionByVmName(dhcpName);
+ } catch (final LibvirtException e) {
+ fail(e.getMessage());
+ }
+ }
+
+ @Test
+ public void testPvlanSetupCommandVm() {
+ final String op = "add";
+ final URI uri = URI.create("http://localhost");
+ final String networkTag = "/105";
+ final String vmMac = "00:00:00:00";
+
+ final PvlanSetupCommand command = PvlanSetupCommand.createVmSetup(op, uri, networkTag, vmMac);
+
+ final String guestBridgeName = "br0";
+ when(libvirtComputingResource.getGuestBridgeName()).thenReturn(guestBridgeName);
+ final int timeout = 0;
+ when(libvirtComputingResource.getTimeout()).thenReturn(timeout);
+
+ final String ovsPvlanVmPath = "/pvlan";
+ when(libvirtComputingResource.getOvsPvlanVmPath()).thenReturn(ovsPvlanVmPath);
+
+ final LibvirtRequestWrapper wrapper = LibvirtRequestWrapper.getInstance();
+ assertNotNull(wrapper);
+
+ final Answer answer = wrapper.execute(command, libvirtComputingResource);
+ assertFalse(answer.getResult());
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testPvlanSetupCommandDhcpException() {
+ final String op = "add";
+ final URI uri = URI.create("http://localhost");
+ final String networkTag = "/105";
+ final String dhcpName = "dhcp";
+ final String dhcpMac = "00:00:00:00";
+ final String dhcpIp = "172.10.10.10";
+
+ final PvlanSetupCommand command = PvlanSetupCommand.createDhcpSetup(op, uri, networkTag, dhcpName, dhcpMac, dhcpIp);
+
+ final LibvirtUtilitiesHelper libvirtUtilitiesHelper = Mockito.mock(LibvirtUtilitiesHelper.class);
+
+ final String guestBridgeName = "br0";
+ when(libvirtComputingResource.getGuestBridgeName()).thenReturn(guestBridgeName);
+
+ final int timeout = 0;
+ when(libvirtComputingResource.getTimeout()).thenReturn(timeout);
+ final String ovsPvlanDhcpHostPath = "/pvlan";
+ when(libvirtComputingResource.getOvsPvlanDhcpHostPath()).thenReturn(ovsPvlanDhcpHostPath);
+ when(libvirtComputingResource.getLibvirtUtilitiesHelper()).thenReturn(libvirtUtilitiesHelper);
+
+ try {
+ when(libvirtUtilitiesHelper.getConnectionByVmName(dhcpName)).thenThrow(LibvirtException.class);
+ } catch (final LibvirtException e) {
+ fail(e.getMessage());
+ }
+
+ final LibvirtRequestWrapper wrapper = LibvirtRequestWrapper.getInstance();
+ assertNotNull(wrapper);
+
+ final Answer answer = wrapper.execute(command, libvirtComputingResource);
+ assertFalse(answer.getResult());
+
+ verify(libvirtComputingResource, times(1)).getLibvirtUtilitiesHelper();
+ try {
+ verify(libvirtUtilitiesHelper, times(1)).getConnectionByVmName(dhcpName);
+ } catch (final LibvirtException e) {
+ fail(e.getMessage());
+ }
+ }
+
+ @Test
+ public void testPvlanSetupCommandDhcpDelete() {
+ final String op = "delete";
+ final URI uri = URI.create("http://localhost");
+ final String networkTag = "/105";
+ final String dhcpName = "dhcp";
+ final String dhcpMac = "00:00:00:00";
+ final String dhcpIp = "172.10.10.10";
+
+ final PvlanSetupCommand command = PvlanSetupCommand.createDhcpSetup(op, uri, networkTag, dhcpName, dhcpMac, dhcpIp);
+
+ final LibvirtUtilitiesHelper libvirtUtilitiesHelper = Mockito.mock(LibvirtUtilitiesHelper.class);
+
+ final String guestBridgeName = "br0";
+ when(libvirtComputingResource.getGuestBridgeName()).thenReturn(guestBridgeName);
+
+ final int timeout = 0;
+ when(libvirtComputingResource.getTimeout()).thenReturn(timeout);
+ final String ovsPvlanDhcpHostPath = "/pvlan";
+ when(libvirtComputingResource.getOvsPvlanDhcpHostPath()).thenReturn(ovsPvlanDhcpHostPath);
+ when(libvirtComputingResource.getLibvirtUtilitiesHelper()).thenReturn(libvirtUtilitiesHelper);
+
+ final LibvirtRequestWrapper wrapper = LibvirtRequestWrapper.getInstance();
+ assertNotNull(wrapper);
+
+ final Answer answer = wrapper.execute(command, libvirtComputingResource);
+ assertFalse(answer.getResult());
+ }
}
\ No newline at end of file