[PATCH v2] kernelbase/tests: Add test for Sleep(1).

Arkadiusz Hiler ahiler at codeweavers.com
Mon Aug 10 06:35:45 CDT 2020


On Sun, Aug 09, 2020 at 03:41:04PM +0000, Myah Caron wrote:
> Sleep(1) should sleep until the next kernel tick, not necessarily one
> millisecond.
> 
> Thanks to Henri Verbeet for pointing this out.
> 
> Wine-bug: https://bugs.winehq.org/show_bug.cgi?id=49564
> Signed-off-by: Myah Caron <qsniyg at protonmail.com>
> ---
> v2: Relax the upper bound, improve wording for commit details
> 
>  dlls/kernelbase/tests/sync.c | 26 ++++++++++++++++++++++++++
>  1 file changed, 26 insertions(+)
> 
> diff --git a/dlls/kernelbase/tests/sync.c b/dlls/kernelbase/tests/sync.c
> index 9f57cf7a95..50ce62602b 100644
> --- a/dlls/kernelbase/tests/sync.c
> +++ b/dlls/kernelbase/tests/sync.c
> @@ -172,6 +172,31 @@ static void test_WaitOnAddress(void)
>      ok(!address, "got unexpected value %s\n", wine_dbgstr_longlong(address));
>  }
> 
> +static void test_Sleep(void)
> +{
> +    LARGE_INTEGER frequency;
> +    LARGE_INTEGER t1, t2;
> +    double elapsed_time;
> +    BOOL ret;
> +    int i;
> +
> +    ret = QueryPerformanceFrequency(&frequency);
> +    ok(ret, "QueryPerformanceFrequency failed\n");
> +
> +    ret = QueryPerformanceCounter(&t1);
> +    ok(ret, "QueryPerformanceCounter failed\n");
> +
> +    for (i = 0; i < 100; i++) {
> +        Sleep(1);
> +    }
> +
> +    ret = QueryPerformanceCounter(&t2);
> +    ok(ret, "QueryPerformanceCounter failed\n");
> +
> +    elapsed_time = (t2.QuadPart - t1.QuadPart) / (double)frequency.QuadPart;
> +    todo_wine ok(elapsed_time >= 1.5 && elapsed_time <= 4.0, "got %f\n", elapsed_time);
> +}

Hey,

Seem like my patch passes this test:
https://www.winehq.org/pipermail/wine-devel/2020-August/171496.html

I have applied both changes, removed todo_wine and run a few minutes of:

  while ./wine dlls/kernelbase/tests/kernelbase_test.exe sync; do done

with zero failures.

-- 
Cheers,
Arek



More information about the wine-devel mailing list