Skip to content

Commit

Permalink
tests: detect and mark hung tests as failed
Browse files Browse the repository at this point in the history
  • Loading branch information
dpwiz committed Apr 18, 2024
1 parent d352b13 commit ee1a5ec
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion tests/Test.hs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import CoreTests.RetryIntervalTests
import CoreTests.TRcvQueuesTests
import CoreTests.UtilTests
import CoreTests.VersionRangeTests
import Data.Maybe (fromMaybe)
import FileDescriptionTests (fileDescriptionTests)
import GHC.IO.Exception (IOException (..))
import qualified GHC.IO.Exception as IOException
Expand All @@ -27,7 +28,10 @@ import Simplex.Messaging.Transport (TLS, Transport (..))
import Simplex.Messaging.Transport.WebSockets (WS)
import System.Directory (createDirectoryIfMissing, removeDirectoryRecursive)
import System.Environment (setEnv)
import System.Timeout (timeout)
import Test.Hspec
import Test.Hspec.Core.Spec
import Test.Hspec.Runner (configPrintSlowItems, defaultConfig, hspecWith)
import XFTPAgent
import XFTPCLI
import XFTPServerTests (xftpServerTests)
Expand All @@ -41,9 +45,10 @@ main = do
withGlobalLogging logCfg $ do
setEnv "APNS_KEY_ID" "H82WD9K9AQ"
setEnv "APNS_KEY_FILE" "./tests/fixtures/AuthKey_H82WD9K9AQ.p8"
hspec
hspecWith defaultConfig {configPrintSlowItems = Just 10}
. before_ (createDirectoryIfMissing False "tests/tmp")
. after_ (eventuallyRemove "tests/tmp" 3)
. deadline (120 * 100000)
$ do
describe "Agent SQLite schema dump" schemaDumpTest
describe "Core tests" $ do
Expand Down Expand Up @@ -78,3 +83,11 @@ eventuallyRemove path retries = case retries of
_ -> E.throwIO ioe
where
action = removeDirectoryRecursive path

-- | Abort tests after a reasonable deadline.
deadline :: Int -> SpecWith b -> SpecWith b
deadline limit = mapSpecItem_ $ \item@Item {itemLocation, itemExample} ->
item
{ itemExample = \params aw pc ->
fromMaybe (Result "timed out" . Failure itemLocation $ Reason "time limit") <$> timeout limit (itemExample params aw pc)
}

0 comments on commit ee1a5ec

Please sign in to comment.