libvirt/tests/virresctrltest.c
Erik Skultety 5165ff0971 src: More cleanup of some system headers already contained in internal.h
All of the ones being removed are pulled in by internal.h. The only
exception is sanlock which expects the application to include <stdint.h>
before sanlock's headers, because sanlock prototypes use fixed width
int, but they don't include stdint.h themselves, so we have to leave
that one in place.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Acked-by: Michal Privoznik <mprivozn@redhat.com>
2018-09-20 10:16:39 +02:00

102 lines
2.4 KiB
C

#include <config.h>
#include "testutils.h"
#include "virfilewrapper.h"
#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;
if (virAsprintf(&system_dir, "%s/vircaps2xmldata/linux-%s/system",
abs_srcdir, data->filename) < 0)
goto cleanup;
if (virAsprintf(&resctrl_dir, "%s/vircaps2xmldata/linux-%s/resctrl",
abs_srcdir, data->filename) < 0)
goto cleanup;
if (virAsprintf(&schemata_file, "%s/virresctrldata/%s.schemata",
abs_srcdir, data->filename) < 0)
goto cleanup;
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) {
VIR_TEST_DEBUG("Error expected but there wasn't any.\n");
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)