Skip to content

Commit 3690d96

Browse files
authored
Merge pull request #5211 from IntersectMBO/coot/net-sim-tracer
Net-Sim tracer improvements
2 parents 4eb9750 + 9770f3a commit 3690d96

File tree

9 files changed

+142
-100
lines changed

9 files changed

+142
-100
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
### Breaking
2+
3+
- `diffusionSimulation`: removed tracer argument, no longer polymorphic in
4+
monad - using `IOSim` only. `diffusionSimulationM` is available but not
5+
exported.
6+
7+
### Non-Breaking
8+
9+
- Testing improvements in net-sim.
10+

cardano-diffusion/tests/lib/Test/Cardano/Network/Diffusion/Testnet.hs

Lines changed: 47 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -309,38 +309,49 @@ traceFromList = Trace.fromList (MainReturn (Time 0) (Labelled (ThreadId []) (Ju
309309

310310

311311
testWithIOSim :: (SimTrace Void -> Int -> Property)
312+
-- ^ property to verify
312313
-> Int
314+
-- ^ number of trace events to analyse
313315
-> AbsBearerInfo
316+
-- ^ bearer configuration
314317
-> DiffusionScript
318+
-- ^ sim-net configuration
315319
-> Property
316-
testWithIOSim f traceNumber bi ds =
320+
testWithIOSim prop traceNumber bi ds =
317321
let sim :: forall s . IOSim s Void
318322
sim = diffusionSimulation (toBearerInfo bi)
319323
ds
320-
iosimTracer
321324
trace = runSimTrace sim
322-
in labelDiffusionScript ds
323-
$ counterexample (intercalate "\n" $
324-
selectTraceEventsSay' $ Trace.take traceNumber trace)
325-
--counterexample (Trace.ppTrace show (ppSimEvent 0 0 0) $ Trace.take traceNumber trace)
326-
$ f trace traceNumber
325+
in labelDiffusionScript ds $
326+
-- we don't capture the time in the say trace, we add it here
327+
counterexample (intercalate "\n" $ map (\(Time t, ev) -> show t <> " " <> ev) $
328+
selectTraceEventsSayWithTime' $ Trace.take traceNumber trace) $
329+
-- counterexample (Trace.ppTrace show (ppSimEvent 0 0 0) $ Trace.take traceNumber trace) $
330+
prop trace traceNumber
327331

328332

329333
testWithIOSimPOR :: (SimTrace Void -> Int -> Property)
334+
-- ^ property to verify
330335
-> Int
336+
-- ^ number of trace events to analyse
331337
-> AbsBearerInfo
338+
-- ^ bearer configuration
332339
-> DiffusionScript
340+
-- ^ sim-net configuration
333341
-> Property
334-
testWithIOSimPOR f traceNumber bi ds =
342+
testWithIOSimPOR prop traceNumber bi ds =
335343
let sim :: forall s . IOSim s Void
336344
sim = do
337345
exploreRaces
338346
diffusionSimulation (toBearerInfo bi)
339347
ds
340-
iosimTracer
341348
in labelDiffusionScript ds
342-
$ exploreSimTrace id sim $ \_ ioSimTrace ->
343-
f ioSimTrace traceNumber
349+
$ exploreSimTrace id sim $ \_ trace ->
350+
-- we don't capture the time in the say trace, we add it here
351+
counterexample (intercalate "\n" $ map (\(Time t, ev) -> show t <> " " <> ev) $
352+
selectTraceEventsSayWithTime' $ Trace.take traceNumber trace) $
353+
-- counterexample (Trace.ppTrace show (ppSimEvent 0 0 0) $ Trace.take traceNumber trace) $
354+
prop trace traceNumber
344355

345356

346357
--
@@ -489,9 +500,8 @@ unit_cm_valid_transitions =
489500
]
490501
]
491502
sim :: forall s. IOSim s Void
492-
sim = do
493-
exploreRaces
494-
diffusionSimulation (toBearerInfo bi) ds iosimTracer
503+
sim = diffusionSimulation (toBearerInfo bi) ds
504+
495505
in exploreSimTrace (\a -> a { explorationReplay = Just s }) sim $ \_ ioSimTrace ->
496506
prop_diffusion_cm_valid_transition_order' ioSimTrace short_trace
497507

@@ -551,7 +561,6 @@ unit_connection_manager_trace_coverage =
551561
let sim :: forall s . IOSim s Void
552562
sim = diffusionSimulation (toBearerInfo absNoAttenuation)
553563
script
554-
iosimTracer
555564

556565
events :: [CM.Trace
557566
NtNAddr
@@ -661,7 +670,6 @@ unit_connection_manager_transitions_coverage =
661670
let sim :: forall s . IOSim s Void
662671
sim = diffusionSimulation (toBearerInfo absNoAttenuation)
663672
script
664-
iosimTracer
665673
trace = runSimTrace sim
666674

667675
-- events from `traceTVar` installed in `newMutableConnState`
@@ -785,7 +793,6 @@ prop_inbound_governor_trace_coverage defaultBearerInfo diffScript =
785793
let sim :: forall s . IOSim s Void
786794
sim = diffusionSimulation (toBearerInfo defaultBearerInfo)
787795
diffScript
788-
iosimTracer
789796

790797
events :: [IG.Trace NtNAddr]
791798
events = mapMaybe (\case DiffusionInboundGovernorTrace st -> Just st
@@ -943,8 +950,7 @@ prop_txSubmission_allTransactions (ArbTxDecisionPolicy decisionPolicy)
943950
]
944951
in checkAllTransactions (runSimTrace
945952
(diffusionSimulation noAttenuation
946-
diffScript
947-
iosimTracer)
953+
diffScript)
948954
)
949955
500_000 -- ^ Running for 500k might not be enough.
950956
where
@@ -1044,7 +1050,6 @@ prop_check_inflight_ratio bi ds@(DiffusionScript simArgs _ _) =
10441050
let sim :: forall s . IOSim s Void
10451051
sim = diffusionSimulation (toBearerInfo bi)
10461052
ds
1047-
iosimTracer
10481053

10491054
events :: Events DiffusionTestTrace
10501055
events = Signal.eventsFromList
@@ -1088,7 +1093,6 @@ prop_inbound_governor_transitions_coverage defaultBearerInfo diffScript =
10881093
let sim :: forall s . IOSim s Void
10891094
sim = diffusionSimulation (toBearerInfo defaultBearerInfo)
10901095
diffScript
1091-
iosimTracer
10921096

10931097
events :: [IG.RemoteTransitionTrace NtNAddr]
10941098
events = mapMaybe (\case DiffusionInboundGovernorTransitionTrace st ->
@@ -1120,7 +1124,6 @@ prop_fetch_client_state_trace_coverage defaultBearerInfo diffScript =
11201124
let sim :: forall s . IOSim s Void
11211125
sim = diffusionSimulation (toBearerInfo defaultBearerInfo)
11221126
diffScript
1123-
iosimTracer
11241127

11251128
events :: [TraceFetchClientState BlockHeader]
11261129
events = mapMaybe (\case DiffusionFetchTrace st ->
@@ -1281,7 +1284,9 @@ prop_only_bootstrap_peers_in_fallback_state ioSimTrace traceNumber =
12811284
<*> govLedgerStateJudgement
12821285
<*> trIsNodeAlive
12831286
)
1284-
in counterexample (List.intercalate "\n" $ map show $ Signal.eventsToList events)
1287+
in counterexample
1288+
(List.intercalate "\n" $
1289+
map (show . uncurry WithTime) $ Signal.eventsToList events)
12851290
$ signalProperty 20 show
12861291
Set.null
12871292
keepNonTrustablePeersTooLong
@@ -1509,7 +1514,6 @@ prop_server_trace_coverage defaultBearerInfo diffScript =
15091514
let sim :: forall s . IOSim s Void
15101515
sim = diffusionSimulation (toBearerInfo defaultBearerInfo)
15111516
diffScript
1512-
iosimTracer
15131517

15141518
events :: [Server.Trace NtNAddr]
15151519
events = mapMaybe (\case DiffusionServerTrace st -> Just st
@@ -1538,7 +1542,6 @@ prop_peer_selection_action_trace_coverage defaultBearerInfo diffScript =
15381542
let sim :: forall s . IOSim s Void
15391543
sim = diffusionSimulation (toBearerInfo defaultBearerInfo)
15401544
diffScript
1541-
iosimTracer
15421545

15431546
events :: [PeerSelectionActionsTrace NtNAddr NtNVersion]
15441547
events = mapMaybe (\case DiffusionPeerSelectionActionsTrace st -> Just st
@@ -1597,7 +1600,6 @@ prop_peer_selection_trace_coverage defaultBearerInfo diffScript =
15971600
let sim :: forall s . IOSim s Void
15981601
sim = diffusionSimulation (toBearerInfo defaultBearerInfo)
15991602
diffScript
1600-
iosimTracer
16011603

16021604
events :: [TracePeerSelection Cardano.ExtraState
16031605
PeerTrustable
@@ -2815,7 +2817,11 @@ prop_diffusion_target_established_local ioSimTrace traceNumber =
28152817
id
28162818
promotionOpportunities
28172819

2818-
in counterexample
2820+
in
2821+
-- counterexample
2822+
-- (List.intercalate "\n"
2823+
-- (map (show . uncurry WithTime) $ eventsToList events))
2824+
counterexample
28192825
("\nSignal key: (local root peers, est. local peers, in progress promotions, " ++
28202826
"recent failures, opportunities, ignored too long)\n"
28212827
)
@@ -2997,7 +3003,10 @@ prop_diffusion_target_active_below ioSimTrace traceNumber =
29973003
id
29983004
promotionOpportunities
29993005

3000-
in counterexample
3006+
in
3007+
-- counterexample
3008+
-- (List.intercalate "\n" $ map (show . uncurry WithTime) $ Signal.eventsToList events) $
3009+
counterexample
30013010
("\nSignal key: (local, established peers, active peers, " ++
30023011
"recent failures, opportunities, is node running, ignored too long)") $
30033012
signalProperty 20 show
@@ -3166,12 +3175,13 @@ prop_diffusion_target_active_local_below ioSimTrace traceNumber =
31663175
id
31673176
promotionOpportunities
31683177

3169-
in counterexample
3178+
in
3179+
-- counterexample
3180+
-- (List.intercalate "\n" $
3181+
-- map (show . uncurry WithTime) $ Signal.eventsToList events) $
3182+
counterexample
31703183
("\nSignal key: (local, established peers, active peers, " ++
31713184
"recent failures, opportunities, ignored too long)") $
3172-
-- counterexample
3173-
-- (List.intercalate "\n" $ map show $ Signal.eventsToList events) $
3174-
31753185
signalProperty 20 show
31763186
(\(_,_,_,_,_,toolong) -> Set.null toolong)
31773187
((,,,,,) <$> (LocalRootPeers.toGroupSets <$> govLocalRootPeersSig)
@@ -3308,7 +3318,7 @@ prop_diffusion_async_demotions ioSimTrace traceNumber =
33083318
lastTime = fst
33093319
. last
33103320
$ evsList
3311-
in counterexample (unlines $ map show evsList)
3321+
in counterexample (unlines $ map (show . uncurry WithTime) evsList)
33123322
$ classifySimulatedTime lastTime
33133323
$ classifyNumberOfEvents (length evsList)
33143324
$ verify_async_demotions ev
@@ -3534,11 +3544,11 @@ prop_diffusion_target_active_local_above ioSimTrace traceNumber =
35343544
id
35353545
demotionOpportunities
35363546

3537-
in counterexample
3547+
in
3548+
-- counterexample (List.intercalate "\n" $ map (show . uncurry WithTime) $ Signal.eventsToList events) $
3549+
counterexample
35383550
("\nSignal key: (local peers, active peers, " ++
35393551
"demotion opportunities, ignored too long)") $
3540-
--counterexample (List.intercalate "\n" $ map show $ Signal.eventsToList events) $
3541-
35423552
signalProperty 20 show
35433553
(\(_,_,_,toolong) -> Set.null toolong)
35443554
((,,,) <$> (LocalRootPeers.toGroupSets <$> govLocalRootPeersSig)
@@ -3975,7 +3985,6 @@ prop_unit_reconnect =
39753985
sim = diffusionSimulation (toBearerInfo (absNoAttenuation { abiInboundAttenuation = SpeedAttenuation SlowSpeed (Time 20) 1000
39763986
} ))
39773987
diffScript
3978-
iosimTracer
39793988

39803989
events :: [Events (WithName NtNAddr DiffusionTestTrace)]
39813990
events = Trace.toList
@@ -4272,7 +4281,6 @@ unit_peer_sharing =
42724281
let sim :: forall s. IOSim s Void
42734282
sim = diffusionSimulation (toBearerInfo absNoAttenuation)
42744283
script
4275-
iosimTracer
42764284

42774285
-- TODO: we need `CardanoTracePeerSelection addr` type alias!
42784286
events :: Map NtNAddr [TracePeerSelection Cardano.ExtraState
@@ -4862,7 +4870,7 @@ unit_local_root_diffusion_mode :: DiffusionMode
48624870
unit_local_root_diffusion_mode diffusionMode =
48634871
-- this is a unit test
48644872
withMaxSuccess 1 $
4865-
let sim = diffusionSimulation (toBearerInfo absNoAttenuation) script iosimTracer
4873+
let sim = diffusionSimulation (toBearerInfo absNoAttenuation) script
48664874

48674875
-- list of negotiated version data
48684876
events :: [NtNVersionData]

0 commit comments

Comments
 (0)