[libvirt] [PATCH 2/3] tests: eventtest: Open code virtTestResult
John Ferlan
jferlan at redhat.com
Wed Oct 7 13:24:01 UTC 2015
On 09/29/2015 07:56 PM, Cole Robinson wrote:
> These event tests aren't run synchronously, so there isn't an obvious
> function to pass to virtTestRun. Instead, open code roughly what
> virtTestResult did before: printing an error message if a test failed.
> ---
> tests/eventtest.c | 57 +++++++++++++++++++++++++++++++++++++++++++++----------
> 1 file changed, 47 insertions(+), 10 deletions(-)
>
> diff --git a/tests/eventtest.c b/tests/eventtest.c
> index 13adbf6..ab08181 100644
> --- a/tests/eventtest.c
> +++ b/tests/eventtest.c
> @@ -63,6 +63,43 @@ enum {
> EV_ERROR_DATA,
> };
>
> +struct testEventResultData {
> + bool failed;
> + const char *msg;
> +};
> +
> +static int
> +testEventResultCallback(const void *opaque)
> +{
> + const struct testEventResultData *data = opaque;
> +
> + if (data->failed && data->msg) {
> + fprintf(stderr, "%s", data->msg);
> + }
> + return data->failed;
> +}
> +
> +static void
> +ATTRIBUTE_FMT_PRINTF(3,4)
> +testEventReport(const char *name, bool failed, const char *msg, ...)
> +{
> + va_list vargs;
> + va_start(vargs, msg);
> + char *str = NULL;
> + struct testEventResultData data;
> +
> + if (msg && virVasprintfQuiet(&str, msg, vargs) != 0) {
> + failed = true;
> + }
> +
> + data.failed = failed;
> + data.msg = msg;
> + virtTestRun(name, testEventResultCallback, &data);
Now that these are pushed Coverity is complaining:
(3) Event check_return: Calling "virtTestRun" without checking return
value (as is done elsewhere 2547 out of 2548 times).
Also see events:
John
> +
> + va_end(vargs);
> + VIR_FREE(str);
> +}
> +
> static void
> testPipeReader(int watch, int fd, int events, void *data)
> {
> @@ -148,13 +185,13 @@ verifyFired(const char *name, int handle, int timer)
> for (i = 0; i < NUM_FDS; i++) {
> if (handles[i].fired) {
> if (i != handle) {
> - virtTestResult(name, 1,
> + testEventReport(name, 1,
> "Handle %zu fired, but expected %d\n", i,
> handle);
> return EXIT_FAILURE;
> } else {
> if (handles[i].error != EV_ERROR_NONE) {
> - virtTestResult(name, 1,
> + testEventReport(name, 1,
> "Handle %zu fired, but had error %d\n", i,
> handles[i].error);
> return EXIT_FAILURE;
> @@ -163,7 +200,7 @@ verifyFired(const char *name, int handle, int timer)
> }
> } else {
> if (i == handle) {
> - virtTestResult(name, 1,
> + testEventReport(name, 1,
> "Handle %d should have fired, but didn't\n",
> handle);
> return EXIT_FAILURE;
> @@ -171,7 +208,7 @@ verifyFired(const char *name, int handle, int timer)
> }
> }
> if (handleFired != 1 && handle != -1) {
> - virtTestResult(name, 1,
> + testEventReport(name, 1,
> "Something weird happened, expecting handle %d\n",
> handle);
> return EXIT_FAILURE;
> @@ -181,12 +218,12 @@ verifyFired(const char *name, int handle, int timer)
> for (i = 0; i < NUM_TIME; i++) {
> if (timers[i].fired) {
> if (i != timer) {
> - virtTestResult(name, 1,
> + testEventReport(name, 1,
> "Timer %zu fired, but expected %d\n", i, timer);
> return EXIT_FAILURE;
> } else {
> if (timers[i].error != EV_ERROR_NONE) {
> - virtTestResult(name, 1,
> + testEventReport(name, 1,
> "Timer %zu fired, but had error %d\n", i,
> timers[i].error);
> return EXIT_FAILURE;
> @@ -195,7 +232,7 @@ verifyFired(const char *name, int handle, int timer)
> }
> } else {
> if (i == timer) {
> - virtTestResult(name, 1,
> + testEventReport(name, 1,
> "Timer %d should have fired, but didn't\n",
> timer);
> return EXIT_FAILURE;
> @@ -203,7 +240,7 @@ verifyFired(const char *name, int handle, int timer)
> }
> }
> if (timerFired != 1 && timer != -1) {
> - virtTestResult(name, 1,
> + testEventReport(name, 1,
> "Something weird happened, expecting timer %d\n",
> timer);
> return EXIT_FAILURE;
> @@ -234,14 +271,14 @@ finishJob(const char *name, int handle, int timer)
> rc = pthread_cond_timedwait(&eventThreadJobCond, &eventThreadMutex,
> &waitTime);
> if (rc != 0) {
> - virtTestResult(name, 1, "Timed out waiting for pipe event\n");
> + testEventReport(name, 1, "Timed out waiting for pipe event\n");
> return EXIT_FAILURE;
> }
>
> if (verifyFired(name, handle, timer) != EXIT_SUCCESS)
> return EXIT_FAILURE;
>
> - virtTestResult(name, 0, NULL);
> + testEventReport(name, 0, NULL);
> return EXIT_SUCCESS;
> }
>
>
More information about the libvir-list
mailing list