Francois Gouget : ntdll/tests: Improve the RtlWaitOnAddress() timeout checks.
Module: wine Branch: master Commit: e72c71d27d67462480026edc2b756a66578db7bd URL: https://source.winehq.org/git/wine.git/?a=commit;h=e72c71d27d67462480026edc2... Author: Francois Gouget <fgouget(a)codeweavers.com> Date: Mon Jul 5 18:10:39 2021 +0200 ntdll/tests: Improve the RtlWaitOnAddress() timeout checks. GetTickCount()'s granularity represents 15% of the time we want to mesure, making it hard to not get failures. So use NtQuerySystemTime() instead since we already depend on it. Narrow down the acceptable range again. Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntdll/tests/om.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c index 82f8188d176..81be7de00f6 100644 --- a/dlls/ntdll/tests/om.c +++ b/dlls/ntdll/tests/om.c @@ -2266,10 +2266,10 @@ static void test_semaphore(void) static void test_wait_on_address(void) { - DWORD ticks; SIZE_T size; NTSTATUS status; - LARGE_INTEGER timeout; + LARGE_INTEGER start, end, timeout; + DWORD elapsed; LONG64 address, compare; if (!pRtlWaitOnAddress) @@ -2298,13 +2298,13 @@ static void test_wait_on_address(void) /* values match */ address = 0; compare = 0; - pNtQuerySystemTime(&timeout); - timeout.QuadPart += 100*10000; - ticks = GetTickCount(); + pNtQuerySystemTime(&start); + timeout.QuadPart = start.QuadPart + 100 * 10000; status = pRtlWaitOnAddress(&address, &compare, 8, &timeout); - ticks = GetTickCount() - ticks; + pNtQuerySystemTime(&end); ok(status == STATUS_TIMEOUT, "got 0x%08x\n", status); - ok(ticks >= 80 && ticks <= 1000, "got %u\n", ticks); + elapsed = (end.QuadPart - start.QuadPart) / 10000; + ok(90 <= elapsed && elapsed <= 900, "timed out in %u ms\n", elapsed); ok(address == 0, "got %s\n", wine_dbgstr_longlong(address)); ok(compare == 0, "got %s\n", wine_dbgstr_longlong(compare)); @@ -2314,12 +2314,13 @@ static void test_wait_on_address(void) compare = ~0; compare <<= size * 8; + pNtQuerySystemTime(&start); timeout.QuadPart = -100 * 10000; - ticks = GetTickCount(); status = pRtlWaitOnAddress(&address, &compare, size, &timeout); - ticks = GetTickCount() - ticks; + pNtQuerySystemTime(&end); ok(status == STATUS_TIMEOUT, "got 0x%08x\n", status); - ok(ticks >= 80 && ticks <= 1000, "got %u\n", ticks); + elapsed = (end.QuadPart - start.QuadPart) / 10000; + ok(90 <= elapsed && elapsed <= 900, "timed out in %u ms\n", elapsed); status = pRtlWaitOnAddress(&address, &compare, size << 1, &timeout); ok(!status, "got 0x%08x\n", status);
participants (1)
-
Alexandre Julliard