diff options
Diffstat (limited to 'src/pal/tests/palsuite/threading/Sleep/test1/Sleep.cpp')
-rw-r--r-- | src/pal/tests/palsuite/threading/Sleep/test1/Sleep.cpp | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/pal/tests/palsuite/threading/Sleep/test1/Sleep.cpp b/src/pal/tests/palsuite/threading/Sleep/test1/Sleep.cpp new file mode 100644 index 0000000000..f7f7c91730 --- /dev/null +++ b/src/pal/tests/palsuite/threading/Sleep/test1/Sleep.cpp @@ -0,0 +1,80 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +/*============================================================ +** +** Source: Sleep.c +** +** Purpose: Test to establish whether the Sleep function stops the thread from +** executing for the specified times. +** +** Dependencies: GetSystemTime +** Fail +** Trace +** + +** +**=========================================================*/ + +#include <palsuite.h> + +DWORD SleepTimes[] = +{ + 0, + 50, + 100, + 500, + 2000 +}; + +/* Milliseconds of error which are acceptable Function execution time, etc. */ +DWORD AcceptableTimeError = 150; + +int __cdecl main( int argc, char **argv ) +{ + UINT64 OldTimeStamp; + UINT64 NewTimeStamp; + DWORD MaxDelta; + DWORD TimeDelta; + DWORD i; + + if(0 != (PAL_Initialize(argc, argv))) + { + return ( FAIL ); + } + + LARGE_INTEGER performanceFrequency; + if (!QueryPerformanceFrequency(&performanceFrequency)) + { + return FAIL; + } + + for( i = 0; i < sizeof(SleepTimes) / sizeof(DWORD); i++) + { + OldTimeStamp = GetHighPrecisionTimeStamp(performanceFrequency); + Sleep(SleepTimes[i]); + NewTimeStamp = GetHighPrecisionTimeStamp(performanceFrequency); + + TimeDelta = NewTimeStamp - OldTimeStamp; + + /* For longer intervals use a 10 percent tolerance */ + if ((SleepTimes[i] * 0.1) > AcceptableTimeError) + { + MaxDelta = SleepTimes[i] + (DWORD)(SleepTimes[i] * 0.1); + } + else + { + MaxDelta = SleepTimes[i] + AcceptableTimeError; + } + + if ( TimeDelta<SleepTimes[i] || TimeDelta>MaxDelta ) + { + Fail("The sleep function slept for %d ms when it should have " + "slept for %d ms\n", TimeDelta, SleepTimes[i]); + } + } + PAL_Terminate(); + return ( PASS ); + +} |