Skip to content

Commit e8d08cd

Browse files
committed
Refactor transport tests to better report pattern match failures
1 parent 74bf42a commit e8d08cd

8 files changed

Lines changed: 449 additions & 225 deletions

File tree

.github/workflows/cabal.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ jobs:
5656
- name: Generate freeze file
5757
run: |
5858
# Cloud Haskell tests using the QUIC backend are quite flaky, but in CI only.
59-
# Therefore, the 'quic' flag is normally enabled locally, but disabled in CI.
60-
cabal configure --enable-tests --test-show-details=direct --flags "-quic" ${{matrix.cabal-flags}}
59+
# Therefore, the 'quic' flag is normally enabled locally, but disabled in CI.
60+
cabal configure --test-show-details=direct --flags "-quic" ${{matrix.cabal-flags}}
6161
cabal freeze --minimize-conflict-set
6262
cat cabal.project.freeze
6363
@@ -82,5 +82,5 @@ jobs:
8282
# The timeout below should be plenty
8383
timeout-minutes: 10
8484
# We run each test suite one-by-one to better observe problems.
85-
run: cabal test all -j1
85+
run: cabal test all -j1
8686

cabal.project

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
packages: packages/*/**.cabal
2+
tests: true
23

34
package distributed-process-tests
45
flags: +tcp

packages/network-transport-quic/test/Test/Network/Transport/QUIC.hs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,19 @@ import Control.Exception (bracket)
1010
import Control.Monad (replicateM_)
1111
import Data.ByteString qualified as BS
1212
import Data.List.NonEmpty (NonEmpty (..))
13-
import Network.Transport (EndPoint (..), Event (ConnectionClosed, ConnectionOpened, Received), Reliability (..), Transport (..), close, defaultConnectHints, send)
13+
import Network.Transport (EndPoint (..), Event (ConnectionClosed), Reliability (..), Transport (..), close, defaultConnectHints, send)
1414
import Network.Transport.QUIC (QUICTransportConfig (..))
1515
import Network.Transport.QUIC qualified as QUIC
1616
import Network.Transport.Tests (echoServer)
1717
import Network.Transport.Tests qualified as Tests
1818
import Network.Transport.Tests.Auxiliary (forkTry)
19+
import Network.Transport.Tests.Expect (expectConnectionOpened, expectEq, expectReceived, expectRight)
1920
import Network.Transport.Util (spawn)
2021
import System.FilePath ((</>))
2122
import System.Timeout (timeout)
2223
import Test.Tasty (TestName, TestTree, testGroup)
2324
import Test.Tasty.Flaky (flakyTest, limitRetries)
24-
import Test.Tasty.HUnit (Assertion, assertBool, assertFailure, testCase, (@?=))
25+
import Test.Tasty.HUnit (Assertion, assertFailure, testCase, (@?=))
2526

2627
tests :: TestTree
2728
tests =
@@ -91,21 +92,22 @@ testSendVeryLargeMessages = testCase "Send very large messages" $ withQUICTransp
9192
let numPings = 10
9293
let bigMessage = BS.replicate 4091 66 -- Using an odd number of bytes (4091) to test message boundaries
9394
_ <- forkTry $ do
94-
Right endpoint <- newEndPoint transport
95+
endpoint <- expectRight "newEndPoint" =<< newEndPoint transport
9596
ping endpoint server numPings bigMessage
9697
putMVar result ()
9798

9899
takeMVar result
99100
where
100101
ping endpoint serverAddr numPings message = do
101-
Right conn <- connect endpoint serverAddr ReliableOrdered defaultConnectHints
102+
conn <- expectRight "connect" =<< connect endpoint serverAddr ReliableOrdered defaultConnectHints
102103

103-
ConnectionOpened cid _ _ <- receive endpoint
104+
(cid, _, _) <- expectConnectionOpened =<< receive endpoint
104105

105106
replicateM_ numPings $ do
106107
_ <- send conn [message]
107-
Received cid' [reply] <- receive endpoint
108-
assertBool mempty $ cid == cid' && reply == message
108+
(cid', payload) <- expectReceived =<< receive endpoint
109+
expectEq "connection id" cid cid'
110+
expectEq "payload" [message] payload
109111

110112
close conn
111113

packages/network-transport-tests/network-transport-tests.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ library
3434
exposed-modules: Network.Transport.Tests,
3535
Network.Transport.Tests.Multicast,
3636
Network.Transport.Tests.Auxiliary,
37+
Network.Transport.Tests.Expect,
3738
Network.Transport.Tests.Traced
3839
-- other-modules:
3940
build-depends: base >= 4.14 && < 5,

0 commit comments

Comments
 (0)