summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kasatenko <sky.31338@gmail.com>2019-07-22 10:21:24 +0300
committerIvan Kasatenko <sky.31338@gmail.com>2019-07-23 10:26:06 +0300
commita5a0d717890878915d5f44e20cdc2a278344d354 (patch)
treea69de2a379bcd7f5f5ae4c7e3566d199ebe52e93
parent397affc2109c19df57fac32643a92f38031fd655 (diff)
downloadhaskell-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.hs12
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