Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tests: detect and mark hung tests as failed #1105

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 * 1000000)
$ 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)
}
Loading