From a8dc3ac28acbdbb20deec0accec9d0d75aaca631 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Mon, 21 Mar 2016 14:52:49 +0100 Subject: [PATCH] tests: Produce predictable results in nsstest Problem is that in the test any status file matching tests/nssdata/*.status is loaded as it contains IP addresses that are parsed. However, there's no order specified in which the files are loaded. Therefore on different systems the order may be different. This is then producing an unexpected results. Instead of defining an order in which the files are loaded, make the code that checks for missing IP addresses (or redundant ones) cope with unordered list of addresses. The reasoning behind is that the code doing the parsing is used in real NSS module where we don't care for ordering. Signed-off-by: Michal Privoznik --- tests/nsstest.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/tests/nsstest.c b/tests/nsstest.c index 68f1c600f6..9d7bc409c2 100644 --- a/tests/nsstest.c +++ b/tests/nsstest.c @@ -49,7 +49,7 @@ testGetHostByName(const void *opaque) char buf[BUF_SIZE] = { 0 }; char **addrList; int rv, tmp_errno = 0, tmp_herrno = 0; - size_t i = 0; + size_t i = 0, j = 0; if (!data) goto cleanup; @@ -141,17 +141,14 @@ testGetHostByName(const void *opaque) goto cleanup; } - if (!data->ipAddr[i]) { - virReportError(VIR_ERR_INTERNAL_ERROR, - "Unexpected address %s", ipAddr); - VIR_FREE(ipAddr); - goto cleanup; + for (j = 0; data->ipAddr[j]; j++) { + if (STREQ(data->ipAddr[j], ipAddr)) + break; } - if (STRNEQ(data->ipAddr[i], ipAddr)) { + if (!data->ipAddr[j]) { virReportError(VIR_ERR_INTERNAL_ERROR, - "Address mismatch. Expected %s got %s", - data->ipAddr[i], ipAddr); + "Unexpected address %s", ipAddr); VIR_FREE(ipAddr); goto cleanup; } @@ -161,10 +158,12 @@ testGetHostByName(const void *opaque) i++; } - if (data->ipAddr[i]) { + for (j = 0; data->ipAddr[j]; j++) + ; + + if (i != j) { virReportError(VIR_ERR_INTERNAL_ERROR, - "Address mismatch. Expected %s got nothing", - data->ipAddr[i]); + "Expected %zu addresses, got %zu", j, i); goto cleanup; } -- GitLab