From 441246297ed3eabc2218a9a9395c34837f96f0a8 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Thu, 24 Aug 2006 15:05:19 +0000 Subject: [PATCH] Added tests for the SEXPR<->XML conversion process --- ChangeLog | 10 ++++++ src/xend_internal.c | 14 ++++++++ src/xend_internal.h | 2 ++ src/xs_internal.c | 2 +- tests/.cvsignore | 2 ++ tests/Makefile.am | 16 ++++++++- tests/sexpr2xml-fv.sexpr | 1 + tests/sexpr2xml-fv.xml | 35 ++++++++++++++++++ tests/sexpr2xml-pv.sexpr | 2 ++ tests/sexpr2xml-pv.xml | 21 +++++++++++ tests/sexpr2xmltest.c | 71 +++++++++++++++++++++++++++++++++++++ tests/testutils.c | 33 +++++++++++++++++ tests/testutils.h | 3 ++ tests/xml2sexpr-fv.sexpr | 1 + tests/xml2sexpr-fv.xml | 36 +++++++++++++++++++ tests/xml2sexpr-pv.sexpr | 1 + tests/xml2sexpr-pv.xml | 23 ++++++++++++ tests/xml2sexprtest.c | 76 ++++++++++++++++++++++++++++++++++++++++ 18 files changed, 347 insertions(+), 2 deletions(-) create mode 100644 tests/sexpr2xml-fv.sexpr create mode 100644 tests/sexpr2xml-fv.xml create mode 100644 tests/sexpr2xml-pv.sexpr create mode 100644 tests/sexpr2xml-pv.xml create mode 100644 tests/sexpr2xmltest.c create mode 100644 tests/xml2sexpr-fv.sexpr create mode 100644 tests/xml2sexpr-fv.xml create mode 100644 tests/xml2sexpr-pv.sexpr create mode 100644 tests/xml2sexpr-pv.xml create mode 100644 tests/xml2sexprtest.c diff --git a/ChangeLog b/ChangeLog index e1f5884c6e..4836113979 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +Thu Aug 24 10:04:02 EDT 2006 Daniel Berrange + + * tests/xml2sexpr.c, tests/sexpr2xml.c: New tests suites for + validating the SEXPR<->XML conversion + * tests/*.sexpr, tests/*.xml: Data files for test suite + * src/xend_internal.h, src/xend_internal.c: Expose the method + for converting SEXPR -> XML to allow use by unit tests + * src/xs_internal.c: Check if connection is NULL before + deferencing it - test suite passes in NULL. + Mon Aug 21 13:00:03 EDT 2006 Daniel Berrange * src/virsh.c: check return code of virConnectListDomains in case diff --git a/src/xend_internal.c b/src/xend_internal.c index 10826d8495..c398797a9c 100644 --- a/src/xend_internal.c +++ b/src/xend_internal.c @@ -1655,6 +1655,20 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root) return (NULL); } +char * +xend_parse_domain_sexp(virConnectPtr conn, char *sexpr) { + struct sexpr *root = string2sexpr(sexpr); + char *data; + + if (!root) + return NULL; + + data = xend_parse_sexp_desc(conn, root); + + sexpr_free(root); + + return data; +} /** * sexpr_to_xend_domain_info: diff --git a/src/xend_internal.h b/src/xend_internal.h index 5b7f05df3c..eff24628b2 100644 --- a/src/xend_internal.h +++ b/src/xend_internal.h @@ -613,6 +613,8 @@ char *xenDaemonDomainDumpXMLByID(virConnectPtr xend, */ int xend_log(virConnectPtr xend, char *buffer, size_t n_buffer); + char *xend_parse_domain_sexp(virConnectPtr conn, char *root); + /* refactored ones */ void xenDaemonRegister(void); int xenDaemonOpen(virConnectPtr conn, const char *name, int flags); diff --git a/src/xs_internal.c b/src/xs_internal.c index 6a5ea03829..241cb7f763 100644 --- a/src/xs_internal.c +++ b/src/xs_internal.c @@ -148,7 +148,7 @@ virDomainDoStoreQuery(virConnectPtr conn, int domid, const char *path) char s[256]; unsigned int len = 0; - if (conn->xshandle == NULL) + if (!conn || conn->xshandle == NULL) return (NULL); snprintf(s, 255, "/local/domain/%d/%s", domid, path); diff --git a/tests/.cvsignore b/tests/.cvsignore index e431d7cdd4..fe457ec66a 100644 --- a/tests/.cvsignore +++ b/tests/.cvsignore @@ -3,3 +3,5 @@ Makefile.in .deps .libs xmlrpctest +sexpr2xmltest +xml2sexprtest diff --git a/tests/Makefile.am b/tests/Makefile.am index b98e394f46..505ac30e2b 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -16,7 +16,9 @@ LDADDS = \ EXTRA_DIST = xmlrpcserver.py -noinst_PROGRAMS = xmlrpctest +noinst_PROGRAMS = xmlrpctest xml2sexprtest sexpr2xmltest + +TESTS = xml2sexprtest sexpr2xmltest # Note: xmlrpc.[c|h] is not in libvirt yet xmlrpctest_SOURCES = \ @@ -28,5 +30,17 @@ xmlrpctest_SOURCES = \ xmlrpctest_LDFLAGS = xmlrpctest_LDADD = $(LDADDS) +xml2sexprtest_SOURCES = \ + xml2sexprtest.c \ + testutils.c testutils.h +xml2sexprtest_LDFLAGS = +xml2sexprtest_LDADD = $(LDADDS) + +sexpr2xmltest_SOURCES = \ + sexpr2xmltest.c \ + testutils.c testutils.h +sexpr2xmltest_LDFLAGS = +sexpr2xmltest_LDADD = $(LDADDS) + $(LIBVIRT): -@(cd $(top_builddir)/src && $(MAKE) MAKEFLAGS+=--silent) diff --git a/tests/sexpr2xml-fv.sexpr b/tests/sexpr2xml-fv.sexpr new file mode 100644 index 0000000000..4c5540f6ec --- /dev/null +++ b/tests/sexpr2xml-fv.sexpr @@ -0,0 +1 @@ +(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)))(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)))) diff --git a/tests/sexpr2xml-fv.xml b/tests/sexpr2xml-fv.xml new file mode 100644 index 0000000000..08a5ee179a --- /dev/null +++ b/tests/sexpr2xml-fv.xml @@ -0,0 +1,35 @@ + + fvtest + b5d70dd275cdaca517769660b059d8bc + + hvm + /usr/lib/xen/boot/hvmloader + + + 409600 + 1 + destroy + restart + restart + + + + + /usr/lib64/xen/bin/qemu-dm + + + + + + + +