Skip to content

Commit 494508e

Browse files
committed
Use original ttl for ReqTx and ReqDec
TxInvalid is only produced after the ttl reaches zero. Some end to end tests (and hence users) might depend on that happening after ~500ms as before.
1 parent 0f43887 commit 494508e

File tree

5 files changed

+32
-20
lines changed

5 files changed

+32
-20
lines changed

hydra-cluster/test/Test/EndToEndSpec.hs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -713,8 +713,7 @@ timedTx tmpDir tracer node@RunningNode{networkId, nodeSocket} hydraScriptsTxId =
713713
waitFor hydraTracer 3 [n1] $ output "HeadIsOpen" ["utxo" .= committedUTxOByAlice, "headId" .= headId]
714714

715715
-- Acquire a current point in time
716-
genesisParams <- queryGenesisParameters networkId nodeSocket QueryTip
717-
let slotLengthSec = protocolParamSlotLength genesisParams
716+
slotLengthSec <- protocolParamSlotLength <$> queryGenesisParameters networkId nodeSocket QueryTip
718717
currentSlot <- queryTipSlotNo networkId nodeSocket
719718

720719
-- Create an arbitrary transaction using some input.

hydra-node/src/Hydra/Node.hs

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ import Hydra.Ledger (Ledger)
5353
import Hydra.Logging (Tracer, traceWith)
5454
import Hydra.Network (Network (..), NetworkCallback (..))
5555
import Hydra.Network.Authenticate (Authenticated (..))
56-
import Hydra.Network.Message (Message, NetworkEvent (..))
56+
import Hydra.Network.Message (Message (..), NetworkEvent (..))
5757
import Hydra.Node.Environment (Environment (..))
5858
import Hydra.Node.InputQueue (InputQueue (..), Queued (..), createInputQueue)
5959
import Hydra.Node.ParameterMismatch (ParamMismatch (..), ParameterMismatch (..))
@@ -230,14 +230,22 @@ wireClientInput node = enqueue . ClientInput
230230
wireNetworkInput :: DraftHydraNode tx m -> NetworkCallback (Authenticated (Message tx)) m
231231
wireNetworkInput node =
232232
NetworkCallback
233-
{ deliver = \Authenticated{payload, party} ->
234-
enqueue $ NetworkInput defaultTTL $ ReceivedMessage{sender = party, msg = payload}
233+
{ deliver = \Authenticated{party = sender, payload = msg} ->
234+
enqueue $ mkNetworkInput sender msg
235235
, onConnectivity =
236-
enqueue . NetworkInput defaultTTL . ConnectivityEvent
236+
enqueue . NetworkInput 1 . ConnectivityEvent
237237
}
238238
where
239239
DraftHydraNode{inputQueue = InputQueue{enqueue}} = node
240240

241+
-- | Create a network input with corresponding default ttl from given sender.
242+
mkNetworkInput :: Party -> Message tx -> Input tx
243+
mkNetworkInput sender msg =
244+
case msg of
245+
ReqTx{} -> NetworkInput defaultTxTTL $ ReceivedMessage{sender, msg}
246+
ReqDec{} -> NetworkInput defaultTxTTL $ ReceivedMessage{sender, msg}
247+
_ -> NetworkInput defaultTTL $ ReceivedMessage{sender, msg}
248+
241249
-- | Connect chain, network and API to a hydrated 'DraftHydraNode' to get a fully
242250
-- connected 'HydraNode'.
243251
connect ::
@@ -312,10 +320,16 @@ stepHydraNode node = do
312320

313321
HydraNode{tracer, inputQueue = InputQueue{dequeue, reenqueue}, env} = node
314322

315-
-- | The maximum number of times to re-enqueue a 'Wait' outcome.
323+
-- | The maximum number of times to re-enqueue a network messages upon 'Wait'.
324+
-- outcome.
316325
defaultTTL :: TTL
317326
defaultTTL = 6000
318327

328+
-- | The maximum number of times to re-enqueue 'ReqTx' and 'ReqDec' network
329+
-- messages upon 'Wait'.
330+
defaultTxTTL :: TTL
331+
defaultTxTTL = 5
332+
319333
-- | The time to wait between re-enqueuing a 'Wait' outcome.
320334
waitDelay :: DiffTime
321335
waitDelay = 0.1

hydra-node/test/Hydra/BehaviorSpec.hs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ import Hydra.Ledger (Ledger, nextChainSlot)
4242
import Hydra.Ledger.Simple (SimpleChainState (..), SimpleTx (..), aValidTx, simpleLedger, utxoRef, utxoRefs)
4343
import Hydra.Logging (Tracer)
4444
import Hydra.Network (Network (..))
45-
import Hydra.Network.Message (Message, NetworkEvent (..))
46-
import Hydra.Node (DraftHydraNode (..), HydraNode (..), HydraNodeLog (..), connect, createNodeState, defaultTTL, queryHeadState, runHydraNode, waitDelay)
45+
import Hydra.Network.Message (Message)
46+
import Hydra.Node (DraftHydraNode (..), HydraNode (..), HydraNodeLog (..), connect, createNodeState, defaultTxTTL, mkNetworkInput, queryHeadState, runHydraNode, waitDelay)
4747
import Hydra.Node.DepositPeriod (DepositPeriod (..))
4848
import Hydra.Node.DepositPeriod qualified as DP
4949
import Hydra.Node.Environment (Environment (..))
@@ -338,7 +338,7 @@ spec = parallel $ do
338338
-- Expect secondTx to be valid, but not applicable and stay pending
339339
send n2 (NewTx secondTx)
340340
-- If we wait too long, secondTx will expire
341-
threadDelay $ fromIntegral defaultTTL * waitDelay + 1
341+
threadDelay $ fromIntegral defaultTxTTL * waitDelay + 1
342342
waitUntilMatch [n1, n2] $ \case
343343
TxInvalid{transaction} -> guard $ transaction == secondTx
344344
_ -> Nothing
@@ -1176,7 +1176,7 @@ createMockNetwork node nodes =
11761176
mapM_ (`handleMessage` msg) allNodes
11771177

11781178
handleMessage HydraNode{inputQueue} msg =
1179-
enqueue inputQueue . NetworkInput defaultTTL $ ReceivedMessage{sender, msg}
1179+
enqueue inputQueue $ mkNetworkInput sender msg
11801180

11811181
sender = getParty node
11821182

hydra-node/test/Hydra/HeadLogicSpec.hs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ import Hydra.Ledger.Cardano.TimeSpec (genUTCTime)
5555
import Hydra.Ledger.Simple (SimpleChainState (..), SimpleTx (..), aValidTx, simpleLedger, utxoRef, utxoRefs)
5656
import Hydra.Network (Connectivity)
5757
import Hydra.Network.Message (Message (..), NetworkEvent (..))
58-
import Hydra.Node (defaultTTL)
58+
import Hydra.Node (mkNetworkInput)
5959
import Hydra.Node.Environment (Environment (..))
6060
import Hydra.Options (defaultContestationPeriod, defaultDepositPeriod)
6161
import Hydra.Prelude qualified as Prelude
@@ -1015,16 +1015,15 @@ genClosedState = do
10151015

10161016
-- * Utilities
10171017

1018-
-- | Create a network input about a received protocol message with 'defaultTTL'
1018+
-- | Create a network input about a received protocol message with default ttl
10191019
-- and 'alice' as the sender.
10201020
receiveMessage :: Message tx -> Input tx
10211021
receiveMessage = receiveMessageFrom alice
10221022

1023-
-- | Create a network input about a received protocol message with 'defaultTTL'
1023+
-- | Create a network input about a received protocol message with default ttl
10241024
-- from given sender.
10251025
receiveMessageFrom :: Party -> Message tx -> Input tx
1026-
receiveMessageFrom sender msg =
1027-
NetworkInput defaultTTL $ ReceivedMessage{sender, msg}
1026+
receiveMessageFrom = mkNetworkInput
10281027

10291028
-- | Create a chain effect with fixed chain state and slot.
10301029
chainEffect :: PostChainTx SimpleTx -> Effect SimpleTx

hydra-node/test/Hydra/Model/MockChain.hs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ import Hydra.Ledger.Cardano.Evaluate (eraHistoryWithoutHorizon, evaluateTx, rend
7070
import Hydra.Logging (Tracer)
7171
import Hydra.Model.Payment (CardanoSigningKey (..))
7272
import Hydra.Network (Network (..))
73-
import Hydra.Network.Message (Message, NetworkEvent (..))
74-
import Hydra.Node (DraftHydraNode (..), HydraNode (..), NodeState (..), connect, defaultTTL)
73+
import Hydra.Network.Message (Message (..))
74+
import Hydra.Node (DraftHydraNode (..), HydraNode (..), NodeState (..), connect, mkNetworkInput)
7575
import Hydra.Node.Environment (Environment (Environment, participants, party))
7676
import Hydra.Node.InputQueue (InputQueue (..))
7777
import Hydra.NodeSpec (mockServer)
@@ -360,8 +360,8 @@ createMockNetwork draftNode nodes =
360360
allNodes <- fmap node <$> readTVarIO nodes
361361
mapM_ (`handleMessage` msg) allNodes
362362

363-
handleMessage HydraNode{inputQueue} msg =
364-
enqueue inputQueue . NetworkInput defaultTTL $ ReceivedMessage{sender, msg}
363+
handleMessage HydraNode{inputQueue} msg = do
364+
enqueue inputQueue $ mkNetworkInput sender msg
365365

366366
sender = getParty draftNode
367367

0 commit comments

Comments
 (0)