tests: Fix libxlxml2domconfigtest

Downstream CI recently encountered failures of libxlxml2domconfigtest when
building libvirt packages against Xen 4.17 rc3 packages. The test fails on
vnuma_hvm config, where suddently the actual json produced by
libxl_domain_config_to_json() contains a 'pnode' entry in the 'vnuma_nodes'
list, which is absent in the expected json. It appears the test has thus far
passed by luck. E.g. I was able to make the test pass in the failing
environment by changing the meson buildtype from debugoptimized to debug.

When a VM config contains vnuma settings, libxlMakeVnumaList() checks if the
number of requested vnuma nodes exceeds the number of physical nodes. The
number of physical nodes is retrieved with libxl_get_physinfo(), which can
return wildly different results in the context of unit tests. This change
mocks libxl_get_physinfo() to return consistent results. All fields of the
libxl_physinfo struct are set to 0 except nr_nodes, which is set to 6 to
ensure the vnuma_hvm configuration is properly tested.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Jim Fehlig 2022-11-10 17:55:38 -07:00
parent ddb1bc0519
commit f81ee7b549
2 changed files with 20 additions and 0 deletions

View File

@ -70,6 +70,21 @@ VIR_MOCK_IMPL_RET_ARGS(libxl_get_version_info,
return &info;
}
VIR_MOCK_IMPL_RET_ARGS(libxl_get_physinfo,
int,
libxl_ctx *, ctx,
libxl_physinfo *, physinfo)
{
memset(physinfo, 0, sizeof(*physinfo));
physinfo->nr_nodes = 6;
/* silence gcc warning about unused function */
if (0)
real_libxl_get_physinfo(ctx, physinfo);
return 0;
}
VIR_MOCK_STUB_RET_ARGS(libxl_get_free_memory,
int, 0,
libxl_ctx *, ctx,

View File

@ -39,6 +39,7 @@
41,
51
],
"pnode": 1,
"vcpus": [
1
]
@ -53,6 +54,7 @@
31,
41
],
"pnode": 2,
"vcpus": [
2
]
@ -67,6 +69,7 @@
21,
31
],
"pnode": 3,
"vcpus": [
3
]
@ -81,6 +84,7 @@
10,
21
],
"pnode": 4,
"vcpus": [
4
]
@ -95,6 +99,7 @@
21,
10
],
"pnode": 5,
"vcpus": [
5
]