2016-01-08 18:15:33 -05:00
# include <config.h>
# include <stdio.h>
# include <stdlib.h>
# include <unistd.h>
# include <string.h>
# include <sys/types.h>
# include <fcntl.h>
# include "testutils.h"
# include "internal.h"
# include "virstring.h"
# define VIR_FROM_THIS VIR_FROM_NONE
static virCapsPtr caps ;
static virDomainXMLOptionPtr xmlopt ;
struct testInfo {
const char * name ;
int different ;
bool inactive_only ;
2016-04-08 13:16:12 -04:00
testCompareDomXML2XMLResult expectResult ;
2016-01-08 18:15:33 -05:00
} ;
static int
testCompareXMLToXMLHelper ( const void * data )
{
const struct testInfo * info = data ;
char * xml_in = NULL ;
char * xml_out = NULL ;
int ret = - 1 ;
2017-12-05 08:00:41 +01:00
if ( virAsprintf ( & xml_in , " %s/genericxml2xmlindata/%s.xml " ,
2016-01-08 18:15:33 -05:00
abs_srcdir , info - > name ) < 0 | |
2017-12-05 08:00:41 +01:00
virAsprintf ( & xml_out , " %s/genericxml2xmloutdata/%s.xml " ,
2016-01-08 18:15:33 -05:00
abs_srcdir , info - > name ) < 0 )
goto cleanup ;
ret = testCompareDomXML2XMLFiles ( caps , xmlopt , xml_in ,
info - > different ? xml_out : xml_in ,
2018-03-02 16:58:50 +01:00
! info - > inactive_only , 0 ,
2016-04-08 13:16:12 -04:00
info - > expectResult ) ;
2016-01-08 18:15:33 -05:00
cleanup :
VIR_FREE ( xml_in ) ;
VIR_FREE ( xml_out ) ;
return ret ;
}
static int
mymain ( void )
{
int ret = 0 ;
if ( ! ( caps = virTestGenericCapsInit ( ) ) )
return EXIT_FAILURE ;
if ( ! ( xmlopt = virTestGenericDomainXMLConfInit ( ) ) )
return EXIT_FAILURE ;
2017-11-03 13:09:47 +01:00
# define DO_TEST_FULL(name, is_different, inactive, expectResult) \
do { \
const struct testInfo info = { name , is_different , inactive , \
expectResult } ; \
if ( virTestRun ( " GENERIC XML-2-XML " name , \
testCompareXMLToXMLHelper , & info ) < 0 ) \
ret = - 1 ; \
2016-01-08 18:15:33 -05:00
} while ( 0 )
# define DO_TEST(name) \
2016-04-08 13:16:12 -04:00
DO_TEST_FULL ( name , 0 , false , TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS )
2016-01-08 18:15:33 -05:00
# define DO_TEST_DIFFERENT(name) \
2016-04-08 13:16:12 -04:00
DO_TEST_FULL ( name , 1 , false , TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS )
2016-01-08 18:15:33 -05:00
DO_TEST_DIFFERENT ( " disk-virtio " ) ;
2016-04-25 17:10:30 +02:00
DO_TEST_DIFFERENT ( " graphics-vnc-minimal " ) ;
DO_TEST_DIFFERENT ( " graphics-vnc-manual-port " ) ;
DO_TEST_DIFFERENT ( " graphics-vnc-socket " ) ;
DO_TEST_DIFFERENT ( " graphics-vnc-socket-listen " ) ;
2016-04-08 13:16:12 -04:00
DO_TEST_DIFFERENT ( " graphics-listen-back-compat " ) ;
DO_TEST_FULL ( " graphics-listen-back-compat-mismatch " , 0 , false ,
TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE ) ;
2016-04-25 17:10:30 +02:00
DO_TEST_DIFFERENT ( " graphics-vnc-listen-attr-only " ) ;
DO_TEST_DIFFERENT ( " graphics-vnc-listen-element-minimal " ) ;
DO_TEST_DIFFERENT ( " graphics-vnc-listen-element-with-address " ) ;
2016-06-08 15:18:25 +02:00
DO_TEST_DIFFERENT ( " graphics-vnc-socket-attr-listen-address " ) ;
DO_TEST_DIFFERENT ( " graphics-vnc-socket-attr-listen-socket " ) ;
DO_TEST_FULL ( " graphics-vnc-socket-attr-listen-socket-mismatch " , 0 , false ,
TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE ) ;
2017-01-25 17:42:07 +01:00
DO_TEST ( " graphics-vnc-autoport-no " ) ;
2016-04-08 13:16:12 -04:00
2016-06-23 15:13:49 +02:00
DO_TEST_FULL ( " name-slash-fail " , 0 , false ,
2016-04-26 11:23:12 -04:00
TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE ) ;
2016-06-15 16:33:20 +02:00
DO_TEST ( " perf " ) ;
2016-08-02 17:58:43 +02:00
DO_TEST ( " vcpus-individual " ) ;
2017-04-24 15:56:31 +02:00
DO_TEST ( " disk-network-http " ) ;
2016-08-02 17:58:43 +02:00
2017-04-24 15:40:07 +02:00
DO_TEST ( " cpu-cache-emulate " ) ;
DO_TEST ( " cpu-cache-passthrough " ) ;
DO_TEST ( " cpu-cache-disable " ) ;
2017-08-17 12:45:48 +02:00
DO_TEST_DIFFERENT ( " chardev-tcp " ) ;
DO_TEST_FULL ( " chardev-tcp-missing-host " , 0 , false ,
TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE ) ;
DO_TEST_FULL ( " chardev-tcp-missing-service " , 0 , false ,
TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE ) ;
2017-08-18 17:14:34 +02:00
DO_TEST_FULL ( " chardev-tcp-multiple-source " , 0 , false ,
TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE ) ;
2017-08-17 14:26:36 +02:00
DO_TEST_DIFFERENT ( " chardev-udp " ) ;
DO_TEST_FULL ( " chardev-udp-missing-connect-service " , 0 , false ,
TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE ) ;
2017-08-18 17:14:34 +02:00
DO_TEST_FULL ( " chardev-udp-multiple-source " , 0 , false ,
TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE ) ;
2017-08-17 14:55:11 +02:00
DO_TEST_DIFFERENT ( " chardev-unix " ) ;
DO_TEST_FULL ( " chardev-unix-smartcard-missing-path " , 0 , false ,
TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE ) ;
DO_TEST_FULL ( " chardev-unix-redirdev-missing-path " , 0 , false ,
TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE ) ;
DO_TEST_FULL ( " chardev-unix-rng-missing-path " , 0 , false ,
TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE ) ;
2017-08-23 17:48:14 +02:00
DO_TEST_DIFFERENT ( " chardev-reconnect " ) ;
DO_TEST_FULL ( " chardev-reconnect-missing-timeout " , 0 , false ,
TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE ) ;
DO_TEST_FULL ( " chardev-reconnect-invalid-mode " , 0 , false ,
TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE ) ;
2017-08-17 12:45:48 +02:00
2017-11-10 14:47:05 +01:00
DO_TEST ( " cachetune " ) ;
DO_TEST ( " cachetune-small " ) ;
DO_TEST ( " cachetune-cdp " ) ;
2018-02-01 14:36:09 +01:00
DO_TEST_DIFFERENT ( " cachetune-extra-tunes " ) ;
2017-11-10 14:47:05 +01:00
DO_TEST_FULL ( " cachetune-colliding-allocs " , false , true ,
TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE ) ;
DO_TEST_FULL ( " cachetune-colliding-tunes " , false , true ,
TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE ) ;
DO_TEST_FULL ( " cachetune-colliding-types " , false , true ,
TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE ) ;
2018-05-10 21:32:26 +02:00
DO_TEST ( " tseg " ) ;
2018-06-08 09:40:56 -05:00
DO_TEST ( " launch-security-sev " ) ;
2016-01-08 18:15:33 -05:00
virObjectUnref ( caps ) ;
virObjectUnref ( xmlopt ) ;
return ret = = 0 ? EXIT_SUCCESS : EXIT_FAILURE ;
}
2017-03-29 16:45:42 +02:00
VIR_TEST_MAIN ( mymain )