2006-08-24 19:05:19 +04:00
# include <stdio.h>
# include <string.h>
# include "xml.h"
# include "xend_internal.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 , int xendConfigVersion ) {
2006-08-24 19:05:19 +04:00
char xmlData [ MAX_FILE ] ;
char sexprData [ MAX_FILE ] ;
char * gotxml = 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
2006-09-12 05:16:22 +04:00
if ( ! ( gotxml = xend_parse_domain_sexp ( NULL , sexprData , 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 ( xmlData ) , xmlData ) ;
printf ( " Actual %d '%s' \n " , ( int ) strlen ( gotxml ) , gotxml ) ;
2006-08-24 19:05:19 +04:00
}
if ( strcmp ( xmlData , gotxml ) )
2006-10-06 19:32:48 +04:00
goto fail ;
2006-08-24 19:05:19 +04:00
2006-10-06 19:32:48 +04:00
ret = 0 ;
fail :
free ( gotxml ) ;
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 ( " sexpr2xmldata/sexpr2xml-pv.xml " ,
" sexpr2xmldata/sexpr2xml-pv.sexpr " ,
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 ( " sexpr2xmldata/sexpr2xml-fv.xml " ,
" sexpr2xmldata/sexpr2xml-fv.sexpr " ,
1 ) ;
}
static int testComparePVversion2 ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " sexpr2xmldata/sexpr2xml-pv.xml " ,
" sexpr2xmldata/sexpr2xml-pv.sexpr " ,
2 ) ;
}
static int testCompareFVversion2 ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " sexpr2xmldata/sexpr2xml-fv-v2.xml " ,
" sexpr2xmldata/sexpr2xml-fv-v2.sexpr " ,
2 ) ;
2006-08-24 19:05:19 +04:00
}
2006-10-09 18:32:07 +04:00
static int testCompareDiskFile ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " sexpr2xmldata/sexpr2xml-disk-file.xml " ,
" sexpr2xmldata/sexpr2xml-disk-file.sexpr " ,
1 ) ;
}
static int testCompareDiskBlock ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " sexpr2xmldata/sexpr2xml-disk-block.xml " ,
" sexpr2xmldata/sexpr2xml-disk-block.sexpr " ,
1 ) ;
}
static int testCompareDiskDrvBlktapQcow ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " sexpr2xmldata/sexpr2xml-disk-drv-blktap-qcow.xml " ,
" sexpr2xmldata/sexpr2xml-disk-drv-blktap-qcow.sexpr " ,
1 ) ;
}
static int testCompareDiskDrvBlktapRaw ( void * data ATTRIBUTE_UNUSED ) {
return testCompareFiles ( " sexpr2xmldata/sexpr2xml-disk-drv-blktap-raw.xml " ,
" sexpr2xmldata/sexpr2xml-disk-drv-blktap-raw.sexpr " ,
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
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 ( " SEXPR-2-XML PV config (version 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 ( " SEXPR-2-XML FV config (version 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
2006-10-09 18:32:07 +04:00
if ( virtTestRun ( " SEXPR-2-XML PV config (version 2) " ,
2006-09-12 05:16:22 +04:00
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 ( " SEXPR-2-XML FV config (version 2) " ,
2006-09-12 05:16:22 +04:00
1 , testCompareFVversion2 , NULL ) ! = 0 )
2006-10-09 18:32:07 +04:00
ret = - 1 ;
if ( virtTestRun ( " SEXPR-2-XML Disk File config " ,
1 , testCompareDiskFile , NULL ) ! = 0 )
ret = - 1 ;
if ( virtTestRun ( " SEXPR-2-XML Disk Block config " ,
1 , testCompareDiskBlock , NULL ) ! = 0 )
ret = - 1 ;
if ( virtTestRun ( " SEXPR-2-XML Disk Driver blktap qcow config " ,
1 , testCompareDiskDrvBlktapQcow , NULL ) ! = 0 )
ret = - 1 ;
if ( virtTestRun ( " SEXPR-2-XML Disk Driver blktap raw config " ,
1 , testCompareDiskDrvBlktapRaw , NULL ) ! = 0 )
ret = - 1 ;
2006-08-24 19:05:19 +04:00
exit ( ret = = 0 ? EXIT_SUCCESS : EXIT_FAILURE ) ;
}