eventstore-0.15.0.0: tests/Test/Connection.hs
--------------------------------------------------------------------------------
-- |
-- Module : Test.Connection
-- Copyright : (C) 2017 Yorick Laupa
-- License : (see the file LICENSE)
--
-- Maintainer : Yorick Laupa <yo.eight@gmail.com>
-- Stability : provisional
-- Portability : non-portable
--
--------------------------------------------------------------------------------
module Test.Connection (spec) where
--------------------------------------------------------------------------------
import Database.EventStore.Internal.Test hiding (i)
--------------------------------------------------------------------------------
import Test.Bogus.Connection
import Test.Common
import Test.Tasty.Hspec
spec :: Spec
spec = beforeAll (createLoggerRef testGlobalLog) $ do
specify "Connection should retry on connection failure" $ \logRef -> do
counter <- newCounter
bus <- newBus logRef testSettings
let builder = alwaysFailConnectionBuilder $ incrCounter counter
disc = staticEndPointDiscovery "localhost" 2000
exec <- newExec testSettings bus builder disc
atomically $ do
i <- readCounterSTM counter
when (i /= 3) retrySTM
publishWith exec SystemShutdown
execWaitTillClosed exec
specify "Connection should close on heartbeat timeout" $ \logRef -> do
counter <- newCounter
bus <- newBus logRef testSettings
let builder = silentConnectionBuilder $ incrCounter counter
disc = staticEndPointDiscovery "localhost" 2000
exec <- newExec testSettings bus builder disc
atomically $ do
i <- readCounterSTM counter
unless (i > 1) retrySTM
publishWith exec SystemShutdown
execWaitTillClosed exec