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 = str;
+ virtTestRun(name, testEventResultCallback, &data);
+
+ va_end(vargs);
+ VIR_FREE(str);
+}
+
static void
testPipeReader(int watch, int fd, int events, void *data)
{
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;
}
} else {
if (i == handle) {
- virtTestResult(name, 1,
+ testEventReport(name, 1,
"Handle %d should have fired, but didn't\n",
handle);
return EXIT_FAILURE;
}
}
if (handleFired != 1 && handle != -1) {
- virtTestResult(name, 1,
+ testEventReport(name, 1,
"Something weird happened, expecting handle %d\n",
handle);
return EXIT_FAILURE;
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;
}
} else {
if (i == timer) {
- virtTestResult(name, 1,
+ testEventReport(name, 1,
"Timer %d should have fired, but didn't\n",
timer);
return EXIT_FAILURE;
}
}
if (timerFired != 1 && timer != -1) {
- virtTestResult(name, 1,
+ testEventReport(name, 1,
"Something weird happened, expecting timer %d\n",
timer);
return EXIT_FAILURE;
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;
}