2007-11-26 15:03:34 +03:00
# include "config.h"
2006-08-24 19:05:19 +04:00
# include <stdio.h>
# include <string.h>
2007-04-11 20:06:30 +04:00
# include <sys/types.h>
# include <fcntl.h>
2007-11-26 15:03:34 +03:00
# ifdef HAVE_SYS_SYSLIMITS_H
# include <sys/syslimits.h>
# endif
2006-08-24 19:05:19 +04:00
# include "xml.h"
# include "testutils.h"
# include "internal.h"
static char * progname ;
2007-11-14 13:35:58 +03:00
static char * abs_top_srcdir ;
2006-08-24 19:05:19 +04:00
# define MAX_FILE 4096
2007-11-14 13:35:58 +03:00
static int testCompareFiles ( const char * xml_rel , const char * sexpr_rel ,
const char * name , int xendConfigVersion ) {
2006-08-24 19:05:19 +04:00
char xmlData [ MAX_FILE ] ;
char sexprData [ MAX_FILE ] ;
char * gotname = NULL ;
char * gotsexpr = NULL ;
char * xmlPtr = & ( xmlData [ 0 ] ) ;
char * sexprPtr = & ( sexprData [ 0 ] ) ;
2006-10-06 19:32:48 +04:00
int ret = - 1 ;
2007-11-14 13:35:58 +03:00
char xml [ PATH_MAX ] ;
char sexpr [ PATH_MAX ] ;
snprintf ( xml , sizeof xml - 1 , " %s/tests/%s " , abs_top_srcdir , xml_rel ) ;
snprintf ( sexpr , sizeof sexpr - 1 , " %s/tests/%s " , abs_top_srcdir , sexpr_rel ) ;
2006-08-24 19:05:19 +04:00
if ( virtTestLoadFile ( xml , & xmlPtr , MAX_FILE ) < 0 )
2006-10-06 19:32:48 +04:00
goto fail ;
2006-08-24 19:05:19 +04:00
if ( virtTestLoadFile ( sexpr , & sexprPtr , MAX_FILE ) < 0 )
2006-10-06 19:32:48 +04:00
goto fail ;
2006-08-24 19:05:19 +04:00
2007-02-14 19:16:13 +03:00
if ( ! ( gotsexpr = virDomainParseXMLDesc ( NULL , xmlData , & gotname , xendConfigVersion ) ) )
2006-10-06 19:32:48 +04:00
goto fail ;
2006-08-24 19:05:19 +04:00
2007-04-11 20:06:30 +04:00
if ( strcmp ( sexprData , gotsexpr ) ) {
2007-07-19 01:08:22 +04:00
if ( getenv ( " DEBUG_TESTS " ) ) {
printf ( " Expect %d '%s' \n " , ( int ) strlen ( sexprData ) , sexprData ) ;
printf ( " Actual %d '%s' \n " , ( int ) strlen ( gotsexpr ) , gotsexpr ) ;
}
2007-04-11 20:06:30 +04:00
goto fail ;
}
2006-08-24 19:05:19 +04:00
2007-04-11 20:06:30 +04:00
if ( strcmp ( name , gotname ) ) {
printf ( " Got wrong name: expected %s, got %s \n " , name , gotname ) ;
goto fail ;
}
2006-08-24 19:05:19 +04:00
2006-10-06 19:32:48 +04:00
ret = 0 ;
fail :
free ( gotname ) ;
free ( gotsexpr ) ;
return ret ;
2006-08-24 19:05:19 +04:00
}
2007-07-19 01:13:26 +04:00
static int testComparePVversion1 ( const void * data ATTRIBUTE_UNUSED ) {
2006-09-12 05:16:22 +04:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-pv.xml " ,
" xml2sexprdata/xml2sexpr-pv.sexpr " ,
" pvtest " ,
1 ) ;
2006-08-24 19:05:19 +04:00
}
2007-07-19 01:13:26 +04:00
static int testCompareFVversion1 ( const void * data ATTRIBUTE_UNUSED ) {
2006-09-12 05:16:22 +04:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-fv.xml " ,
" xml2sexprdata/xml2sexpr-fv.sexpr " ,
" fvtest " ,
1 ) ;
}
2007-07-19 01:13:26 +04:00
static int testComparePVversion2 ( const void * data ATTRIBUTE_UNUSED ) {
2006-09-12 05:16:22 +04:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-pv.xml " ,
" xml2sexprdata/xml2sexpr-pv.sexpr " ,
" pvtest " ,
2 ) ;
}
2007-07-19 01:13:26 +04:00
static int testCompareFVversion2 ( const void * data ATTRIBUTE_UNUSED ) {
2006-09-12 05:16:22 +04:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-fv.xml " ,
" xml2sexprdata/xml2sexpr-fv-v2.sexpr " ,
" fvtest " ,
2 ) ;
2006-08-24 19:05:19 +04:00
}
2007-07-19 01:13:26 +04:00
static int testCompareFVversion2VNC ( const void * data ATTRIBUTE_UNUSED ) {
2006-09-12 05:34:26 +04:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-fv-vncunused.xml " ,
2006-10-09 18:32:07 +04:00
" xml2sexprdata/xml2sexpr-fv-vncunused.sexpr " ,
" fvtest " ,
2 ) ;
}
2007-07-19 01:13:26 +04:00
static int testComparePVOrigVFB ( const void * data ATTRIBUTE_UNUSED ) {
2006-12-13 17:08:51 +03:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-pv-vfb-orig.xml " ,
" xml2sexprdata/xml2sexpr-pv-vfb-orig.sexpr " ,
" pvtest " ,
2 ) ;
}
2007-07-19 01:13:26 +04:00
static int testComparePVNewVFB ( const void * data ATTRIBUTE_UNUSED ) {
2006-12-13 17:08:51 +03:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-pv-vfb-new.xml " ,
" xml2sexprdata/xml2sexpr-pv-vfb-new.sexpr " ,
" pvtest " ,
3 ) ;
}
2007-07-19 01:13:26 +04:00
static int testComparePVBootloader ( const void * data ATTRIBUTE_UNUSED ) {
2007-06-07 17:50:18 +04:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-pv-bootloader.xml " ,
" xml2sexprdata/xml2sexpr-pv-bootloader.sexpr " ,
" pvtest " ,
1 ) ;
}
2007-07-19 01:13:26 +04:00
static int testCompareDiskFile ( const void * data ATTRIBUTE_UNUSED ) {
2006-10-09 18:32:07 +04:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-disk-file.xml " ,
" xml2sexprdata/xml2sexpr-disk-file.sexpr " ,
" pvtest " ,
2 ) ;
}
2007-07-19 01:13:26 +04:00
static int testCompareDiskBlock ( const void * data ATTRIBUTE_UNUSED ) {
2006-10-09 18:32:07 +04:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-disk-block.xml " ,
" xml2sexprdata/xml2sexpr-disk-block.sexpr " ,
" pvtest " ,
2 ) ;
}
2007-11-20 13:05:45 +03:00
static int testCompareDiskShareable ( const void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " xml2sexprdata/xml2sexpr-disk-block-shareable.xml " ,
" xml2sexprdata/xml2sexpr-disk-block-shareable.sexpr " ,
" pvtest " ,
2 ) ;
}
2007-07-19 01:13:26 +04:00
static int testCompareDiskDrvLoop ( const void * data ATTRIBUTE_UNUSED ) {
2006-10-09 18:32:07 +04:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-disk-drv-loop.xml " ,
" xml2sexprdata/xml2sexpr-disk-drv-loop.sexpr " ,
" pvtest " ,
2 ) ;
}
2007-07-19 01:13:26 +04:00
static int testCompareDiskDrvBlkback ( const void * data ATTRIBUTE_UNUSED ) {
2006-10-09 18:32:07 +04:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-disk-drv-blkback.xml " ,
" xml2sexprdata/xml2sexpr-disk-drv-blkback.sexpr " ,
" pvtest " ,
2 ) ;
}
2007-07-19 01:13:26 +04:00
static int testCompareDiskDrvBlktap ( const void * data ATTRIBUTE_UNUSED ) {
2006-10-09 18:32:07 +04:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-disk-drv-blktap.xml " ,
" xml2sexprdata/xml2sexpr-disk-drv-blktap.sexpr " ,
" pvtest " ,
2 ) ;
}
2007-07-19 01:13:26 +04:00
static int testCompareDiskDrvBlktapQcow ( const void * data ATTRIBUTE_UNUSED ) {
2006-10-09 18:32:07 +04:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-disk-drv-blktap-qcow.xml " ,
" xml2sexprdata/xml2sexpr-disk-drv-blktap-qcow.sexpr " ,
" pvtest " ,
2 ) ;
}
2007-07-19 01:13:26 +04:00
static int testCompareDiskDrvBlktapRaw ( const void * data ATTRIBUTE_UNUSED ) {
2006-10-09 18:32:07 +04:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-disk-drv-blktap-raw.xml " ,
" xml2sexprdata/xml2sexpr-disk-drv-blktap-raw.sexpr " ,
" pvtest " ,
2 ) ;
2006-09-12 05:34:26 +04:00
}
2007-07-19 01:13:26 +04:00
static int testCompareMemoryResize ( const void * data ATTRIBUTE_UNUSED ) {
2006-11-10 14:13:01 +03:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-curmem.xml " ,
" xml2sexprdata/xml2sexpr-curmem.sexpr " ,
" rhel5 " ,
2 ) ;
}
2007-07-19 01:13:26 +04:00
static int testCompareNetRouted ( const void * data ATTRIBUTE_UNUSED ) {
2006-11-15 03:38:13 +03:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-net-routed.xml " ,
" xml2sexprdata/xml2sexpr-net-routed.sexpr " ,
" pvtest " ,
2 ) ;
}
2007-07-19 01:13:26 +04:00
static int testCompareNetBridged ( const void * data ATTRIBUTE_UNUSED ) {
2006-11-15 03:38:13 +03:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-net-bridged.xml " ,
" xml2sexprdata/xml2sexpr-net-bridged.sexpr " ,
" pvtest " ,
2 ) ;
}
2007-07-19 01:13:26 +04:00
static int testCompareNoSourceCDRom ( const void * data ATTRIBUTE_UNUSED ) {
2007-04-11 20:06:30 +04:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-no-source-cdrom.xml " ,
" xml2sexprdata/xml2sexpr-no-source-cdrom.sexpr " ,
" test " ,
2 ) ;
}
2007-07-19 01:13:26 +04:00
static int testCompareFVclockUTC ( const void * data ATTRIBUTE_UNUSED ) {
2007-07-17 01:30:30 +04:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-fv-utc.xml " ,
" xml2sexprdata/xml2sexpr-fv-utc.sexpr " ,
" fvtest " ,
1 ) ;
}
2007-07-19 01:13:26 +04:00
static int testCompareFVclockLocaltime ( const void * data ATTRIBUTE_UNUSED ) {
2007-07-17 01:30:30 +04:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-fv-localtime.xml " ,
" xml2sexprdata/xml2sexpr-fv-localtime.sexpr " ,
" fvtest " ,
1 ) ;
}
2006-11-15 03:38:13 +03:00
2007-07-19 01:13:26 +04:00
static int testCompareFVInputUSBMouse ( const void * data ATTRIBUTE_UNUSED ) {
2007-07-19 01:08:22 +04:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-fv-usbmouse.xml " ,
" xml2sexprdata/xml2sexpr-fv-usbmouse.sexpr " ,
" fvtest " ,
1 ) ;
}
2007-07-19 01:13:26 +04:00
static int testCompareFVInputUSBTablet ( const void * data ATTRIBUTE_UNUSED ) {
2007-07-19 01:08:22 +04:00
return testCompareFiles ( " xml2sexprdata/xml2sexpr-fv-usbtablet.xml " ,
" xml2sexprdata/xml2sexpr-fv-usbtablet.sexpr " ,
" fvtest " ,
1 ) ;
}
2006-08-24 19:05:19 +04:00
int
main ( int argc , char * * argv )
{
int ret = 0 ;
2006-10-09 18:32:07 +04:00
2006-08-24 19:05:19 +04:00
progname = argv [ 0 ] ;
2006-10-09 18:32:07 +04:00
2007-11-14 13:35:58 +03:00
abs_top_srcdir = getenv ( " abs_top_srcdir " ) ;
2007-11-20 13:05:45 +03:00
if ( ! abs_top_srcdir ) {
fprintf ( stderr , " missing enviroment variable abs_top_srcdir \n " ) ;
exit ( EXIT_FAILURE ) ;
}
2007-11-14 13:35:58 +03:00
2006-08-24 19:05:19 +04:00
if ( argc > 1 ) {
2006-10-09 18:32:07 +04:00
fprintf ( stderr , " Usage: %s \n " , progname ) ;
exit ( EXIT_FAILURE ) ;
2006-08-24 19:05:19 +04:00
}
2006-10-09 18:32:07 +04:00
if ( virtTestRun ( " XML-2-SEXPR PV config (format 1) " ,
2006-09-12 05:16:22 +04:00
1 , testComparePVversion1 , NULL ) ! = 0 )
2006-10-09 18:32:07 +04:00
ret = - 1 ;
2006-09-12 05:16:22 +04:00
2006-10-09 18:32:07 +04:00
if ( virtTestRun ( " XML-2-SEXPR FV config (format 1) " ,
2006-09-12 05:16:22 +04:00
1 , testCompareFVversion1 , NULL ) ! = 0 )
2006-10-09 18:32:07 +04:00
ret = - 1 ;
2006-09-12 05:16:22 +04:00
if ( virtTestRun ( " XML-2-SEXPR PV config (format 2) " ,
1 , testComparePVversion2 , NULL ) ! = 0 )
2006-10-09 18:32:07 +04:00
ret = - 1 ;
2006-08-24 19:05:19 +04:00
2006-10-09 18:32:07 +04:00
if ( virtTestRun ( " XML-2-SEXPR FV config (format 2) " ,
2006-09-12 05:16:22 +04:00
1 , testCompareFVversion2 , NULL ) ! = 0 )
2006-10-09 18:32:07 +04:00
ret = - 1 ;
2006-08-24 19:05:19 +04:00
2006-09-12 05:34:26 +04:00
if ( virtTestRun ( " XML-2-SEXPR FV config (format 2, VNC unused) " ,
2006-10-09 18:32:07 +04:00
1 , testCompareFVversion2VNC , NULL ) ! = 0 )
ret = - 1 ;
2006-12-13 17:08:51 +03:00
if ( virtTestRun ( " XML-2-SEXPR PV config (Orig VFB) " ,
1 , testComparePVOrigVFB , NULL ) ! = 0 )
ret = - 1 ;
if ( virtTestRun ( " XML-2-SEXPR PV config (New VFB) " ,
1 , testComparePVNewVFB , NULL ) ! = 0 )
ret = - 1 ;
2007-06-07 17:50:18 +04:00
if ( virtTestRun ( " XML-2-SEXPR PV config with bootloader " ,
1 , testComparePVBootloader , NULL ) ! = 0 )
ret = - 1 ;
2006-10-09 18:32:07 +04:00
if ( virtTestRun ( " XML-2-SEXPR Disk File " ,
1 , testCompareDiskFile , NULL ) ! = 0 )
ret = - 1 ;
if ( virtTestRun ( " XML-2-SEXPR Disk Block " ,
1 , testCompareDiskBlock , NULL ) ! = 0 )
ret = - 1 ;
2007-11-20 13:05:45 +03:00
if ( virtTestRun ( " XML-2-SEXPR Disk Shareable " ,
1 , testCompareDiskShareable , NULL ) ! = 0 )
ret = - 1 ;
2006-10-09 18:32:07 +04:00
if ( virtTestRun ( " XML-2-SEXPR Disk Drv Loop " ,
1 , testCompareDiskDrvLoop , NULL ) ! = 0 )
ret = - 1 ;
if ( virtTestRun ( " XML-2-SEXPR Disk Drv Blkback " ,
1 , testCompareDiskDrvBlkback , NULL ) ! = 0 )
ret = - 1 ;
if ( virtTestRun ( " XML-2-SEXPR Disk Drv Blktap " ,
1 , testCompareDiskDrvBlktap , NULL ) ! = 0 )
ret = - 1 ;
if ( virtTestRun ( " XML-2-SEXPR Disk Drv Blktap QCow " ,
1 , testCompareDiskDrvBlktapQcow , NULL ) ! = 0 )
ret = - 1 ;
if ( virtTestRun ( " XML-2-SEXPR Disk Drv Blktap Raw " ,
1 , testCompareDiskDrvBlktapRaw , NULL ) ! = 0 )
ret = - 1 ;
2006-11-10 14:13:01 +03:00
if ( virtTestRun ( " XML-2-SEXPR Memory Resize " ,
1 , testCompareMemoryResize , NULL ) ! = 0 )
ret = - 1 ;
2006-11-15 03:38:13 +03:00
if ( virtTestRun ( " XML-2-SEXPR Net Routed " ,
1 , testCompareNetRouted , NULL ) ! = 0 )
ret = - 1 ;
if ( virtTestRun ( " XML-2-SEXPR Net Bridged " ,
1 , testCompareNetBridged , NULL ) ! = 0 )
ret = - 1 ;
2006-09-12 05:34:26 +04:00
2007-04-11 20:06:30 +04:00
if ( virtTestRun ( " XML-2-SEXPR No Source CDRom " ,
1 , testCompareNoSourceCDRom , NULL ) ! = 0 )
ret = - 1 ;
2007-07-19 01:08:22 +04:00
if ( virtTestRun ( " XML-2-SEXPR FV usb mouse) " ,
1 , testCompareFVInputUSBMouse , NULL ) ! = 0 )
ret = - 1 ;
if ( virtTestRun ( " XML-2-SEXPR FV usb tablet) " ,
1 , testCompareFVInputUSBTablet , NULL ) ! = 0 )
ret = - 1 ;
2007-07-17 01:30:30 +04:00
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 ;
2006-08-24 19:05:19 +04:00
exit ( ret = = 0 ? EXIT_SUCCESS : EXIT_FAILURE ) ;
}