system-linux-proc-0.1.1: test/Test/System/Linux/Proc.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
module Test.System.Linux.Proc
( tests
) where
import Control.Monad.IO.Class (liftIO)
import Data.Either (isRight)
import Hedgehog (Property, discover)
import qualified Hedgehog as H
import qualified Hedgehog.Gen as Gen
import System.Linux.Proc
import Test.System.Linux.Proc.Hedgehog
prop_read_MemInfo :: Property
prop_read_MemInfo =
propertyWithTests 10 $ do
mi <- H.evalEither =<< liftIO readProcMemInfo
assertShow mi (memTotal mi > memAvailable mi)
assertShow mi (memTotal mi > memFree mi)
assertShow mi (memTotal mi > memBuffers mi)
assertShow mi (memSwapTotal mi >= memSwapFree mi)
prop_read_ProcessIds :: Property
prop_read_ProcessIds =
propertyWithTests 10 $ do
pids <- H.evalEither =<< liftIO getProcProcessIds
assertShow pids (length pids > 0)
prop_read_process_tcp :: Property
prop_read_process_tcp =
propertyWithTests 50 $ do
pids <- H.evalEither =<< liftIO getProcProcessIds
pid <- H.forAll $ Gen.element pids
eTcp <- liftIO $ readProcTcpSockets pid
case eTcp of
Left (ProcReadError {}) -> H.success -- Ignore pid that do not have a tcp entry.
Left _ -> H.failure
Right _tcp -> H.success -- Is there anything we can check here?
H.cover 80 " interesting" (isRight eTcp)
-- -----------------------------------------------------------------------------
tests :: IO Bool
tests =
H.checkParallel $$discover