expiring-cache-map-0.0.5.0: tests/TestOrdECMWithThreads.hs
{-# LANGUAGE OverloadedStrings #-}
--
-- Test OrdECM with threads
--
module TestOrdECMWithThreads where
import Control.Concurrent (forkIO, threadDelay)
import qualified Data.Time.Clock.POSIX as POSIX (POSIXTime, getPOSIXTime)
import qualified Data.ByteString.Lazy.Char8 as LBS
import qualified Control.Concurrent.MVar as MV
import qualified Data.Map as M
import Caching.ExpiringCacheMap.OrdECM
import Caching.ExpiringCacheMap.Internal.Internal (getStatsString)
testWithThreads = do
ecm <- newECMIO
(consistentDuration 10
(\state id -> do LBS.putStrLn id; return (state, [])))
(do time <- POSIX.getPOSIXTime
return (round (time * 100)))
120
(CacheWithLRUList 6 6 12 ) :: IO (ECM IO MV.MVar () M.Map LBS.ByteString [Int])
forkIO $ do
mapM_ (\a -> do
b <- lookupECM ecm "test.2"
threadDelay 2
return ())
[0..400]
forkIO $ do
mapM_ (\a -> do
b <- lookupECM ecm "test.5"
threadDelay 5
return ())
[0..300]
forkIO $ do
mapM_ (\a -> do
b <- lookupECM ecm "test.7"
threadDelay 7
return ())
[0..300]
forkIO $ do
mapM_ (\a -> do
b <- lookupECM ecm "test.11"
threadDelay 11
return ())
[0..200]
forkIO $ do
mapM_ (\a -> do
b <- lookupECM ecm "test.13"
threadDelay 13
return ())
[0..200]
forkIO $ do
mapM_ (\a -> do
b <- lookupECM ecm "test.17"
threadDelay 17
return ())
[0..200]
forkIO $ do
mapM_ (\a -> do
b <- lookupECM ecm "test.111"
threadDelay 111
return ())
[0..20]
forkIO $ do
mapM_ (\a -> do
b <- lookupECM ecm "test.109"
threadDelay 109
return ())
[0..20]
forkIO $ do
mapM_ (\a -> do
b <- lookupECM ecm "test.1091"
threadDelay 1091
return ())
[0..5]
threadDelay 2000000
c <- getStatsString ecm
putStrLn c
return ()