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>
---
tests/libxlmock.c | 15 +++++++++++++++
tests/libxlxml2domconfigdata/vnuma-hvm.json | 5 +++++
2 files changed, 20 insertions(+)
diff --git a/tests/libxlmock.c b/tests/libxlmock.c
index 4754597e5b..205d34df19 100644
--- a/tests/libxlmock.c
+++ b/tests/libxlmock.c
@@ -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,
diff --git a/tests/libxlxml2domconfigdata/vnuma-hvm.json b/tests/libxlxml2domconfigdata/vnuma-hvm.json
index 2556c82d5f..c90ee823a4 100644
--- a/tests/libxlxml2domconfigdata/vnuma-hvm.json
+++ b/tests/libxlxml2domconfigdata/vnuma-hvm.json
@@ -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
]
--
2.37.3
On 11/11/22 03:25, Jim Fehlig wrote: > 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> > --- > tests/libxlmock.c | 15 +++++++++++++++ > tests/libxlxml2domconfigdata/vnuma-hvm.json | 5 +++++ > 2 files changed, 20 insertions(+) > > diff --git a/tests/libxlmock.c b/tests/libxlmock.c > index 4754597e5b..205d34df19 100644 > --- a/tests/libxlmock.c > +++ b/tests/libxlmock.c > @@ -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, > diff --git a/tests/libxlxml2domconfigdata/vnuma-hvm.json b/tests/libxlxml2domconfigdata/vnuma-hvm.json > index 2556c82d5f..c90ee823a4 100644 > --- a/tests/libxlxml2domconfigdata/vnuma-hvm.json > +++ b/tests/libxlxml2domconfigdata/vnuma-hvm.json > @@ -39,6 +39,7 @@ > 41, > 51 > ], > + "pnode": 1, These look misaligned... and in fact they are, because you've used TABs. Can you please switch to spaces? Reviewed-by: Michal Privoznik <mprivozn@redhat.com> Michal
On 11/11/22 02:09, Michal Prívozník wrote: > On 11/11/22 03:25, Jim Fehlig wrote: >> 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> >> --- >> tests/libxlmock.c | 15 +++++++++++++++ >> tests/libxlxml2domconfigdata/vnuma-hvm.json | 5 +++++ >> 2 files changed, 20 insertions(+) >> >> diff --git a/tests/libxlmock.c b/tests/libxlmock.c >> index 4754597e5b..205d34df19 100644 >> --- a/tests/libxlmock.c >> +++ b/tests/libxlmock.c >> @@ -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, >> diff --git a/tests/libxlxml2domconfigdata/vnuma-hvm.json b/tests/libxlxml2domconfigdata/vnuma-hvm.json >> index 2556c82d5f..c90ee823a4 100644 >> --- a/tests/libxlxml2domconfigdata/vnuma-hvm.json >> +++ b/tests/libxlxml2domconfigdata/vnuma-hvm.json >> @@ -39,6 +39,7 @@ >> 41, >> 51 >> ], >> + "pnode": 1, > > These look misaligned... and in fact they are, because you've used TABs. > Can you please switch to spaces? Opps. I changed all the offending lines before pushing. > Reviewed-by: Michal Privoznik <mprivozn@redhat.com> Thanks! Jim
© 2016 - 2024 Red Hat, Inc.