2011-05-26 21:45:41 +04:00
# include <config.h>
2013-04-16 17:41:44 +04:00
# include "testutils.h"
2011-05-26 21:45:41 +04:00
# ifdef WITH_OPENVZ
# include <stdio.h>
# include <string.h>
# include <unistd.h>
# include "internal.h"
2012-12-12 22:06:53 +04:00
# include "viralloc.h"
2011-05-26 21:45:41 +04:00
# include "openvz / openvz_conf.h"
2013-04-03 14:36:23 +04:00
# include "virstring.h"
2011-05-26 21:45:41 +04:00
2013-05-03 16:52:21 +04:00
# define VIR_FROM_THIS VIR_FROM_OPENVZ
2011-05-31 16:58:58 +04:00
static int
testLocateConfFile ( int vpsid ATTRIBUTE_UNUSED , char * * conffile ,
const char * ext ATTRIBUTE_UNUSED )
{
return virAsprintf ( conffile , " %s/openvzutilstest.conf " , abs_srcdir ) ;
}
2011-05-26 21:45:41 +04:00
struct testConfigParam {
const char * param ;
const char * value ;
int ret ;
} ;
static struct testConfigParam configParams [ ] = {
{ " OSTEMPLATE " , " rhel-5-lystor " , 1 } ,
{ " IP_ADDRESS " , " 194.44.18.88 " , 1 } ,
{ " THIS_PARAM_IS_MISSING " , NULL , 0 } ,
} ;
static int
testReadConfigParam ( const void * data ATTRIBUTE_UNUSED )
{
int result = - 1 ;
Convert 'int i' to 'size_t i' in tests/ files
Convert the type of loop iterators named 'i', 'j', k',
'ii', 'jj', 'kk', to be 'size_t' instead of 'int' or
'unsigned int', also santizing 'ii', 'jj', 'kk' to use
the normal 'i', 'j', 'k' naming
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2013-07-08 18:09:33 +04:00
size_t i ;
2011-05-26 21:45:41 +04:00
char * conf = NULL ;
char * value = NULL ;
2014-11-13 17:20:43 +03:00
if ( virAsprintf ( & conf , " %s/openvzutilstest.conf " , abs_srcdir ) < 0 )
2011-05-26 21:45:41 +04:00
return - 1 ;
for ( i = 0 ; i < ARRAY_CARDINALITY ( configParams ) ; + + i ) {
if ( openvzReadConfigParam ( conf , configParams [ i ] . param ,
& value ) ! = configParams [ i ] . ret ) {
goto cleanup ;
}
2014-11-13 17:20:43 +03:00
if ( configParams [ i ] . ret ! = 1 )
2011-05-26 21:45:41 +04:00
continue ;
if ( STRNEQ ( configParams [ i ] . value , value ) ) {
2016-05-26 18:01:51 +03:00
virTestDifference ( stderr , configParams [ i ] . value , value ) ;
2011-05-26 21:45:41 +04:00
goto cleanup ;
}
}
result = 0 ;
2014-03-25 10:53:44 +04:00
cleanup :
2011-05-26 21:45:41 +04:00
VIR_FREE ( conf ) ;
VIR_FREE ( value ) ;
return result ;
}
2011-05-31 16:58:58 +04:00
static int
testReadNetworkConf ( const void * data ATTRIBUTE_UNUSED )
{
int result = - 1 ;
virDomainDefPtr def = NULL ;
char * actual = NULL ;
const char * expected =
" <domain type='openvz'> \n "
" <uuid>00000000-0000-0000-0000-000000000000</uuid> \n "
2012-02-23 04:48:38 +04:00
" <memory unit='KiB'>0</memory> \n "
" <currentMemory unit='KiB'>0</currentMemory> \n "
2012-05-08 20:04:36 +04:00
" <vcpu placement='static'>0</vcpu> \n "
2011-05-31 16:58:58 +04:00
" <os> \n "
" <type>exe</type> \n "
" <init>/sbin/init</init> \n "
" </os> \n "
" <clock offset='utc'/> \n "
" <on_poweroff>destroy</on_poweroff> \n "
" <on_reboot>destroy</on_reboot> \n "
" <on_crash>destroy</on_crash> \n "
" <devices> \n "
" <interface type='ethernet'> \n "
" <mac address='00:00:00:00:00:00'/> \n "
2014-07-22 13:09:48 +04:00
" <ip address='194.44.18.88' family='ipv4'/> \n "
2011-05-31 16:58:58 +04:00
" </interface> \n "
" <interface type='bridge'> \n "
" <mac address='00:18:51:c1:05:ee'/> \n "
" <target dev='veth105.10'/> \n "
" </interface> \n "
" </devices> \n "
" </domain> \n " ;
2015-02-16 18:30:11 +03:00
if ( ! ( def = virDomainDefNew ( ) ) | |
2013-05-03 16:52:21 +04:00
VIR_STRDUP ( def - > os . init , " /sbin/init " ) < 0 )
2011-05-31 16:58:58 +04:00
goto cleanup ;
def - > virtType = VIR_DOMAIN_VIRT_OPENVZ ;
2015-04-17 03:11:06 +03:00
def - > os . type = VIR_DOMAIN_OSTYPE_EXE ;
2011-05-31 16:58:58 +04:00
if ( openvzReadNetworkConf ( def , 1 ) < 0 ) {
2016-05-19 22:10:18 +03:00
fprintf ( stderr , " ERROR: %s \n " , virGetLastErrorMessage ( ) ) ;
2011-05-31 16:58:58 +04:00
goto cleanup ;
}
2016-02-04 00:40:35 +03:00
actual = virDomainDefFormat ( def , NULL , VIR_DOMAIN_DEF_FORMAT_INACTIVE ) ;
2011-05-31 16:58:58 +04:00
if ( actual = = NULL ) {
2016-05-19 22:10:18 +03:00
fprintf ( stderr , " ERROR: %s \n " , virGetLastErrorMessage ( ) ) ;
2011-05-31 16:58:58 +04:00
goto cleanup ;
}
if ( STRNEQ ( expected , actual ) ) {
2016-05-26 18:01:51 +03:00
virTestDifference ( stderr , expected , actual ) ;
2011-05-31 16:58:58 +04:00
goto cleanup ;
}
result = 0 ;
2014-03-25 10:53:44 +04:00
cleanup :
2011-05-31 16:58:58 +04:00
VIR_FREE ( actual ) ;
virDomainDefFree ( def ) ;
return result ;
}
2011-05-26 21:45:41 +04:00
static int
mymain ( void )
{
int result = 0 ;
2011-05-31 16:58:58 +04:00
openvzLocateConfFile = testLocateConfFile ;
2011-05-26 21:45:41 +04:00
# define DO_TEST(_name) \
do { \
2016-05-26 18:01:50 +03:00
if ( virTestRun ( " OpenVZ " # _name , test # # _name , \
2011-05-26 21:45:41 +04:00
NULL ) < 0 ) { \
result = - 1 ; \
} \
} while ( 0 )
DO_TEST ( ReadConfigParam ) ;
2011-05-31 16:58:58 +04:00
DO_TEST ( ReadNetworkConf ) ;
2011-05-26 21:45:41 +04:00
return result = = 0 ? EXIT_SUCCESS : EXIT_FAILURE ;
}
VIRT_TEST_MAIN ( mymain )
# else
int main ( void )
{
return EXIT_AM_SKIP ;
}
# endif /* WITH_OPENVZ */