#include #include "testutils.h" #include "virfilewrapper.h" #define LIBVIRT_VIRRESCTRLPRIV_H_ALLOW #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; g_autofree char *system_dir = NULL; g_autofree char *resctrl_dir = NULL; g_autoptr(virResctrlAlloc) alloc = NULL; g_autofree char *schemata_str = NULL; g_autofree char *schemata_file = NULL; g_autoptr(virCaps) caps = NULL; system_dir = g_strdup_printf("%s/vircaps2xmldata/linux-%s/system", abs_srcdir, data->filename); resctrl_dir = g_strdup_printf("%s/vircaps2xmldata/linux-%s/resctrl", abs_srcdir, data->filename); schemata_file = g_strdup_printf("%s/virresctrldata/%s.schemata", abs_srcdir, data->filename); 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"); return -1; } alloc = virResctrlAllocGetUnused(caps->host.resctrl); virFileWrapperClearPrefixes(); if (!alloc) { if (data->fail) return 0; return -1; } else if (data->fail) { VIR_TEST_DEBUG("Error expected but there wasn't any."); return -1; } schemata_str = virResctrlAllocFormat(alloc); if (virTestCompareToFile(schemata_str, schemata_file) < 0) return -1; return 0; } 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 == 0 ? EXIT_SUCCESS : EXIT_FAILURE; } VIR_TEST_MAIN(mymain)