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>
2006-08-24 19:05:19 +04:00
# include "xml.h"
# include "testutils.h"
# include "internal.h"
static char * progname ;
# define MAX_FILE 4096
2006-09-12 05:16:22 +04:00
static int testCompareFiles ( const char * xml , const char * sexpr , 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 ;
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
if ( getenv ( " DEBUG_TESTS " ) ) {
2006-09-14 19:34:50 +04:00
printf ( " Expect %d '%s' \n " , ( int ) strlen ( sexprData ) , sexprData ) ;
printf ( " Actual %d '%s' \n " , ( int ) strlen ( gotsexpr ) , gotsexpr ) ;
2006-08-24 19:05:19 +04:00
}
2007-04-11 20:06:30 +04:00
if ( strcmp ( sexprData , gotsexpr ) ) {
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
}
2006-09-12 05:16:22 +04:00
static int testComparePVversion1 ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " xml2sexprdata/xml2sexpr-pv.xml " ,
" xml2sexprdata/xml2sexpr-pv.sexpr " ,
" pvtest " ,
1 ) ;
2006-08-24 19:05:19 +04:00
}
2006-09-12 05:16:22 +04:00
static int testCompareFVversion1 ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " xml2sexprdata/xml2sexpr-fv.xml " ,
" xml2sexprdata/xml2sexpr-fv.sexpr " ,
" fvtest " ,
1 ) ;
}
static int testComparePVversion2 ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " xml2sexprdata/xml2sexpr-pv.xml " ,
" xml2sexprdata/xml2sexpr-pv.sexpr " ,
" pvtest " ,
2 ) ;
}
static int testCompareFVversion2 ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " xml2sexprdata/xml2sexpr-fv.xml " ,
" xml2sexprdata/xml2sexpr-fv-v2.sexpr " ,
" fvtest " ,
2 ) ;
2006-08-24 19:05:19 +04:00
}
2006-09-12 05:34:26 +04:00
static int testCompareFVversion2VNC ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " xml2sexprdata/xml2sexpr-fv-vncunused.xml " ,
2006-10-09 18:32:07 +04:00
" xml2sexprdata/xml2sexpr-fv-vncunused.sexpr " ,
" fvtest " ,
2 ) ;
}
2006-12-13 17:08:51 +03:00
static int testComparePVOrigVFB ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " xml2sexprdata/xml2sexpr-pv-vfb-orig.xml " ,
" xml2sexprdata/xml2sexpr-pv-vfb-orig.sexpr " ,
" pvtest " ,
2 ) ;
}
static int testComparePVNewVFB ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " xml2sexprdata/xml2sexpr-pv-vfb-new.xml " ,
" xml2sexprdata/xml2sexpr-pv-vfb-new.sexpr " ,
" pvtest " ,
3 ) ;
}
2007-06-07 17:50:18 +04:00
static int testComparePVBootloader ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " xml2sexprdata/xml2sexpr-pv-bootloader.xml " ,
" xml2sexprdata/xml2sexpr-pv-bootloader.sexpr " ,
" pvtest " ,
1 ) ;
}
2006-10-09 18:32:07 +04:00
static int testCompareDiskFile ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " xml2sexprdata/xml2sexpr-disk-file.xml " ,
" xml2sexprdata/xml2sexpr-disk-file.sexpr " ,
" pvtest " ,
2 ) ;
}
static int testCompareDiskBlock ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " xml2sexprdata/xml2sexpr-disk-block.xml " ,
" xml2sexprdata/xml2sexpr-disk-block.sexpr " ,
" pvtest " ,
2 ) ;
}
static int testCompareDiskDrvLoop ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " xml2sexprdata/xml2sexpr-disk-drv-loop.xml " ,
" xml2sexprdata/xml2sexpr-disk-drv-loop.sexpr " ,
" pvtest " ,
2 ) ;
}
static int testCompareDiskDrvBlkback ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " xml2sexprdata/xml2sexpr-disk-drv-blkback.xml " ,
" xml2sexprdata/xml2sexpr-disk-drv-blkback.sexpr " ,
" pvtest " ,
2 ) ;
}
static int testCompareDiskDrvBlktap ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " xml2sexprdata/xml2sexpr-disk-drv-blktap.xml " ,
" xml2sexprdata/xml2sexpr-disk-drv-blktap.sexpr " ,
" pvtest " ,
2 ) ;
}
static int testCompareDiskDrvBlktapQcow ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " xml2sexprdata/xml2sexpr-disk-drv-blktap-qcow.xml " ,
" xml2sexprdata/xml2sexpr-disk-drv-blktap-qcow.sexpr " ,
" pvtest " ,
2 ) ;
}
static int testCompareDiskDrvBlktapRaw ( void * data ATTRIBUTE_UNUSED ) {
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
}
2006-11-10 14:13:01 +03:00
static int testCompareMemoryResize ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " xml2sexprdata/xml2sexpr-curmem.xml " ,
" xml2sexprdata/xml2sexpr-curmem.sexpr " ,
" rhel5 " ,
2 ) ;
}
2006-11-15 03:38:13 +03:00
static int testCompareNetRouted ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " xml2sexprdata/xml2sexpr-net-routed.xml " ,
" xml2sexprdata/xml2sexpr-net-routed.sexpr " ,
" pvtest " ,
2 ) ;
}
static int testCompareNetBridged ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " xml2sexprdata/xml2sexpr-net-bridged.xml " ,
" xml2sexprdata/xml2sexpr-net-bridged.sexpr " ,
" pvtest " ,
2 ) ;
}
2007-04-11 20:06:30 +04:00
static int testCompareNoSourceCDRom ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " xml2sexprdata/xml2sexpr-no-source-cdrom.xml " ,
" xml2sexprdata/xml2sexpr-no-source-cdrom.sexpr " ,
" test " ,
2 ) ;
}
2007-07-17 01:30:30 +04:00
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 ) ;
}
2006-11-15 03:38:13 +03:00
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
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 ;
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-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 ) ;
}