2008-01-29 21:15:54 +03:00
# include <config.h>
2007-12-07 13:08:06 +03:00
2006-09-21 13:15:33 +04:00
# include <stdio.h>
# include <stdlib.h>
2011-11-19 01:21:54 +04:00
# include <sys/utsname.h>
2007-12-07 17:38:34 +03:00
2007-03-07 00:55:44 +03:00
# include "internal.h"
2011-07-08 01:53:41 +04:00
# include "testutils.h"
2012-12-12 20:27:01 +04:00
# include "vircommand.h"
2006-11-09 13:14:01 +03:00
2007-03-07 00:55:44 +03:00
static void errorHandler ( void * userData ATTRIBUTE_UNUSED ,
2008-04-10 20:54:54 +04:00
virErrorPtr error ATTRIBUTE_UNUSED ) {
2006-11-09 13:14:01 +03:00
}
2006-09-21 13:15:33 +04:00
2011-07-09 13:50:38 +04:00
static int
mymain ( void )
{
2006-09-21 13:15:33 +04:00
int id = 0 ;
2006-11-09 13:14:01 +03:00
int ro = 0 ;
2006-09-21 13:15:33 +04:00
virConnectPtr conn ;
virDomainPtr dom ;
2011-07-08 01:53:41 +04:00
int status ;
virCommandPtr cmd ;
2011-11-19 01:21:54 +04:00
struct utsname ut ;
2011-07-08 01:53:41 +04:00
2011-11-19 01:21:54 +04:00
/* Skip test if xend is not running. Calling xend on a non-xen
kernel causes some versions of xend to issue a crash report , so
we first probe uname results . */
uname ( & ut ) ;
if ( strstr ( ut . release , " xen " ) = = NULL )
return EXIT_AM_SKIP ;
2011-07-08 01:53:41 +04:00
cmd = virCommandNewArgList ( " /usr/sbin/xend " , " status " , NULL ) ;
if ( virCommandRun ( cmd , & status ) ! = 0 | | status ! = 0 ) {
virCommandFree ( cmd ) ;
return EXIT_AM_SKIP ;
}
virCommandFree ( cmd ) ;
2006-09-21 13:15:33 +04:00
2006-11-09 13:14:01 +03:00
virSetErrorFunc ( NULL , errorHandler ) ;
conn = virConnectOpen ( NULL ) ;
if ( conn = = NULL ) {
ro = 1 ;
2008-04-10 20:54:54 +04:00
conn = virConnectOpenReadOnly ( NULL ) ;
2006-11-09 13:14:01 +03:00
}
2006-09-21 13:15:33 +04:00
if ( conn = = NULL ) {
fprintf ( stderr , " First virConnectOpen() failed \n " ) ;
2011-07-09 13:50:38 +04:00
return EXIT_FAILURE ;
2006-09-21 13:15:33 +04:00
}
dom = virDomainLookupByID ( conn , id ) ;
if ( dom = = NULL ) {
fprintf ( stderr , " First lookup for domain %d failed \n " , id ) ;
2011-07-09 13:50:38 +04:00
return EXIT_FAILURE ;
2006-09-21 13:15:33 +04:00
}
virDomainFree ( dom ) ;
virConnectClose ( conn ) ;
2006-11-09 13:14:01 +03:00
if ( ro = = 1 )
2008-04-10 20:54:54 +04:00
conn = virConnectOpenReadOnly ( NULL ) ;
2006-11-09 13:14:01 +03:00
else
2008-04-10 20:54:54 +04:00
conn = virConnectOpen ( NULL ) ;
2006-09-21 13:15:33 +04:00
if ( conn = = NULL ) {
fprintf ( stderr , " Second virConnectOpen() failed \n " ) ;
2011-07-09 13:50:38 +04:00
return EXIT_FAILURE ;
2006-09-21 13:15:33 +04:00
}
dom = virDomainLookupByID ( conn , id ) ;
if ( dom = = NULL ) {
fprintf ( stderr , " Second lookup for domain %d failed \n " , id ) ;
2011-07-09 13:50:38 +04:00
return EXIT_FAILURE ;
2006-09-21 13:15:33 +04:00
}
virDomainFree ( dom ) ;
virConnectClose ( conn ) ;
2008-02-05 22:27:37 +03:00
2011-07-09 13:50:38 +04:00
return EXIT_SUCCESS ;
2006-09-21 13:15:33 +04:00
}
2011-07-09 13:50:38 +04:00
VIRT_TEST_MAIN ( mymain )