2017-11-11 11:13:08 +03:00
# include <config.h>
# include "testutils.h"
# include "virfilewrapper.h"
2018-12-13 17:53:50 +03:00
# define LIBVIRT_VIRRESCTRLPRIV_H_ALLOW
2017-11-11 11:13:08 +03:00
# include "virresctrlpriv.h"
# define VIR_FROM_THIS VIR_FROM_NONE
struct virResctrlData {
const char * filename ;
bool fail ;
} ;
static int
test_virResctrlGetUnused ( const void * opaque )
{
struct virResctrlData * data = ( struct virResctrlData * ) opaque ;
char * system_dir = NULL ;
char * resctrl_dir = NULL ;
int ret = - 1 ;
virResctrlAllocPtr alloc = NULL ;
char * schemata_str = NULL ;
char * schemata_file ;
virCapsPtr caps = NULL ;
2019-10-22 16:26:14 +03:00
system_dir = g_strdup_printf ( " %s/vircaps2xmldata/linux-%s/system " , abs_srcdir ,
data - > filename ) ;
2017-11-11 11:13:08 +03:00
2019-10-22 16:26:14 +03:00
resctrl_dir = g_strdup_printf ( " %s/vircaps2xmldata/linux-%s/resctrl " ,
abs_srcdir , data - > filename ) ;
2017-11-11 11:13:08 +03:00
2019-10-22 16:26:14 +03:00
schemata_file = g_strdup_printf ( " %s/virresctrldata/%s.schemata " , abs_srcdir ,
data - > filename ) ;
2017-11-11 11:13:08 +03:00
virFileWrapperAddPrefix ( " /sys/devices/system " , system_dir ) ;
virFileWrapperAddPrefix ( " /sys/fs/resctrl " , resctrl_dir ) ;
caps = virCapabilitiesNew ( VIR_ARCH_X86_64 , false , false ) ;
if ( ! caps | | virCapabilitiesInitCaches ( caps ) < 0 ) {
fprintf ( stderr , " Could not initialize capabilities " ) ;
goto cleanup ;
}
alloc = virResctrlAllocGetUnused ( caps - > host . resctrl ) ;
virFileWrapperClearPrefixes ( ) ;
if ( ! alloc ) {
if ( data - > fail )
ret = 0 ;
goto cleanup ;
} else if ( data - > fail ) {
2019-05-03 11:31:02 +03:00
VIR_TEST_DEBUG ( " Error expected but there wasn't any. " ) ;
2017-11-11 11:13:08 +03:00
ret = - 1 ;
goto cleanup ;
}
schemata_str = virResctrlAllocFormat ( alloc ) ;
if ( virTestCompareToFile ( schemata_str , schemata_file ) < 0 )
goto cleanup ;
ret = 0 ;
cleanup :
virObjectUnref ( caps ) ;
virObjectUnref ( alloc ) ;
VIR_FREE ( system_dir ) ;
VIR_FREE ( resctrl_dir ) ;
VIR_FREE ( schemata_str ) ;
VIR_FREE ( schemata_file ) ;
return ret ;
}
static int
mymain ( void )
{
struct virResctrlData data = { 0 } ;
int ret = 0 ;
# define DO_TEST_UNUSED(_filename) \
do { \
data = ( struct virResctrlData ) { . filename = _filename } ; \
if ( virTestRun ( " Free: " _filename , test_virResctrlGetUnused , & data ) < 0 ) \
ret = - 1 ; \
} while ( 0 )
DO_TEST_UNUSED ( " resctrl " ) ;
DO_TEST_UNUSED ( " resctrl-cdp " ) ;
DO_TEST_UNUSED ( " resctrl-skx " ) ;
DO_TEST_UNUSED ( " resctrl-skx-twocaches " ) ;
return ret ;
}
VIR_TEST_MAIN ( mymain )