@@ -8,48 +8,15 @@ import Control.Monad (replicateM, forever)
8
8
import Control.Monad.Class.MonadAsync
9
9
import Control.Monad.Class.MonadFork
10
10
import Control.Monad.Class.MonadSay
11
- import Control.Monad.Class.MonadThrow
12
11
import Control.Monad.Class.MonadTimer
13
12
import Control.Monad.IOSim
14
- import Control.Tracer (Tracer (.. ), emit , nullTracer )
15
13
16
14
import Criterion
17
15
import Criterion.Main
18
16
19
17
import Control.Exception (AsyncException (.. ))
20
18
import Data.Foldable (traverse_ )
21
19
22
- import Network.TypedProtocol.Channel
23
- import Network.TypedProtocol.Driver.Simple
24
-
25
- import Network.TypedProtocol.PingPong.Client
26
- import Network.TypedProtocol.PingPong.Codec
27
- -- import qualified Network.TypedProtocol.PingPong.Codec.CBOR as CBOR
28
- import Network.TypedProtocol.PingPong.Examples
29
- import Network.TypedProtocol.PingPong.Server
30
- import Network.TypedProtocol.PingPong.Type
31
-
32
-
33
- prop_channel :: forall m . (MonadAsync m , MonadCatch m , MonadTimer m )
34
- => Maybe (DiffTime , DiffTime )
35
- -> Int
36
- -> Tracer m (Role , TraceSendRecv PingPong )
37
- -> m Bool
38
- prop_channel delay n tr = do
39
- (() , n') <- runConnectedPeers createChannel
40
- tr
41
- codecPingPongId client server
42
- return (n' == n)
43
- where
44
- createChannel :: forall a . m (Channel m a , Channel m a )
45
- createChannel =
46
- case delay of
47
- Nothing -> createConnectedChannels
48
- Just (d1, d2) -> (\ (a, b) -> (delayChannel d1 a, delayChannel d2 b))
49
- <$> createConnectedChannels
50
-
51
- client = pingPongClientPeer (pingPongClientCount n)
52
- server = pingPongServerPeer pingPongServerCount
53
20
54
21
--
55
22
-- timers, delays, timeouts
@@ -101,22 +68,7 @@ prop_threadDelay_bottleneck =
101
68
102
69
main :: IO ()
103
70
main = defaultMain
104
- [ env (let ! n = 10000
105
- ! d1 = 1
106
- ! d2 = 2
107
- in pure (n, d1, d2))
108
- $ \ ~ (n, d1, d2) ->
109
- bgroup " ping-pong"
110
- [ bench " stm channel without delay" $
111
- whnf id (runSimOrThrow (prop_channel Nothing n nullTracer))
112
- , bench " stm channel with delay" $
113
- whnf id (runSimOrThrow (prop_channel (Just (d1, d2)) n nullTracer))
114
- , bench " events" $
115
- nf id ( selectTraceEventsSay
116
- $ runSimTrace
117
- $ prop_channel Nothing n (Tracer $ emit $ say . show ))
118
- ]
119
- , env (pure () ) $ \ _ ->
71
+ [ env (pure () ) $ \ _ ->
120
72
bgroup " delays"
121
73
[ bench " threadDelay" $
122
74
whnf id (runSimOrThrow prop_threadDelay)
0 commit comments