[PATCH 4/8] qemumonitortestutils: Make test monitor failures more prominent
Michal Privoznik
mprivozn at redhat.com
Fri Apr 24 14:40:03 UTC 2020
On 4/23/20 5:22 PM, Peter Krempa wrote:
> Until now we've tried to report errors from the test monitor code by
> passing them back as failures from the qemu we simulate. This doesn't
> work well in cases when the monitor logic does not detect failures or
> has fallback code. Additionally there isn't much use for continuing the
> test execution after first failure as in most cases the test data will
> be misaligned and all other calls will fail as well.
>
> To make the errors more obvious this patch moves away from reporting
> them via the simulated monitor to reporting them to stderr and
> exit()ing afterwards. While this might be less convenient
> when developing tests it actually makes failures in the test suite
> really obvious and doesn't require any opt-in from the tests themselves.
>
> Signed-off-by: Peter Krempa <pkrempa at redhat.com>
> ---
> build-aux/syntax-check.mk | 1 +
> tests/qemumonitortestutils.c | 121 +++++++++++++++++------------------
> 2 files changed, 61 insertions(+), 61 deletions(-)
>
> diff --git a/build-aux/syntax-check.mk b/build-aux/syntax-check.mk
> index cbcdf445aa..bf8832a2a5 100644
> --- a/build-aux/syntax-check.mk
> +++ b/build-aux/syntax-check.mk
> @@ -900,6 +900,7 @@ sc_flake8:
> sc_prohibit_exit_in_tests:
> @prohibit='\<exit *\(' \
> in_vc_files='tests/.*\.c$$' \
> + exclude='exempt from syntax-check' \
> halt='use return, not exit(), in tests' \
> $(_sc_search_regexp)
>
> diff --git a/tests/qemumonitortestutils.c b/tests/qemumonitortestutils.c
> index dc753dd417..bc3b2f5f92 100644
> --- a/tests/qemumonitortestutils.c
> +++ b/tests/qemumonitortestutils.c
> @@ -153,18 +153,6 @@ qemuMonitorTestAddErrorResponseInternal(qemuMonitorTestPtr test,
> }
>
>
> -static int
> -qemuMonitorTestAddUnexpectedErrorResponse(qemuMonitorTestPtr test,
> - const char *command)
> -{
> - g_autofree char *msg = NULL;
> -
> - msg = g_strdup_printf("unexpected command: '%s'", command);
> -
> - return qemuMonitorTestAddErrorResponseInternal(test, msg);
> -}
> -
> -
> int
> qemuMonitorTestAddInvalidCommandResponse(qemuMonitorTestPtr test,
> const char *expectedcommand,
> @@ -201,6 +189,33 @@ qemuMonitorTestAddErrorResponse(qemuMonitorTestPtr test, const char *errmsg, ...
> }
>
>
> +static void G_GNUC_NORETURN G_GNUC_PRINTF(1, 2)
> +qemuMonitorTestError(const char *errmsg,
> + ...)
> +{
> + va_list msgargs;
> +
> + va_start(msgargs, errmsg);
> +
> + fflush(stderr);
> + g_fprintf(stderr, "\n");
> + g_vfprintf(stderr, errmsg, msgargs);
> + g_fprintf(stderr, "\n");
> + fflush(stderr);
> + exit(EXIT_FAILURE); /* exempt from syntax-check */
Are these fflush() calls needed? I mean, stderr is unbuffered, isn't it?
Michal
More information about the libvir-list
mailing list