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 ;
2021-09-04 23:37:31 +03:00
g_autofree char * system_dir = NULL ;
g_autofree char * resctrl_dir = NULL ;
2021-08-20 16:53:53 +03:00
g_autoptr ( virResctrlAlloc ) alloc = NULL ;
2021-09-04 23:37:31 +03:00
g_autofree char * schemata_str = NULL ;
g_autofree char * schemata_file = NULL ;
2021-08-20 16:53:53 +03:00
g_autoptr ( virCaps ) caps = NULL ;
2017-11-11 11:13:08 +03:00
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 " ) ;
2021-09-04 23:41:36 +03:00
return - 1 ;
2017-11-11 11:13:08 +03:00
}
alloc = virResctrlAllocGetUnused ( caps - > host . resctrl ) ;
virFileWrapperClearPrefixes ( ) ;
if ( ! alloc ) {
if ( data - > fail )
2021-09-04 23:41:36 +03:00
return 0 ;
return - 1 ;
2017-11-11 11:13:08 +03:00
} else if ( data - > fail ) {
2019-05-03 11:31:02 +03:00
VIR_TEST_DEBUG ( " Error expected but there wasn't any. " ) ;
2021-09-04 23:41:36 +03:00
return - 1 ;
2017-11-11 11:13:08 +03:00
}
schemata_str = virResctrlAllocFormat ( alloc ) ;
if ( virTestCompareToFile ( schemata_str , schemata_file ) < 0 )
2021-09-04 23:41:36 +03:00
return - 1 ;
2017-11-11 11:13:08 +03:00
2021-09-04 23:41:36 +03:00
return 0 ;
2017-11-11 11:13:08 +03:00
}
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 " ) ;
2021-05-16 19:14:53 +03:00
return ret = = 0 ? EXIT_SUCCESS : EXIT_FAILURE ;
2017-11-11 11:13:08 +03:00
}
VIR_TEST_MAIN ( mymain )