@@ -1438,6 +1438,7 @@ prop_nextPeerAction_claimsClaimableTx
14381438 -> Property
14391439prop_nextPeerAction_claimsClaimableTx (Positive peerA0) (Positive peerB0) (Positive peerC0) txid0 txSize0 =
14401440 distinctPeers ==>
1441+ peerTxLocalStateInvariant peerState0 .&&.
14411442 case peerAction of
14421443 PeerRequestTxs txKeys ->
14431444 conjoin
@@ -1474,8 +1475,11 @@ prop_nextPeerAction_claimsClaimableTx (Positive peerA0) (Positive peerB0) (Posit
14741475 , txAttempts = Map. empty
14751476 }
14761477 }
1477- peerState0 = emptyPeerTxLocalState { peerAvailableTxIds = IntMap. singleton k txSize
1478- , peerScore = peerAScore }
1478+ peerState0 = emptyPeerTxLocalState
1479+ { peerUnacknowledgedTxIds = StrictSeq. singleton key
1480+ , peerAvailableTxIds = IntMap. singleton k txSize
1481+ , peerScore = peerAScore
1482+ }
14791483 (peerAction, peerState', sharedState') = nextPeerAction now defaultTxDecisionPolicy peerA peerState0 sharedState0
14801484
14811485unit_nextPeerAction_claimsAtScoreDelayThreshold :: (String -> IO () ) -> Assertion
@@ -1510,8 +1514,11 @@ unit_nextPeerAction_claimsAtScoreDelayThreshold step = do
15101514 , txAttempts = Map. empty
15111515 }
15121516 }
1513- peerState0 = emptyPeerTxLocalState { peerAvailableTxIds = IntMap. singleton k txSize
1514- , peerScore = PeerScore 20 now }
1517+ peerState0 = emptyPeerTxLocalState
1518+ { peerUnacknowledgedTxIds = StrictSeq. singleton key
1519+ , peerAvailableTxIds = IntMap. singleton k txSize
1520+ , peerScore = PeerScore 20 now
1521+ }
15151522 (peerAction, peerState', sharedState') =
15161523 nextPeerAction now defaultTxDecisionPolicy peeraddr peerState0 sharedState0
15171524
@@ -1600,6 +1607,7 @@ prop_nextPeerAction_claimsExpiredLease
16001607 -> Property
16011608prop_nextPeerAction_claimsExpiredLease (Positive oldOwner0) (Positive peerA0) (Positive peerB0) txid0 txSize0 =
16021609 distinctPeers ==>
1610+ peerTxLocalStateInvariant peerState0 .&&.
16031611 case peerAction of
16041612 PeerRequestTxs txKeys ->
16051613 conjoin
@@ -1636,8 +1644,11 @@ prop_nextPeerAction_claimsExpiredLease (Positive oldOwner0) (Positive peerA0) (P
16361644 , txAttempts = Map. empty
16371645 }
16381646 }
1639- peerState0 = emptyPeerTxLocalState { peerAvailableTxIds = IntMap. singleton k txSize
1640- , peerScore = peerAScore }
1647+ peerState0 = emptyPeerTxLocalState
1648+ { peerUnacknowledgedTxIds = StrictSeq. singleton key
1649+ , peerAvailableTxIds = IntMap. singleton k txSize
1650+ , peerScore = peerAScore
1651+ }
16411652 (peerAction, peerState', sharedState') = nextPeerAction now defaultTxDecisionPolicy peerA peerState0 sharedState0
16421653
16431654-- Verifies that nextPeerAction still requests an oversized first tx when it
@@ -1648,6 +1659,7 @@ prop_nextPeerAction_requestsOversizedFirstTx
16481659 -> Positive Int
16491660 -> Property
16501661prop_nextPeerAction_requestsOversizedFirstTx (Positive peeraddr) txid0 (Positive txSize0) =
1662+ peerTxLocalStateInvariant peerState0 .&&.
16511663 case peerAction of
16521664 PeerRequestTxs [txKey] ->
16531665 conjoin
@@ -1678,7 +1690,8 @@ prop_nextPeerAction_requestsOversizedFirstTx (Positive peeraddr) txid0 (Positive
16781690 , sharedTxTable = IntMap. singleton k (mkTxEntry peeraddr txSize Nothing )
16791691 }
16801692 peerState0 = emptyPeerTxLocalState
1681- { peerAvailableTxIds = IntMap. singleton k txSize
1693+ { peerUnacknowledgedTxIds = StrictSeq. singleton key
1694+ , peerAvailableTxIds = IntMap. singleton k txSize
16821695 , peerRequestedTxIds = maxNumTxIdsToRequest policy
16831696 }
16841697 (peerAction, peerState', sharedState') = nextPeerAction now policy peeraddr peerState0 sharedState0
@@ -1707,7 +1720,8 @@ unit_nextPeerAction_skipsBlockedAvailableTxs step = do
17071720 kBlocked = 1
17081721 kClaimable = 2
17091722 peerState = emptyPeerTxLocalState
1710- { peerAvailableTxIds = IntMap. fromList [(kBlocked, 10 ), (kClaimable, 11 )]
1723+ { peerUnacknowledgedTxIds = StrictSeq. fromList [blockedKey, claimableKey]
1724+ , peerAvailableTxIds = IntMap. fromList [(kBlocked, 10 ), (kClaimable, 11 )]
17111725 }
17121726 sharedState :: SharedTxState PeerAddr TxId
17131727 sharedState = emptySharedTxState
@@ -2117,6 +2131,7 @@ prop_nextPeerActionPipelined_secondBodyBatch
21172131 -> Property
21182132prop_nextPeerActionPipelined_secondBodyBatch (Positive peeraddr) txidA0 txidB0 txSizeA0 txSizeB0 =
21192133 txidA /= txidB ==>
2134+ peerTxLocalStateInvariant peerState0 .&&.
21202135 case peerAction of
21212136 PeerRequestTxs [txKey] ->
21222137 conjoin
@@ -2141,7 +2156,8 @@ prop_nextPeerActionPipelined_secondBodyBatch (Positive peeraddr) txidA0 txidB0 t
21412156 kA = unTxKey keyA
21422157 kB = unTxKey keyB
21432158 peerState0 = emptyPeerTxLocalState
2144- { peerAvailableTxIds = IntMap. singleton kB txSizeB
2159+ { peerUnacknowledgedTxIds = StrictSeq. fromList [keyA, keyB]
2160+ , peerAvailableTxIds = IntMap. fromList [(kA, txSizeA), (kB, txSizeB)]
21452161 , peerRequestedTxs = IntSet. singleton kA
21462162 , peerRequestedTxBatches = StrictSeq. singleton (mkRequestedTxBatch [keyA] txSizeA)
21472163 , peerRequestedTxsSize = txSizeA
@@ -2177,6 +2193,7 @@ prop_nextPeerActionPipelined_noThirdBodyBatch
21772193 -> Property
21782194prop_nextPeerActionPipelined_noThirdBodyBatch (Positive peeraddr) txidA0 txidB0 txidC0 txSizeA0 txSizeB0 txSizeC0 =
21792195 distinctTxIds ==>
2196+ peerTxLocalStateInvariant peerState0 .&&.
21802197 case peerAction of
21812198 PeerDoNothing _ _ ->
21822199 conjoin
@@ -2201,7 +2218,8 @@ prop_nextPeerActionPipelined_noThirdBodyBatch (Positive peeraddr) txidA0 txidB0
22012218 kB = unTxKey keyB
22022219 kC = unTxKey keyC
22032220 peerState0 = emptyPeerTxLocalState
2204- { peerAvailableTxIds = IntMap. singleton kC txSizeC
2221+ { peerUnacknowledgedTxIds = StrictSeq. fromList [keyA, keyB, keyC]
2222+ , peerAvailableTxIds = IntMap. fromList [(kA, txSizeA), (kB, txSizeB), (kC, txSizeC)]
22052223 , peerRequestedTxs = IntSet. fromList [kA, kB]
22062224 , peerRequestedTxBatches = StrictSeq. fromList
22072225 [ mkRequestedTxBatch [keyA] txSizeA
0 commit comments