diff options
author | Ivan Kasatenko <sky.31338@gmail.com> | 2019-07-22 10:21:24 +0300 |
---|---|---|
committer | Ivan Kasatenko <sky.31338@gmail.com> | 2019-07-23 10:26:06 +0300 |
commit | a5a0d717890878915d5f44e20cdc2a278344d354 (patch) | |
tree | a69de2a379bcd7f5f5ae4c7e3566d199ebe52e93 | |
parent | 397affc2109c19df57fac32643a92f38031fd655 (diff) | |
download | haskell-a5a0d717890878915d5f44e20cdc2a278344d354.tar.gz |
Fix T16916 CI failures (#16966)
1. Slightly increased the waiting time for the tested effect to be more
profound.
2. Introduced measuring of the actual time spent waiting and adjusing
CPU time by it to compensate for threadDelay waiting time
inconsistencies.
-rw-r--r-- | testsuite/tests/lib/base/T16916.hs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/testsuite/tests/lib/base/T16916.hs b/testsuite/tests/lib/base/T16916.hs index a5dafa515b..c3678f852d 100644 --- a/testsuite/tests/lib/base/T16916.hs +++ b/testsuite/tests/lib/base/T16916.hs @@ -2,6 +2,7 @@ module Main where import Control.Concurrent import Foreign.C +import GHC.Clock import GHC.Event import System.CPUTime import System.Posix.Types @@ -21,12 +22,15 @@ makeTestSocketFd = do callback :: FdKey -> Event -> IO () callback _ _ = return () -idleCpuUsage :: IO Integer +-- Idle CPU usage per time +idleCpuUsage :: IO Double idleCpuUsage = do + startTime <- getMonotonicTime startCPUTime <- getCPUTime - threadDelay 500000 + threadDelay 1000000 endCPUTime <- getCPUTime - return $ endCPUTime - startCPUTime + endTime <- getMonotonicTime + return $ fromIntegral (endCPUTime - startCPUTime) / (endTime - startTime) main :: IO () main = do @@ -42,4 +46,4 @@ main = do -- CPU consumption should roughly be the same when just idling vs -- when idling after the event been triggered - print $ (fromIntegral eventTriggeredUsage / fromIntegral noEventUsage) < 2.0 + print $ eventTriggeredUsage / noEventUsage < 2.0 |