+Mon Jul 16 16:59:24 EST 2007 Daniel P. Berrange <berrange@redhat.com>
+
+ * src/qemu_conf.c, src/qemu_conf.h, src/xend_internal.c,
+ src/xm_internal.c, src/xml.c: Added support for the <clock/>
+ element to switch between UTC and localtime in guests
+ * tests/sexpr2xmltest.c, tests/xmconfigtest.c,
+ tests/xml2sexprtest.c, tests/sexpr2xmldata/*,
+ tests/xml2sexprdata/*, tests/xmconfigdata/*: Added test
+ cases for new <clock/> element, and adapted existing expected
+ data files where needed.
+ * docs/libvir.html, docs/format.html: Added docs about the
+ new <clock/> element
+
Fri Jul 13 14:25:16 CEST 2007 Daniel Veillard <veillard@redhat.com>
* src/xml.c: applied modified patch from Masayuki Sunou for
<acpi/>
<apic/></span>
</features>
+ <span style="color: #0000E5; background-color: #FFFFFF"><clock sync="localtime"/></span>
<devices>
<span style="color: #0000E5; background-color: #FFFFFF"><emulator>/usr/lib/xen/bin/qemu-dm</emulator></span>
<interface type='bridge'>
<li><code>apic</code> - enable IO APIC</li>
<li><code>acpi</code> - enable ACPI bios</li>
</ul></li>
+ <li>the optional <code><clock></code> element is used to specify
+ whether the emulated BIOS clock in the guest is synced to either
+ <code>localtime</code> or <code>utc</code>. In general Windows will
+ want <code>localtime</code> while all other operating systems will
+ want <code>utc</code>. The default is thus <code>utc</code></li>
<li>the <code><os></code> block description is very different, first
it indicates that the type is 'hvm' for hardware virtualization, then
instead of a kernel, boot and command line arguments, it points to an os
<os>
<type>hvm</type>
</os>
+ <span style="color: #0000E5; background-color: #FFFFFF"><clock sync="localtime"/></span>
<devices>
<span style="color: #FF0000; background-color: #FFFFFF"><emulator>/home/user/usr/kvm-devel/bin/qemu-system-x86_64</emulator></span>
<disk type='file' device='disk'>
<graphics type='vnc' port='-1'/>
</devices>
</domain></pre><p>The specific points to note if using KVM are:</p><ul><li>the top level domain element carries a type of 'kvm'</li>
+ <li>the <clock> optional is supported as with Xen HVM</li>
<li>the <devices> emulator points to the special qemu binary required
for KVM</li>
<li>networking interface definitions definitions are somewhat different due
<acpi/>
<apic/></span>
</features>
+ <span style="color: #0000E5; background-color: #FFFFFF"><clock sync="localtime"/></span>
<devices>
<span style="color: #0000E5; background-color: #FFFFFF"><emulator>/usr/lib/xen/bin/qemu-dm</emulator></span>
<interface type='bridge'>
<li><code>acpi</code> - enable ACPI bios</li>
</ul>
</li>
+ <li>the optional <code><clock></code> element is used to specify
+ whether the emulated BIOS clock in the guest is synced to either
+ <code>localtime</code> or <code>utc</code>. In general Windows will
+ want <code>localtime</code> while all other operating systems will
+ want <code>utc</code>. The default is thus <code>utc</code></li>
<li>the <code><os></code> block description is very different, first
it indicates that the type is 'hvm' for hardware virtualization, then
instead of a kernel, boot and command line arguments, it points to an os
<os>
<type>hvm</type>
</os>
+ <span style="color: #0000E5; background-color: #FFFFFF"><clock sync="localtime"/></span>
<devices>
<span style="color: #FF0000; background-color: #FFFFFF"><emulator>/home/user/usr/kvm-devel/bin/qemu-system-x86_64</emulator></span>
<disk type='file' device='disk'>
<p>The specific points to note if using KVM are:</p>
<ul>
<li>the top level domain element carries a type of 'kvm'</li>
+ <li>the <clock> optional is supported as with Xen HVM</li>
<li>the <devices> emulator points to the special qemu binary required
for KVM</li>
<li>networking interface definitions definitions are somewhat different due
if (obj)
xmlXPathFreeObject(obj);
+ /* See if we set clock to localtime */
+ obj = xmlXPathEval(BAD_CAST "string(/domain/clock/@offset)", ctxt);
+ if ((obj == NULL) || (obj->type != XPATH_STRING) ||
+ (obj->stringval == NULL) || (obj->stringval[0] == 0)) {
+ def->localtime = 0;
+ } else {
+ if (!strcmp((char*)obj->stringval, "localtime"))
+ def->localtime = 1;
+ else
+ def->localtime = 0;
+ }
+ if (obj)
+ xmlXPathFreeObject(obj);
+
/* Extract OS type info */
obj = xmlXPathEval(BAD_CAST "string(/domain/os/type[1])", ctxt);
2 + /* cpus */
2 + /* boot device */
2 + /* monitor */
+ (vm->def->localtime ? 1 : 0) + /* localtime */
(driver->qemuCmdFlags & QEMUD_CMD_FLAG_NO_REBOOT &&
vm->def->noReboot ? 1 : 0) + /* no-reboot */
(vm->def->features & QEMUD_FEATURE_ACPI ? 0 : 1) + /* acpi */
if (!((*argv)[++n] = strdup("pty")))
goto no_memory;
+ if (vm->def->localtime) {
+ if (!((*argv)[++n] = strdup("-localtime")))
+ goto no_memory;
+ }
+
if (driver->qemuCmdFlags & QEMUD_CMD_FLAG_NO_REBOOT &&
vm->def->noReboot) {
if (!((*argv)[++n] = strdup("-no-reboot")))
goto no_memory;
}
+ virBufferVSprintf(buf, " <clock offset='%s'/>\n", def->localtime ? "localtime" : "utc");
+
if (virBufferAdd(buf, " <on_poweroff>destroy</on_poweroff>\n", -1) < 0)
goto no_memory;
if (def->noReboot) {
struct qemud_vm_os_def os;
+ int localtime;
int features;
int graphicsType;
int vncPort;
virBufferVSprintf(&buf, " <on_crash>%s</on_crash>\n", tmp);
if (hvm) {
+ int clockLocal;
+
virBufferAdd(&buf, " <features>\n", 13);
if (sexpr_int(root, "domain/image/hvm/acpi"))
virBufferAdd(&buf, " <acpi/>\n", 12);
if (sexpr_int(root, "domain/image/hvm/pae"))
virBufferAdd(&buf, " <pae/>\n", 11);
virBufferAdd(&buf, " </features>\n", 14);
+
+ clockLocal = sexpr_int(root, "domain/image/hvm/localtime");
+ virBufferVSprintf(&buf, " <clock offset='%s'/>\n", clockLocal ? "localtime" : "utc");
}
virBufferAdd(&buf, " <devices>\n", 12);
val)
virBufferAdd(buf, " <apic/>\n", -1);
virBufferAdd(buf, " </features>\n", -1);
+
+ if (xenXMConfigGetInt(conf, "localtime", &val) < 0)
+ val = 0;
+ virBufferVSprintf(buf, " <clock offset='%s'/>\n", val ? "localtime" : "utc");
}
virBufferAdd(buf, " <devices>\n", -1);
if (hvm) {
const char *boot = "c";
+ int clockLocal = 0;
if (xenXMConfigSetString(conf, "builder", "hvm") < 0)
goto error;
"cannot set the apic parameter") < 0)
goto error;
+ obj = xmlXPathEval(BAD_CAST "string(/domain/clock/@offset)", ctxt);
+ if ((obj != NULL) && (obj->type == XPATH_STRING) &&
+ (obj->stringval != NULL)) {
+ if (!strcmp((const char*)obj->stringval, "localtime"))
+ clockLocal = 1;
+ }
+ xmlXPathFreeObject(obj);
+ if (xenXMConfigSetInt(conf, "localtime", clockLocal) < 0)
+ goto error;
+
if (priv->xendConfigVersion == 1) {
if (xenXMConfigSetStringFromXPath(conn, conf, ctxt, "cdrom", "string(/domain/devices/disk[@device='cdrom']/source/@file)", 1,
"cannot set the cdrom parameter") < 0)
}
}
+ str = virXPathString("string(/domain/clock/@offset)", ctxt);
+ if (str != NULL && !strcmp(str, "localtime")) {
+ virBufferAdd(buf, "(localtime 1)", 13);
+ }
+
virBufferAdd(buf, "))", 2);
return (0);
--- /dev/null
+(domain (domid 3)(name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(device_model '/usr/lib64/xen/bin/qemu-dm')(boot c)(cdrom '/root/boot.iso')(acpi 1)(vnc 1)(keymap ja)(localtime 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
--- /dev/null
+<domain type='xen' id='3'>
+ <name>fvtest</name>
+ <uuid>b5d70dd275cdaca517769660b059d8bc</uuid>
+ <os>
+ <type>hvm</type>
+ <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <boot dev='hd'/>
+ </os>
+ <memory>409600</memory>
+ <vcpu>1</vcpu>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>restart</on_crash>
+ <features>
+ <acpi/>
+ </features>
+ <clock offset='localtime'/>
+ <devices>
+ <emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
+ <disk type='file' device='disk'>
+ <driver name='file'/>
+ <source file='/root/foo.img'/>
+ <target dev='hda'/>
+ </disk>
+ <interface type='bridge'>
+ <source bridge='xenbr0'/>
+ <mac address='00:16:3e:1b:b1:47'/>
+ <script path='vif-bridge'/>
+ </interface>
+ <disk type='file' device='cdrom'>
+ <driver name='file'/>
+ <source file='/root/boot.iso'/>
+ <target dev='hdc'/>
+ <readonly/>
+ </disk>
+ <graphics type='vnc' port='5903' keymap='ja'/>
+ </devices>
+</domain>
--- /dev/null
+(domain (domid 3)(name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(device_model '/usr/lib64/xen/bin/qemu-dm')(boot c)(cdrom '/root/boot.iso')(acpi 1)(vnc 1)(keymap ja)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
--- /dev/null
+<domain type='xen' id='3'>
+ <name>fvtest</name>
+ <uuid>b5d70dd275cdaca517769660b059d8bc</uuid>
+ <os>
+ <type>hvm</type>
+ <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <boot dev='hd'/>
+ </os>
+ <memory>409600</memory>
+ <vcpu>1</vcpu>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>restart</on_crash>
+ <features>
+ <acpi/>
+ </features>
+ <clock offset='utc'/>
+ <devices>
+ <emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
+ <disk type='file' device='disk'>
+ <driver name='file'/>
+ <source file='/root/foo.img'/>
+ <target dev='hda'/>
+ </disk>
+ <interface type='bridge'>
+ <source bridge='xenbr0'/>
+ <mac address='00:16:3e:1b:b1:47'/>
+ <script path='vif-bridge'/>
+ </interface>
+ <disk type='file' device='cdrom'>
+ <driver name='file'/>
+ <source file='/root/boot.iso'/>
+ <target dev='hdc'/>
+ <readonly/>
+ </disk>
+ <graphics type='vnc' port='5903' keymap='ja'/>
+ </devices>
+</domain>
<features>
<acpi/>
</features>
+ <clock offset='utc'/>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<disk type='file' device='cdrom'>
<features>
<acpi/>
</features>
+ <clock offset='utc'/>
<devices>
<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
<disk type='file' device='disk'>
<apic/>
<pae/>
</features>
+ <clock offset='utc'/>
<devices>
<emulator>/usr/lib/xen/bin/qemu-dm</emulator>
<interface type='bridge'>
if (!(gotxml = xend_parse_domain_sexp(NULL, sexprData, xendConfigVersion)))
goto fail;
- if (getenv("DEBUG_TESTS")) {
- printf("Expect %d '%s'\n", (int)strlen(xmlData), xmlData);
- printf("Actual %d '%s'\n", (int)strlen(gotxml), gotxml);
- }
- if (strcmp(xmlData, gotxml))
+ if (strcmp(xmlData, gotxml)) {
+ if (getenv("DEBUG_TESTS")) {
+ printf("Expect %d '%s'\n", (int)strlen(xmlData), xmlData);
+ printf("Actual %d '%s'\n", (int)strlen(gotxml), gotxml);
+ }
goto fail;
+ }
ret = 0;
1);
}
+static int testCompareFVclockUTC(void *data ATTRIBUTE_UNUSED) {
+ return testCompareFiles("sexpr2xmldata/sexpr2xml-fv-utc.xml",
+ "sexpr2xmldata/sexpr2xml-fv-utc.sexpr",
+ 1);
+}
+
+static int testCompareFVclockLocaltime(void *data ATTRIBUTE_UNUSED) {
+ return testCompareFiles("sexpr2xmldata/sexpr2xml-fv-localtime.xml",
+ "sexpr2xmldata/sexpr2xml-fv-localtime.sexpr",
+ 1);
+}
+
+
int
main(int argc, char **argv)
1, testCompareNoSourceCDRom, NULL) != 0)
ret = -1;
+ if (virtTestRun("SEXPR-2-XML clock UTC",
+ 1, testCompareFVclockUTC, NULL) != 0)
+ ret = -1;
+
+ if (virtTestRun("SEXPR-2-XML clock Localtime",
+ 1, testCompareFVclockLocaltime, NULL) != 0)
+ ret = -1;
+
exit(ret==0 ? EXIT_SUCCESS : EXIT_FAILURE);
}
#else /* WITHOUT_XEN */
--- /dev/null
+name = "XenGuest2"
+uuid = "c7a5fdb2cdaf9455926ad65c16db1809"
+maxmem = 579
+memory = 394
+vcpus = 1
+builder = "hvm"
+kernel = "/usr/lib/xen/boot/hvmloader"
+boot = "d"
+pae = 1
+acpi = 1
+apic = 1
+localtime = 1
+on_poweroff = "destroy"
+on_reboot = "restart"
+on_crash = "restart"
+device_model = "/usr/lib/xen/bin/qemu-dm"
+sdl = 0
+vnc = 1
+vncunused = 1
+vnclisten = "127.0.0.1"
+vncpasswd = "123poi"
+disk = [ "phy:/dev/HostVG/XenGuest2,hda,w", "file:/root/boot.iso,hdc:cdrom,r" ]
+vif = [ "mac=00:16:3E:66:92:9C,bridge=xenbr1,type=ioemu" ]
--- /dev/null
+<domain type='xen'>
+ <name>XenGuest2</name>
+ <uuid>c7a5fdb2cdaf9455926ad65c16db1809</uuid>
+ <os>
+ <type>hvm</type>
+ <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <boot dev='cdrom'/>
+ </os>
+ <currentMemory>403456</currentMemory>
+ <memory>592896</memory>
+ <vcpu>1</vcpu>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>restart</on_crash>
+ <features>
+ <pae/>
+ <acpi/>
+ <apic/>
+ </features>
+ <clock offset='localtime'/>
+ <devices>
+ <emulator>/usr/lib/xen/bin/qemu-dm</emulator>
+ <disk type='block' device='disk'>
+ <driver name='phy'/>
+ <source dev='/dev/HostVG/XenGuest2'/>
+ <target dev='hda'/>
+ </disk>
+ <disk type='file' device='cdrom'>
+ <driver name='file'/>
+ <source file='/root/boot.iso'/>
+ <target dev='hdc'/>
+ <readonly/>
+ </disk>
+ <interface type='bridge'>
+ <mac address='00:16:3E:66:92:9C'/>
+ <source bridge='xenbr1'/>
+ </interface>
+ <graphics type='vnc' port='-1' listen='127.0.0.1' passwd='123poi'/>
+ </devices>
+</domain>
pae = 1
acpi = 1
apic = 1
+localtime = 0
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
<acpi/>
<apic/>
</features>
+ <clock offset='utc'/>
<devices>
<emulator>/usr/lib/xen/bin/qemu-dm</emulator>
<disk type='block' device='disk'>
pae = 1
acpi = 1
apic = 1
+localtime = 0
cdrom = "/root/boot.iso"
on_poweroff = "destroy"
on_reboot = "restart"
<acpi/>
<apic/>
</features>
+ <clock offset='utc'/>
<devices>
<emulator>/usr/lib/xen/bin/qemu-dm</emulator>
<disk type='block' device='disk'>
--- /dev/null
+name = "XenGuest2"
+uuid = "c7a5fdb2cdaf9455926ad65c16db1809"
+maxmem = 579
+memory = 394
+vcpus = 1
+builder = "hvm"
+kernel = "/usr/lib/xen/boot/hvmloader"
+boot = "d"
+pae = 1
+acpi = 1
+apic = 1
+localtime = 0
+on_poweroff = "destroy"
+on_reboot = "restart"
+on_crash = "restart"
+device_model = "/usr/lib/xen/bin/qemu-dm"
+sdl = 0
+vnc = 1
+vncunused = 1
+vnclisten = "127.0.0.1"
+vncpasswd = "123poi"
+disk = [ "phy:/dev/HostVG/XenGuest2,hda,w", "file:/root/boot.iso,hdc:cdrom,r" ]
+vif = [ "mac=00:16:3E:66:92:9C,bridge=xenbr1,type=ioemu" ]
--- /dev/null
+<domain type='xen'>
+ <name>XenGuest2</name>
+ <uuid>c7a5fdb2cdaf9455926ad65c16db1809</uuid>
+ <os>
+ <type>hvm</type>
+ <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <boot dev='cdrom'/>
+ </os>
+ <currentMemory>403456</currentMemory>
+ <memory>592896</memory>
+ <vcpu>1</vcpu>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>restart</on_crash>
+ <features>
+ <pae/>
+ <acpi/>
+ <apic/>
+ </features>
+ <clock offset='utc'/>
+ <devices>
+ <emulator>/usr/lib/xen/bin/qemu-dm</emulator>
+ <disk type='block' device='disk'>
+ <driver name='phy'/>
+ <source dev='/dev/HostVG/XenGuest2'/>
+ <target dev='hda'/>
+ </disk>
+ <disk type='file' device='cdrom'>
+ <driver name='file'/>
+ <source file='/root/boot.iso'/>
+ <target dev='hdc'/>
+ <readonly/>
+ </disk>
+ <interface type='bridge'>
+ <mac address='00:16:3E:66:92:9C'/>
+ <source bridge='xenbr1'/>
+ </interface>
+ <graphics type='vnc' port='-1' listen='127.0.0.1' passwd='123poi'/>
+ </devices>
+</domain>
void *old_priv;
struct _xenUnifiedPrivate priv;
- conn = virConnectOpen("test:///default");
+ conn = virConnectOpenReadOnly("test:///default");
if (!conn) goto fail;
old_priv = conn->privateData;
goto fail;
gotxmcfgPtr[wrote] = '\0';
- if (getenv("DEBUG_TESTS")) {
- printf("Expect %d '%s'\n", (int)strlen(xmcfgData), xmcfgData);
- printf("Actual %d '%s'\n", (int)strlen(gotxmcfgData), gotxmcfgData);
- }
- if (strcmp(xmcfgData, gotxmcfgData))
+ if (strcmp(xmcfgData, gotxmcfgData)) {
+ if (getenv("DEBUG_TESTS")) {
+ printf("Expect %d '%s'\n", (int)strlen(xmcfgData), xmcfgData);
+ printf("Actual %d '%s'\n", (int)strlen(gotxmcfgData), gotxmcfgData);
+ }
goto fail;
+ }
ret = 0;
void *old_priv;
struct _xenUnifiedPrivate priv;
- conn = virConnectOpen("test:///default");
+ conn = virConnectOpenReadOnly("test:///default");
if (!conn) goto fail;
old_priv = conn->privateData;
if (!(gotxml = xenXMDomainFormatXML(conn, conf)))
goto fail;
- if (getenv("DEBUG_TESTS")) {
- printf("Expect %d '%s'\n", (int)strlen(xmlData), xmlData);
- printf("Actual %d '%s'\n", (int)strlen(gotxml), gotxml);
- }
- if (strcmp(xmlData, gotxml))
+ if (strcmp(xmlData, gotxml)) {
+ if (getenv("DEBUG_TESTS")) {
+ printf("Expect %d '%s'\n", (int)strlen(xmlData), xmlData);
+ printf("Actual %d '%s'\n", (int)strlen(gotxml), gotxml);
+ }
goto fail;
+ }
ret = 0;
2);
}
+static int testCompareFullvirtClockUTCFormat(void *data ATTRIBUTE_UNUSED) {
+ return testCompareFormatXML("xmconfigdata/test-fullvirt-utc.cfg",
+ "xmconfigdata/test-fullvirt-utc.xml",
+ 2);
+}
+
+static int testCompareFullvirtClockUTCParse(void *data ATTRIBUTE_UNUSED) {
+ return testCompareParseXML("xmconfigdata/test-fullvirt-utc.cfg",
+ "xmconfigdata/test-fullvirt-utc.xml",
+ 2);
+}
+
+static int testCompareFullvirtClockLocaltimeFormat(void *data ATTRIBUTE_UNUSED) {
+ return testCompareFormatXML("xmconfigdata/test-fullvirt-localtime.cfg",
+ "xmconfigdata/test-fullvirt-localtime.xml",
+ 2);
+}
+static int testCompareFullvirtClockLocaltimeParse(void *data ATTRIBUTE_UNUSED) {
+ return testCompareParseXML("xmconfigdata/test-fullvirt-localtime.cfg",
+ "xmconfigdata/test-fullvirt-localtime.xml",
+ 2);
+}
+
int
main(int argc, char **argv)
exit(EXIT_FAILURE);
}
+ /* Config -> XML */
if (virtTestRun("Paravirt old PVFB (Format)",
1, testCompareParavirtOldPVFBFormat, NULL) != 0)
ret = -1;
-
if (virtTestRun("Paravirt new PVFB (Format)",
1, testCompareParavirtNewPVFBFormat, NULL) != 0)
ret = -1;
-
if (virtTestRun("Fullvirt old PVFB (Format)",
1, testCompareFullvirtOldCDROMFormat, NULL) != 0)
ret = -1;
-
if (virtTestRun("Fullvirt new PVFB (Format)",
1, testCompareFullvirtNewCDROMFormat, NULL) != 0)
ret = -1;
+ if (virtTestRun("Fullvirt clock Localtime (Format)",
+ 1, testCompareFullvirtClockLocaltimeFormat, NULL) != 0)
+ ret = -1;
+ if (virtTestRun("Fullvirt clock UTC (Format)",
+ 1, testCompareFullvirtClockUTCFormat, NULL) != 0)
+ ret = -1;
+ /* XML -> Config */
if (virtTestRun("Paravirt old PVFB (Parse)",
1, testCompareParavirtOldPVFBParse, NULL) != 0)
ret = -1;
if (virtTestRun("Fullvirt new PVFB (Parse)",
1, testCompareFullvirtNewCDROMParse, NULL) != 0)
ret = -1;
+ if (virtTestRun("Fullvirt clock Localtime (Parse)",
+ 1, testCompareFullvirtClockLocaltimeParse, NULL) != 0)
+ ret = -1;
+ if (virtTestRun("Fullvirt clock UTC (Parse)",
+ 1, testCompareFullvirtClockUTCParse, NULL) != 0)
+ ret = -1;
exit(ret==0 ? EXIT_SUCCESS : EXIT_FAILURE);
}
--- /dev/null
+(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(device_model '/usr/lib64/xen/bin/qemu-dm')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(vnc 1)(localtime 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
--- /dev/null
+<domain type='xen'>
+ <name>fvtest</name>
+ <uuid>b5d70dd275cdaca517769660b059d8bc</uuid>
+ <os>
+ <type>hvm</type>
+ <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <boot dev='hd'/>
+ </os>
+ <memory>409600</memory>
+ <vcpu>1</vcpu>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>restart</on_crash>
+ <features>
+ <acpi/>
+ </features>
+ <clock offset='localtime'/>
+ <devices>
+ <emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
+ <interface type='bridge'>
+ <source bridge='xenbr0'/>
+ <mac address='00:16:3e:1b:b1:47'/>
+ <script path='vif-bridge'/>
+ </interface>
+ <disk type='file' device='cdrom'>
+ <source file='/root/boot.iso'/>
+ <target dev='hdc'/>
+ <readonly/>
+ </disk>
+ <disk type='file'>
+ <source file='/root/foo.img'/>
+ <target dev='ioemu:hda'/>
+ </disk>
+ <graphics type='vnc' port='5917' keymap='ja'/>
+ </devices>
+</domain>
+
--- /dev/null
+(vm (name 'fvtest')(memory 400)(maxmem 400)(vcpus 1)(uuid 'b5d70dd275cdaca517769660b059d8bc')(on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')(image (hvm (kernel '/usr/lib/xen/boot/hvmloader')(device_model '/usr/lib64/xen/bin/qemu-dm')(vcpus 1)(boot c)(cdrom '/root/boot.iso')(acpi 1)(vnc 1)))(device (vbd (dev 'ioemu:hda')(uname 'file:/root/foo.img')(mode 'w')))(device (vif (mac '00:16:3e:1b:b1:47')(bridge 'xenbr0')(script 'vif-bridge')(type ioemu))))
\ No newline at end of file
--- /dev/null
+<domain type='xen'>
+ <name>fvtest</name>
+ <uuid>b5d70dd275cdaca517769660b059d8bc</uuid>
+ <os>
+ <type>hvm</type>
+ <loader>/usr/lib/xen/boot/hvmloader</loader>
+ <boot dev='hd'/>
+ </os>
+ <memory>409600</memory>
+ <vcpu>1</vcpu>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>restart</on_crash>
+ <features>
+ <acpi/>
+ </features>
+ <clock offset='utc'/>
+ <devices>
+ <emulator>/usr/lib64/xen/bin/qemu-dm</emulator>
+ <interface type='bridge'>
+ <source bridge='xenbr0'/>
+ <mac address='00:16:3e:1b:b1:47'/>
+ <script path='vif-bridge'/>
+ </interface>
+ <disk type='file' device='cdrom'>
+ <source file='/root/boot.iso'/>
+ <target dev='hdc'/>
+ <readonly/>
+ </disk>
+ <disk type='file'>
+ <source file='/root/foo.img'/>
+ <target dev='ioemu:hda'/>
+ </disk>
+ <graphics type='vnc' port='5917' keymap='ja'/>
+ </devices>
+</domain>
+
2);
}
+static int testCompareFVclockUTC(void *data ATTRIBUTE_UNUSED) {
+ return testCompareFiles("xml2sexprdata/xml2sexpr-fv-utc.xml",
+ "xml2sexprdata/xml2sexpr-fv-utc.sexpr",
+ "fvtest",
+ 1);
+}
+
+static int testCompareFVclockLocaltime(void *data ATTRIBUTE_UNUSED) {
+ return testCompareFiles("xml2sexprdata/xml2sexpr-fv-localtime.xml",
+ "xml2sexprdata/xml2sexpr-fv-localtime.sexpr",
+ "fvtest",
+ 1);
+}
+
int
main(int argc, char **argv)
1, testCompareNoSourceCDRom, NULL) != 0)
ret = -1;
+ if (virtTestRun("XML-2-SEXPR clock UTC",
+ 1, testCompareFVclockUTC, NULL) != 0)
+ ret = -1;
+
+ if (virtTestRun("XML-2-SEXPR clock Localtime",
+ 1, testCompareFVclockLocaltime, NULL) != 0)
+ ret = -1;
+
exit(ret==0 ? EXIT_SUCCESS : EXIT_FAILURE);
}