module Test.Hspec.Server.NetworkStatus ( NetworkStatus , reachable , host , hostWithPort ) where import System.Exit import Control.Monad.IO.Class import Test.Hspec.Server.Core import Test.Hspec.Server.Util import qualified Data.Set as S type NetworkStatus = S.Set NetworkStatus' data NetworkStatus' = Reachable deriving (Show,Ord,Eq) reachable :: S.Set NetworkStatus' reachable = S.singleton Reachable host :: ServerType dat => String -> ServerExample dat NetworkStatus host hostname = do dat <- getServerData (code,_,_) <- liftIO $ cmd dat "ping" ["-c","1",hostname] [] if code == ExitSuccess then return reachable else return none hostWithPort :: ServerType dat => String -> Int -> ServerExample dat NetworkStatus hostWithPort hostname port = do dat <- getServerData (code,_,_) <- liftIO $ cmd dat "nc" [hostname,show port] [] if code == ExitSuccess then return reachable else return none