You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by mc...@apache.org on 2014/02/07 22:46:44 UTC
[35/50] [abbrv] git commit: updated refs/heads/rbac to 3b58a45
test: Add test for LibvirtDomainXMLParser
A couple of changes where made to other classes as well to add
some features to allow more extensive testing.
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/41c7e22e
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/41c7e22e
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/41c7e22e
Branch: refs/heads/rbac
Commit: 41c7e22eee87c2be87a910b3f11c5f2fa09441c1
Parents: cecb216
Author: Wido den Hollander <wi...@widodh.nl>
Authored: Wed Feb 5 16:26:17 2014 +0100
Committer: Wido den Hollander <wi...@widodh.nl>
Committed: Thu Feb 6 14:23:25 2014 +0100
----------------------------------------------------------------------
.../kvm/resource/LibvirtDomainXMLParser.java | 4 +-
.../hypervisor/kvm/resource/LibvirtVMDef.java | 12 ++
.../resource/LibvirtDomainXMLParserTest.java | 184 +++++++++++++++++++
3 files changed, 198 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/41c7e22e/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java
index 127f648..9fb63ce 100644
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java
@@ -76,7 +76,7 @@ public class LibvirtDomainXMLParser {
def.defNetworkBasedDisk(diskPath, host, port, authUserName, poolUuid, diskLabel,
DiskDef.diskBus.valueOf(bus.toUpperCase()),
DiskDef.diskProtocol.valueOf(protocol.toUpperCase()));
- def.setCacheMode(DiskDef.diskCacheMode.valueOf(diskCacheMode));
+ def.setCacheMode(DiskDef.diskCacheMode.valueOf(diskCacheMode.toUpperCase()));
} else {
String diskFmtType = getAttrValue("driver", "type", disk);
String diskCacheMode = getAttrValue("driver", "cache", disk);
@@ -100,8 +100,8 @@ public class LibvirtDomainXMLParser {
} else if (type.equalsIgnoreCase("block")) {
def.defBlockBasedDisk(diskDev, diskLabel,
DiskDef.diskBus.valueOf(bus.toUpperCase()));
- def.setCacheMode(DiskDef.diskCacheMode.valueOf(diskCacheMode));
}
+ def.setCacheMode(DiskDef.diskCacheMode.valueOf(diskCacheMode.toUpperCase()));
}
NodeList iotune = disk.getElementsByTagName("iotune");
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/41c7e22e/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
index 5aeacda..1e90093 100644
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
@@ -585,6 +585,10 @@ public class LibvirtVMDef {
return _diskLabel;
}
+ public diskType getDiskType() {
+ return _diskType;
+ }
+
public deviceType getDeviceType() {
return _deviceType;
}
@@ -597,6 +601,10 @@ public class LibvirtVMDef {
return _bus;
}
+ public diskFmtType getDiskFormatType() {
+ return _diskFmtType;
+ }
+
public int getDiskSeq() {
char suffix = _diskLabel.charAt(_diskLabel.length() - 1);
return suffix - 'a';
@@ -622,6 +630,10 @@ public class LibvirtVMDef {
_diskCacheMode = cacheMode;
}
+ public diskCacheMode getCacheMode() {
+ return _diskCacheMode;
+ }
+
@Override
public String toString() {
StringBuilder diskBuilder = new StringBuilder();
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/41c7e22e/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParserTest.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParserTest.java b/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParserTest.java
new file mode 100644
index 0000000..bbe2f23
--- /dev/null
+++ b/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParserTest.java
@@ -0,0 +1,184 @@
+/*
+ * 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;
+
+import junit.framework.TestCase;
+import java.util.List;
+import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.DiskDef;
+
+public class LibvirtDomainXMLParserTest extends TestCase {
+
+ public void testDomainXMLParser() {
+ int vncPort = 5900;
+
+ DiskDef.diskBus diskBus = DiskDef.diskBus.VIRTIO;
+ DiskDef.diskType diskType = DiskDef.diskType.FILE;
+ DiskDef.deviceType deviceType = DiskDef.deviceType.DISK;
+ DiskDef.diskFmtType diskFormat = DiskDef.diskFmtType.QCOW2;
+ DiskDef.diskCacheMode diskCache = DiskDef.diskCacheMode.NONE;
+
+ String diskLabel ="vda";
+ String diskPath = "/var/lib/libvirt/images/my-test-image.qcow2";
+
+ String xml = "<domain type='kvm' id='10'>" +
+ "<name>s-2970-VM</name>" +
+ "<uuid>4d2c1526-865d-4fc9-a1ac-dbd1801a22d0</uuid>" +
+ "<description>Debian GNU/Linux 6(64-bit)</description>" +
+ "<memory unit='KiB'>262144</memory>" +
+ "<currentMemory unit='KiB'>262144</currentMemory>" +
+ "<vcpu placement='static'>1</vcpu>" +
+ "<cputune>" +
+ "<shares>250</shares>" +
+ "</cputune>" +
+ "<resource>" +
+ "<partition>/machine</partition>" +
+ "</resource>" +
+ "<os>" +
+ "<type arch='x86_64' machine='pc-i440fx-1.5'>hvm</type>" +
+ "<boot dev='cdrom'/>" +
+ "<boot dev='hd'/>" +
+ "</os>" +
+ "<features>" +
+ "<acpi/>" +
+ "<apic/>" +
+ "<pae/>" +
+ "</features>" +
+ "<clock offset='utc'/>" +
+ "<on_poweroff>destroy</on_poweroff>" +
+ "<on_reboot>restart</on_reboot>" +
+ "<on_crash>destroy</on_crash>" +
+ "<devices>" +
+ "<emulator>/usr/bin/kvm-spice</emulator>" +
+ "<disk type='" + diskType.toString() + "' device='" + deviceType.toString() + "'>" +
+ "<driver name='qemu' type='" + diskFormat.toString() + "' cache='" + diskCache.toString() + "'/>" +
+ "<source file='" + diskPath + "'/>" +
+ "<target dev='" + diskLabel + "' bus='" + diskBus.toString() + "'/>" +
+ "<alias name='virtio-disk0'/>" +
+ "<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>" +
+ "</disk>" +
+ "<disk type='file' device='cdrom'>" +
+ "<driver name='qemu' type='raw' cache='none'/>" +
+ "<source file='/usr/share/cloudstack-common/vms/systemvm.iso'/>" +
+ "<target dev='hdc' bus='ide'/>" +
+ "<readonly/>" +
+ "<alias name='ide0-1-0'/>" +
+ "<address type='drive' controller='0' bus='1' target='0' unit='0'/>" +
+ "</disk>" +
+ "<controller type='usb' index='0'>" +
+ "<alias name='usb0'/>" +
+ "<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>" +
+ "</controller>" +
+ "<controller type='pci' index='0' model='pci-root'>" +
+ "<alias name='pci0'/>" +
+ "</controller>" +
+ "<controller type='ide' index='0'>" +
+ "<alias name='ide0'/>" +
+ "<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>" +
+ "</controller>" +
+ "<controller type='virtio-serial' index='0'>" +
+ "<alias name='virtio-serial0'/>" +
+ "<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>" +
+ "</controller>" +
+ "<interface type='bridge'>" +
+ "<mac address='0e:00:a9:fe:02:00'/>" +
+ "<source bridge='cloud0'/>" +
+ "<target dev='vnet0'/>" +
+ "<model type='virtio'/>" +
+ "<alias name='net0'/>" +
+ "<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>" +
+ "</interface>" +
+ "<interface type='bridge'>" +
+ "<mac address='06:c5:94:00:05:65'/>" +
+ "<source bridge='cloudbr1'/>" +
+ "<target dev='vnet1'/>" +
+ "<model type='virtio'/>" +
+ "<alias name='net1'/>" +
+ "<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>" +
+ "</interface>" +
+ "<interface type='bridge'>" +
+ "<mac address='06:c9:f4:00:04:40'/>" +
+ "<source bridge='cloudbr0'/>" +
+ "<target dev='vnet2'/>" +
+ "<model type='virtio'/>" +
+ "<alias name='net2'/>" +
+ "<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>" +
+ "</interface>" +
+ "<interface type='bridge'>" +
+ "<mac address='06:7e:c6:00:05:68'/>" +
+ "<source bridge='cloudbr1'/>" +
+ "<target dev='vnet3'/>" +
+ "<model type='virtio'/>" +
+ "<alias name='net3'/>" +
+ "<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>" +
+ "</interface>" +
+ "<serial type='pty'>" +
+ "<source path='/dev/pts/3'/>" +
+ "<target port='0'/>" +
+ "<alias name='serial0'/>" +
+ "</serial>" +
+ "<console type='pty' tty='/dev/pts/3'>" +
+ "<source path='/dev/pts/3'/>" +
+ "<target type='serial' port='0'/>" +
+ "<alias name='serial0'/>" +
+ "</console>" +
+ "<channel type='unix'>" +
+ "<source mode='bind' path='/var/lib/libvirt/qemu/s-2970-VM.agent'/>" +
+ "<target type='virtio' name='s-2970-VM.vport'/>" +
+ "<alias name='channel0'/>" +
+ "<address type='virtio-serial' controller='0' bus='0' port='1'/>" +
+ "</channel>" +
+ "<input type='tablet' bus='usb'>" +
+ "<alias name='input0'/>" +
+ "</input>" +
+ "<input type='mouse' bus='ps2'/>" +
+ "<graphics type='vnc' port='" + vncPort + "' autoport='yes' listen='0.0.0.0'>" +
+ "<listen type='address' address='0.0.0.0'/>" +
+ "</graphics>" +
+ "<video>" +
+ "<model type='cirrus' vram='9216' heads='1'/>" +
+ "<alias name='video0'/>" +
+ "<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>" +
+ "</video>" +
+ "<memballoon model='virtio'>" +
+ "<alias name='balloon0'/>" +
+ "<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>" +
+ "</memballoon>" +
+ "</devices>" +
+ "<seclabel type='none'/>" +
+ "</domain>";
+
+ LibvirtDomainXMLParser parser = new LibvirtDomainXMLParser();
+ parser.parseDomainXML(xml);
+
+ assertEquals(vncPort - 5900, (int)parser.getVncPort());
+
+ List<DiskDef> disks = parser.getDisks();
+ /* Disk 0 is the first disk, the QCOW2 file backed virto disk */
+ int diskId = 0;
+
+ assertEquals(diskLabel, disks.get(diskId).getDiskLabel());
+ assertEquals(diskPath, disks.get(diskId).getDiskPath());
+ assertEquals(diskCache, disks.get(diskId).getCacheMode());
+ assertEquals(diskBus, disks.get(diskId).getBusType());
+ assertEquals(diskType, disks.get(diskId).getDiskType());
+ assertEquals(deviceType, disks.get(diskId).getDeviceType());
+ assertEquals(diskFormat, disks.get(diskId).getDiskFormatType());
+ }
+}
\ No newline at end of file