packages feed

quic-0.0.0: test/ErrorSpec.hs

{-# LANGUAGE OverloadedStrings #-}

module ErrorSpec where

import Control.Concurrent
import Control.Monad (forever, void)
import Data.ByteString ()
import Network.QUIC
import Network.QUIC.Server
import Test.Hspec

import Config
import TransportError

setup :: IO ThreadId
setup = do
    sc' <- makeTestServerConfig
    smgr <- newSessionManager
    let sc = sc' { scSessionManager = smgr
                 , scUse0RTT        = True
                 }
    tid <- forkIO $ run sc loop
    threadDelay 500000 -- give enough time to the server
    return tid
  where
    loop conn = forever $ void $ acceptStream conn

teardown :: ThreadId -> IO ()
teardown tid = killThread tid

spec :: Spec
spec = beforeAll setup $ afterAll teardown $ transportErrorSpec testClientConfig 2000 -- 2 seconds