* [PATCH RFC 0/2] dynamic timeout for tests @ 2023-11-07 9:49 Michael S. Tsirkin 2023-11-07 9:49 ` [PATCH RFC 1/2] osdep: add getloadavg Michael S. Tsirkin 2023-11-07 9:57 ` [PATCH RFC 0/2] dynamic timeout for tests Philippe Mathieu-Daudé 0 siblings, 2 replies; 5+ messages in thread From: Michael S. Tsirkin @ 2023-11-07 9:49 UTC (permalink / raw) To: qemu-devel; +Cc: stefanha so we keep making timeouts longer for CI but one has to stop somewhere. netdev socket test recently failed for me again even though it's at 2 minutes already. here's an experiment for netdev-socket. if this works well for a while we can generalize to other tests. Michael S. Tsirkin (2): osdep: add getloadavg netdev: set timeout depending on loadavg include/qemu/osdep.h | 10 ++++++++++ tests/qtest/netdev-socket.c | 28 +++++++++++++++++++++++++++- meson.build | 1 + 3 files changed, 38 insertions(+), 1 deletion(-) -- MST ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH RFC 1/2] osdep: add getloadavg 2023-11-07 9:49 [PATCH RFC 0/2] dynamic timeout for tests Michael S. Tsirkin @ 2023-11-07 9:49 ` Michael S. Tsirkin 2023-11-07 9:49 ` [PATCH RFC 2/2] netdev: set timeout depending on loadavg Michael S. Tsirkin 2023-11-07 9:57 ` [PATCH RFC 0/2] dynamic timeout for tests Philippe Mathieu-Daudé 1 sibling, 1 reply; 5+ messages in thread From: Michael S. Tsirkin @ 2023-11-07 9:49 UTC (permalink / raw) To: qemu-devel Cc: stefanha, Paolo Bonzini, Marc-André Lureau, Daniel P. Berrangé, Thomas Huth, Philippe Mathieu-Daudé getloadavg is supported on Linux, BSDs, Solaris. Following man page: RETURN VALUE If the load average was unobtainable, -1 is returned; otherwise, the number of samples actually retrieved is returned. accordingly, make stub for systems which don't support this function return -1 for consistency. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- include/qemu/osdep.h | 10 ++++++++++ meson.build | 1 + 2 files changed, 11 insertions(+) diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index 475a1c62ff..d30ba73eda 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -779,6 +779,16 @@ static inline int platform_does_not_support_system(const char *command) } #endif /* !HAVE_SYSTEM_FUNCTION */ +/** + * If the load average was unobtainable, -1 is returned + */ +#ifndef HAVE_GETLOADAVG_FUNCTION +static inline int getloadavg(double loadavg[], int nelem) +{ + return -1; +} +#endif /* !HAVE_GETLOADAVG_FUNCTION */ + #ifdef __cplusplus } #endif diff --git a/meson.build b/meson.build index dcef8b1e79..7f333cb80e 100644 --- a/meson.build +++ b/meson.build @@ -2254,6 +2254,7 @@ config_host_data.set('HAVE_GLIB_WITH_SLICE_ALLOCATOR', glib_has_gslice) config_host_data.set('HAVE_OPENPTY', cc.has_function('openpty', dependencies: util)) config_host_data.set('HAVE_STRCHRNUL', cc.has_function('strchrnul')) config_host_data.set('HAVE_SYSTEM_FUNCTION', cc.has_function('system', prefix: '#include <stdlib.h>')) +config_host_data.set('HAVE_GETLOADAVG_FUNCTION', cc.has_function('getloadavg', prefix: '#include <stdlib.h>')) if rbd.found() config_host_data.set('HAVE_RBD_NAMESPACE_EXISTS', cc.has_function('rbd_namespace_exists', -- MST ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH RFC 2/2] netdev: set timeout depending on loadavg 2023-11-07 9:49 ` [PATCH RFC 1/2] osdep: add getloadavg Michael S. Tsirkin @ 2023-11-07 9:49 ` Michael S. Tsirkin 0 siblings, 0 replies; 5+ messages in thread From: Michael S. Tsirkin @ 2023-11-07 9:49 UTC (permalink / raw) To: qemu-devel; +Cc: stefanha, Thomas Huth, Laurent Vivier, Paolo Bonzini netdev test keeps failing sometimes. I don't think we should increase the timeout some more: let's try something else instead, testing how busy the system is. Seems to work for me. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- tests/qtest/netdev-socket.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/tests/qtest/netdev-socket.c b/tests/qtest/netdev-socket.c index 7ba1eff120..bb99d08b5e 100644 --- a/tests/qtest/netdev-socket.c +++ b/tests/qtest/netdev-socket.c @@ -18,6 +18,32 @@ #define CONNECTION_TIMEOUT 120 +static double connection_timeout(void) +{ + double load; + int ret = getloadavg(&load, 1); + + /* + * If we can't get load data, or load is low because we just started + * running, assume load of 1 (we are alone in this system). + */ + if (ret < 1 || load < 1.0) { + load = 1.0; + } + /* + * No one wants to wait more than 10 minutes for this test. Higher load? + * Too bad. + */ + if (load > 10.0) { + fprintf(stderr, "Warning: load %f higher than 10 - test might timeout\n", + load); + load = 10.0; + } + + /* if load is high increase timeout as we might not get a chance to run */ + return load * CONNECTION_TIMEOUT; +} + #define EXPECT_STATE(q, e, t) \ do { \ char *resp = NULL; \ @@ -31,7 +57,7 @@ do { \ if (g_str_equal(resp, e)) { \ break; \ } \ - } while (g_test_timer_elapsed() < CONNECTION_TIMEOUT); \ + } while (g_test_timer_elapsed() < connection_timeout()); \ g_assert_cmpstr(resp, ==, e); \ g_free(resp); \ } while (0) -- MST ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH RFC 0/2] dynamic timeout for tests 2023-11-07 9:49 [PATCH RFC 0/2] dynamic timeout for tests Michael S. Tsirkin 2023-11-07 9:49 ` [PATCH RFC 1/2] osdep: add getloadavg Michael S. Tsirkin @ 2023-11-07 9:57 ` Philippe Mathieu-Daudé 2023-11-07 10:00 ` Michael S. Tsirkin 1 sibling, 1 reply; 5+ messages in thread From: Philippe Mathieu-Daudé @ 2023-11-07 9:57 UTC (permalink / raw) To: Michael S. Tsirkin, qemu-devel Cc: stefanha, Thomas Huth, Daniel P. Berrangé, Alex Bennée Hi Michael, On 7/11/23 10:49, Michael S. Tsirkin wrote: > so we keep making timeouts longer for CI but one has to stop > somewhere. netdev socket test recently failed for me again > even though it's at 2 minutes already. > here's an experiment for netdev-socket. > if this works well for a while we can generalize to other > tests. > > Michael S. Tsirkin (2): > osdep: add getloadavg > netdev: set timeout depending on loadavg The 2 problems I see with this approach are: - Machine load can vary *after* the test is started, - Test environment isn't really reproducible. Are those netdev tests only failing due to high load? Maybe we need to disable them on CI and run them manually... Regards, Phil. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH RFC 0/2] dynamic timeout for tests 2023-11-07 9:57 ` [PATCH RFC 0/2] dynamic timeout for tests Philippe Mathieu-Daudé @ 2023-11-07 10:00 ` Michael S. Tsirkin 0 siblings, 0 replies; 5+ messages in thread From: Michael S. Tsirkin @ 2023-11-07 10:00 UTC (permalink / raw) To: Philippe Mathieu-Daudé Cc: qemu-devel, stefanha, Thomas Huth, Daniel P. Berrangé, Alex Bennée On Tue, Nov 07, 2023 at 10:57:23AM +0100, Philippe Mathieu-Daudé wrote: > Hi Michael, > > On 7/11/23 10:49, Michael S. Tsirkin wrote: > > so we keep making timeouts longer for CI but one has to stop > > somewhere. netdev socket test recently failed for me again > > even though it's at 2 minutes already. > > here's an experiment for netdev-socket. > > if this works well for a while we can generalize to other > > tests. > > > > Michael S. Tsirkin (2): > > osdep: add getloadavg > > netdev: set timeout depending on loadavg > > The 2 problems I see with this approach are: > > - Machine load can vary *after* the test is started, Then it won't help. But better than increasing timeout all the time, no? > - Test environment isn't really reproducible. But then load intrinsically is. > Are those netdev tests only failing due to high load? yep > Maybe we need to disable them on CI and run them manually... > > Regards, > > Phil. Most of our tests are like this. -- MST ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-11-07 10:01 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-11-07 9:49 [PATCH RFC 0/2] dynamic timeout for tests Michael S. Tsirkin 2023-11-07 9:49 ` [PATCH RFC 1/2] osdep: add getloadavg Michael S. Tsirkin 2023-11-07 9:49 ` [PATCH RFC 2/2] netdev: set timeout depending on loadavg Michael S. Tsirkin 2023-11-07 9:57 ` [PATCH RFC 0/2] dynamic timeout for tests Philippe Mathieu-Daudé 2023-11-07 10:00 ` Michael S. Tsirkin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).