Skip to content

Commit 690bfaf

Browse files
committed
Re-enable Mempool's parallel QSM test
1 parent 78dc909 commit 690bfaf

File tree

1 file changed

+17
-63
lines changed
  • ouroboros-consensus/test/consensus-test/Test/Consensus/Mempool

1 file changed

+17
-63
lines changed

ouroboros-consensus/test/consensus-test/Test/Consensus/Mempool/StateMachine.hs

Lines changed: 17 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -88,16 +88,6 @@ import Test.Util.ToExpr ()
8888
Datatypes
8989
-------------------------------------------------------------------------------}
9090

91-
-- | Whether the LedgerDB should be wiped out
92-
data ModifyDB = KeepDB | ClearDB deriving (Generic, ToExpr, NoThunks)
93-
94-
instance Arbitrary ModifyDB where
95-
arbitrary = elements [KeepDB, ClearDB]
96-
97-
keepsDB :: ModifyDB -> Bool
98-
keepsDB KeepDB = True
99-
keepsDB ClearDB = False
100-
10191
-- | The model
10292
data Model blk r = Model
10393
{ modelMempoolIntermediateState :: !(TickedLedgerState blk ValuesMK)
@@ -117,11 +107,7 @@ data Model blk r = Model
117107
modelLedgerDBTip :: !(LedgerState blk ValuesMK)
118108
-- ^ The current tip on the ledgerdb
119109
, modelReachableStates :: !(Set (LedgerState blk ValuesMK))
120-
-- ^ The old states which are still on the LedgerDB. These should
121-
-- technically be ancestors of the tip, but for the mempool we don't care.
122-
, modelOtherStates :: !(Set (LedgerState blk ValuesMK))
123-
-- ^ States which were previously on the LedgerDB. We keep these so that
124-
-- 'ChangeLedger' does not generate a different state with the same hash.
110+
-- ^ The old states which are still on the LedgerDB.
125111
}
126112

127113
-- | The commands used by QSM
@@ -152,7 +138,6 @@ data Action blk r
152138
data Event blk r
153139
= ChangeLedger
154140
!(LedgerState blk ValuesMK)
155-
!ModifyDB
156141
deriving Generic1
157142
deriving (Rank2.Functor, Rank2.Foldable, Rank2.Traversable, CommandNames)
158143

@@ -240,18 +225,15 @@ generator ma gTxs model =
240225
( getTip modelLedgerDBTip
241226
`Set.insert` Set.map
242227
getTip
243-
( modelOtherStates
244-
`Set.union` modelReachableStates
245-
)
228+
modelReachableStates
246229
)
247230
. getTip
248231
)
249232
]
250233
++ (if Set.null modelReachableStates then [] else [elements (Set.toList modelReachableStates)])
251-
++ (if Set.null modelOtherStates then [] else [elements (Set.toList modelOtherStates)])
252234
)
253235
`suchThat` (not . (== (getTip modelLedgerDBTip)) . getTip)
254-
Event . ChangeLedger ls <$> arbitrary
236+
pure $ Event $ ChangeLedger ls
255237
)
256238
, (10, pure $ Action GetSnapshot)
257239
]
@@ -260,7 +242,6 @@ generator ma gTxs model =
260242
{ modelMempoolIntermediateState
261243
, modelLedgerDBTip
262244
, modelReachableStates
263-
, modelOtherStates
264245
} = model
265246

266247
data Response blk r
@@ -293,7 +274,6 @@ initModel cfg capacity initialState =
293274
, modelLastSeenTicketNo = zeroTicketNo
294275
, modelCapacity = capacity
295276
, modelConfig = cfg
296-
, modelOtherStates = Set.empty
297277
}
298278
where
299279
ticked = tick cfg initialState
@@ -306,7 +286,7 @@ mock model = \case
306286
Action (TryAddTxs _) -> pure Void
307287
Action SyncLedger -> pure Void
308288
Action GetSnapshot -> pure $ GotSnapshot $ modelTxs model
309-
Event (ChangeLedger _ _) -> pure Void
289+
Event (ChangeLedger _) -> pure Void
310290

311291
{-------------------------------------------------------------------------------
312292
Transitions
@@ -347,25 +327,17 @@ doChangeLedger ::
347327
(StandardHash blk, GetTip (LedgerState blk)) =>
348328
Model blk r ->
349329
LedgerState blk ValuesMK ->
350-
ModifyDB ->
351330
Model blk r
352-
doChangeLedger model l' b' =
331+
doChangeLedger model l' =
353332
model
354333
{ modelLedgerDBTip = l'
355334
, modelReachableStates =
356-
if keepsDB b'
357-
then l' `Set.delete` Set.insert modelLedgerDBTip modelReachableStates
358-
else Set.empty
359-
, modelOtherStates =
360-
if keepsDB b'
361-
then modelOtherStates
362-
else modelLedgerDBTip `Set.insert` (modelOtherStates `Set.union` modelReachableStates)
335+
l' `Set.delete` Set.insert modelLedgerDBTip modelReachableStates
363336
}
364337
where
365338
Model
366339
{ modelLedgerDBTip
367340
, modelReachableStates
368-
, modelOtherStates
369341
} = model
370342

371343
doTryAddTxs ::
@@ -419,7 +391,7 @@ transition ::
419391
Model blk r
420392
transition model cmd resp = case (cmd, resp) of
421393
(Action (TryAddTxs txs), Void) -> doTryAddTxs model txs
422-
(Event (ChangeLedger l b), Void) -> doChangeLedger model l b
394+
(Event (ChangeLedger l), Void) -> doChangeLedger model l
423395
(Action GetSnapshot, GotSnapshot{}) -> model
424396
(Action SyncLedger, Void) -> doSync model
425397
_ ->
@@ -619,36 +591,22 @@ semantics trcr cmd r = do
619591
mapM_ (addTx m AddTxForRemotePeer) txs
620592
pure Void
621593
Action SyncLedger -> do
622-
void $ syncWithLedger m
594+
void $ testSyncWithLedger m
623595
pure Void
624596
Action GetSnapshot -> do
625597
txs <- snapshotTxs <$> atomically (getSnapshot m)
626598
pure $ GotSnapshot [(txForgetValidated vtx, tk) | (vtx, tk, _) <- txs]
627-
Event (ChangeLedger l' newReachable) -> do
599+
Event (ChangeLedger l') -> do
628600
CT.traceWith trcr $ "ChangingLedger to " <> show (getTip l')
629601
atomically $ do
630602
MockedLedgerDB ledgerTip oldReachableTips oldUnreachableTips <- readTVar t
631603
if getTip l' == getTip ledgerTip
632604
then
633-
if keepsDB newReachable
634-
then pure ()
635-
else
636-
let (newReachableTips, newUnreachableTips) =
637-
( Set.empty
638-
, Set.insert ledgerTip $
639-
Set.union oldUnreachableTips oldReachableTips
640-
)
641-
in writeTVar t (MockedLedgerDB l' newReachableTips newUnreachableTips)
605+
pure ()
642606
else
643607
let
644608
(newReachableTips, newUnreachableTips) =
645-
if keepsDB newReachable
646-
then (Set.insert ledgerTip oldReachableTips, oldUnreachableTips)
647-
else
648-
( Set.empty
649-
, Set.insert ledgerTip $
650-
Set.union oldUnreachableTips oldReachableTips
651-
)
609+
(Set.insert ledgerTip oldReachableTips, oldUnreachableTips)
652610
in
653611
writeTVar t (MockedLedgerDB l' newReachableTips newUnreachableTips)
654612
pure Void
@@ -827,14 +785,11 @@ tests =
827785
\i -> fmap (fmap fst . fst) . genTxs i
828786
, testGroup
829787
"parallel"
830-
[ -- See ouroboros-consensus#1549 for why this test is disabled.
831-
832-
-- testProperty "atomic" $
833-
-- withMaxSuccess 1000 $
834-
-- prop_mempoolParallel testLedgerConfigNoSizeLimits txMaxBytes' testInitLedger Atomic $
835-
-- \i -> fmap (fmap fst . fst) . genTxs i
836-
-- ,
837-
testProperty "non atomic" $
788+
[ testProperty "atomic" $
789+
withMaxSuccess 1000 $
790+
prop_mempoolParallel testLedgerConfigNoSizeLimits txMaxBytes' testInitLedger Atomic $
791+
\i -> fmap (fmap fst . fst) . genTxs i
792+
, testProperty "non atomic" $
838793
withMaxSuccess 10 $
839794
prop_mempoolParallel testLedgerConfigNoSizeLimits txMaxBytes' testInitLedger NonAtomic $
840795
\i -> fmap (fmap fst . fst) . genTxs i
@@ -927,11 +882,10 @@ instance ToExpr (Action TestBlock r) where
927882
toExpr GetSnapshot = App "GetSnapshot" []
928883

929884
instance ToExpr (LedgerState blk ValuesMK) => ToExpr (Event blk r) where
930-
toExpr (ChangeLedger ls b) =
885+
toExpr (ChangeLedger ls) =
931886
Rec "ChangeLedger" $
932887
TD.fromList
933888
[ ("tip", toExpr ls)
934-
, ("newFork", toExpr b)
935889
]
936890

937891
instance ToExpr (Command TestBlock r) where

0 commit comments

Comments
 (0)