| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Test.Cardano.Network.PeerSelection.MockEnvironment
Synopsis
- newtype PeerGraph = PeerGraph [(PeerAddr, [PeerAddr], PeerInfo)]
- data GovernorMockEnvironment = GovernorMockEnvironment {
- peerGraph :: !PeerGraph
- localRootPeers :: !(LocalRootPeers PeerTrustable PeerAddr)
- publicRootPeers :: !(PublicRootPeers (ExtraPeers PeerAddr) PeerAddr)
- targets :: !(TimedScript (PeerSelectionTargets, PeerSelectionTargets))
- pickKnownPeersForPeerShare :: !(PickScript PeerAddr)
- pickColdPeersToPromote :: !(PickScript PeerAddr)
- pickWarmPeersToPromote :: !(PickScript PeerAddr)
- pickHotPeersToDemote :: !(PickScript PeerAddr)
- pickWarmPeersToDemote :: !(PickScript PeerAddr)
- pickColdPeersToForget :: !(PickScript PeerAddr)
- pickInboundPeers :: !(PickScript PeerAddr)
- peerSharingFlag :: !PeerSharing
- useBootstrapPeers :: !(TimedScript UseBootstrapPeers)
- consensusMode :: !ConsensusMode
- useLedgerPeers :: !(TimedScript UseLedgerPeers)
- ledgerStateJudgement :: !(TimedScript LedgerStateJudgement)
- seed :: !TestSeed
- newtype GovernorPraosMockEnvironment = GovernorPraosMockEnvironment {}
- newtype GovernorMockEnvironmentWithoutAsyncDemotion = GovernorMockEnvironmentWAD GovernorMockEnvironment
- runGovernorInMockEnvironment :: GovernorMockEnvironment -> SimTrace Void
- exploreGovernorInMockEnvironment :: Testable test => (ExplorationOptions -> ExplorationOptions) -> GovernorMockEnvironment -> (Maybe (SimTrace Void) -> SimTrace Void -> test) -> Property
- data TraceMockEnv
- = TraceEnvAddPeers !PeerGraph
- | TraceEnvSetLocalRoots !(LocalRootPeers PeerTrustable PeerAddr)
- | TraceEnvRequestPublicRootPeers
- | TraceEnvRequestBigLedgerPeers
- | TraceEnvSetPublicRoots !(PublicRootPeers (ExtraPeers PeerAddr) PeerAddr)
- | TraceEnvPublicRootTTL
- | TraceEnvBigLedgerPeersTTL
- | TraceEnvPeerShareTTL !PeerAddr
- | TraceEnvSetTargets !PeerSelectionTargets
- | TraceEnvPeersDemote !AsyncDemotion !PeerAddr
- | TraceEnvEstablishConn !PeerAddr
- | TraceEnvActivatePeer !PeerAddr
- | TraceEnvDeactivatePeer !PeerAddr
- | TraceEnvCloseConn !PeerAddr
- | TraceEnvRootsResult ![PeerAddr]
- | TraceEnvBigLedgerPeersResult !(Set PeerAddr)
- | TraceEnvPeerShareRequest !PeerAddr !(Maybe ([PeerAddr], PeerShareTime))
- | TraceEnvPeerShareResult !PeerAddr ![PeerAddr]
- | TraceEnvPeersStatus !(Map PeerAddr PeerStatus)
- | TraceEnvSetUseBootstrapPeers !UseBootstrapPeers
- | TraceEnvSetLedgerStateJudgement !LedgerStateJudgement
- | TraceEnvUseLedgerPeers !UseLedgerPeers
- | TraceEnvGenesisLsjAndTargets !(LedgerStateJudgement, PeerSelectionTargets)
- data TestTraceEvent extraState extraFlags extraPeers
- = GovernorDebug !(DebugPeerSelection extraState extraFlags extraPeers PeerAddr)
- | GovernorEvent !(TracePeerSelection extraState extraFlags extraPeers PeerAddr)
- | GovernorCounters !(PeerSelectionCounters (ViewExtraPeers extraPeers))
- | GovernorAssociationMode !AssociationMode
- | MockEnvEvent !TraceMockEnv
- selectGovernorEvents :: [(Time, TestTraceEvent extraState extraFlags extraPeers)] -> [(Time, TracePeerSelection extraState extraFlags extraPeers PeerAddr)]
- selectGovernorStateEvents :: [(Time, TestTraceEvent extraState extraFlags extraPeers)] -> [(Time, DebugPeerSelection extraState extraFlags extraPeers PeerAddr)]
- selectPeerSelectionTraceEvents :: (Typeable extraState, Typeable extraFlags, Typeable extraPeers) => SimTrace a -> [(Time, TestTraceEvent extraState extraFlags extraPeers)]
- selectPeerSelectionTraceEventsUntil :: (Typeable extraState, Typeable extraFlags, Typeable extraPeers) => Time -> SimTrace a -> [(Time, TestTraceEvent extraState extraFlags extraPeers)]
- peerShareReachablePeers :: PeerGraph -> Set PeerAddr -> Set PeerAddr
- data ScriptDelay
- newtype Script a = Script (NonEmpty a)
- type PickScript peeraddr = Script (PickMembers peeraddr)
- type TimedScript a = Script (a, ScriptDelay)
- arbitraryPickScript :: Gen (Set peeraddr) -> Gen (PickScript peeraddr)
- arbitraryScriptOf :: Int -> Gen a -> Gen (Script a)
- initScript :: MonadSTM m => Script a -> m (TVar m (Script a))
- initScript' :: MonadSTM m => Script a -> m (StrictTVar m (Script a))
- interpretPickScript :: forall (m :: Type -> Type) peeraddr. (MonadSTM m, Ord peeraddr) => StrictTVar m (PickScript peeraddr) -> Set peeraddr -> Int -> STM m (Set peeraddr)
- playTimedScript :: (MonadAsync m, MonadDelay m) => Tracer m a -> TimedScript a -> m (TVar m a)
- prop_shrink_Script :: ShrinkCarefully (Script Int) -> Property
- shrinkScriptWith :: (a -> [a]) -> Script a -> [Script a]
- singletonScript :: a -> Script a
- singletonTimedScript :: a -> TimedScript a
- stepScript :: MonadSTM m => TVar m (Script a) -> m a
- stepScriptSTM :: forall (m :: Type -> Type) a. MonadSTM m => TVar m (Script a) -> STM m a
- stepScriptSTM' :: forall (m :: Type -> Type) a. MonadSTM m => StrictTVar m (Script a) -> STM m a
- tests :: TestTree
- prop_shrink_nonequal_GovernorMockEnvironment :: ShrinkCarefully GovernorMockEnvironment -> Property
- config_REPROMOTE_DELAY :: RepromoteDelay
Documentation
Constructors
| PeerGraph [(PeerAddr, [PeerAddr], PeerInfo)] |
data GovernorMockEnvironment Source #
The data needed to execute the peer selection governor in a test with a
mock network environment. It contains the data needed to provide the
PeerSelectionActions and PeerSelectionPolicy to run the governor.
The representations are chosen to be easily shrinkable. See the Arbitrary
instances.
Constructors
| GovernorMockEnvironment | |
Fields
| |
Instances
| Arbitrary GovernorMockEnvironment Source # | |
Defined in Test.Cardano.Network.PeerSelection.MockEnvironment Methods arbitrary :: Gen GovernorMockEnvironment # shrink :: GovernorMockEnvironment -> [GovernorMockEnvironment] # | |
| Show GovernorMockEnvironment Source # | |
Defined in Test.Cardano.Network.PeerSelection.MockEnvironment Methods showsPrec :: Int -> GovernorMockEnvironment -> ShowS # show :: GovernorMockEnvironment -> String # showList :: [GovernorMockEnvironment] -> ShowS # | |
| Eq GovernorMockEnvironment Source # | |
Defined in Test.Cardano.Network.PeerSelection.MockEnvironment Methods (==) :: GovernorMockEnvironment -> GovernorMockEnvironment -> Bool # (/=) :: GovernorMockEnvironment -> GovernorMockEnvironment -> Bool # | |
newtype GovernorPraosMockEnvironment Source #
This instance is used to generate test cases for properties which rely on peer selection prior to introduction of Genesis
Constructors
| GovernorPraosMockEnvironment | |
Fields | |
Instances
newtype GovernorMockEnvironmentWithoutAsyncDemotion Source #
GovernorMockEnvironment which does not do any asynchronous demotions.
Constructors
| GovernorMockEnvironmentWAD GovernorMockEnvironment |
runGovernorInMockEnvironment :: GovernorMockEnvironment -> SimTrace Void Source #
Run the peerSelectionGovernor in the mock environment dictated by the
data in the GovernorMockEnvironment.
The result is an execution trace.
exploreGovernorInMockEnvironment :: Testable test => (ExplorationOptions -> ExplorationOptions) -> GovernorMockEnvironment -> (Maybe (SimTrace Void) -> SimTrace Void -> test) -> Property Source #
data TraceMockEnv Source #
Constructors
| TraceEnvAddPeers !PeerGraph | |
| TraceEnvSetLocalRoots !(LocalRootPeers PeerTrustable PeerAddr) | |
| TraceEnvRequestPublicRootPeers | |
| TraceEnvRequestBigLedgerPeers | |
| TraceEnvSetPublicRoots !(PublicRootPeers (ExtraPeers PeerAddr) PeerAddr) | |
| TraceEnvPublicRootTTL | |
| TraceEnvBigLedgerPeersTTL | |
| TraceEnvPeerShareTTL !PeerAddr | |
| TraceEnvSetTargets !PeerSelectionTargets | |
| TraceEnvPeersDemote !AsyncDemotion !PeerAddr | |
| TraceEnvEstablishConn !PeerAddr | |
| TraceEnvActivatePeer !PeerAddr | |
| TraceEnvDeactivatePeer !PeerAddr | |
| TraceEnvCloseConn !PeerAddr | |
| TraceEnvRootsResult ![PeerAddr] | |
| TraceEnvBigLedgerPeersResult !(Set PeerAddr) | |
| TraceEnvPeerShareRequest !PeerAddr !(Maybe ([PeerAddr], PeerShareTime)) | |
| TraceEnvPeerShareResult !PeerAddr ![PeerAddr] | |
| TraceEnvPeersStatus !(Map PeerAddr PeerStatus) | |
| TraceEnvSetUseBootstrapPeers !UseBootstrapPeers | |
| TraceEnvSetLedgerStateJudgement !LedgerStateJudgement | |
| TraceEnvUseLedgerPeers !UseLedgerPeers | |
| TraceEnvGenesisLsjAndTargets !(LedgerStateJudgement, PeerSelectionTargets) |
Instances
| Show TraceMockEnv Source # | |
Defined in Test.Cardano.Network.PeerSelection.MockEnvironment Methods showsPrec :: Int -> TraceMockEnv -> ShowS # show :: TraceMockEnv -> String # showList :: [TraceMockEnv] -> ShowS # | |
data TestTraceEvent extraState extraFlags extraPeers Source #
Constructors
| GovernorDebug !(DebugPeerSelection extraState extraFlags extraPeers PeerAddr) | |
| GovernorEvent !(TracePeerSelection extraState extraFlags extraPeers PeerAddr) | |
| GovernorCounters !(PeerSelectionCounters (ViewExtraPeers extraPeers)) | |
| GovernorAssociationMode !AssociationMode | |
| MockEnvEvent !TraceMockEnv |
Instances
| (Show extraState, Show extraFlags, Show (ViewExtraPeers extraPeers), SupportsPeerSelectionState extraPeers PeerAddr) => Show (TestTraceEvent extraState extraFlags extraPeers) Source # | |
Defined in Test.Cardano.Network.PeerSelection.MockEnvironment Methods showsPrec :: Int -> TestTraceEvent extraState extraFlags extraPeers -> ShowS # show :: TestTraceEvent extraState extraFlags extraPeers -> String # showList :: [TestTraceEvent extraState extraFlags extraPeers] -> ShowS # | |
selectGovernorEvents :: [(Time, TestTraceEvent extraState extraFlags extraPeers)] -> [(Time, TracePeerSelection extraState extraFlags extraPeers PeerAddr)] Source #
selectGovernorStateEvents :: [(Time, TestTraceEvent extraState extraFlags extraPeers)] -> [(Time, DebugPeerSelection extraState extraFlags extraPeers PeerAddr)] Source #
selectPeerSelectionTraceEvents :: (Typeable extraState, Typeable extraFlags, Typeable extraPeers) => SimTrace a -> [(Time, TestTraceEvent extraState extraFlags extraPeers)] Source #
selectPeerSelectionTraceEventsUntil :: (Typeable extraState, Typeable extraFlags, Typeable extraPeers) => Time -> SimTrace a -> [(Time, TestTraceEvent extraState extraFlags extraPeers)] Source #
peerShareReachablePeers :: PeerGraph -> Set PeerAddr -> Set PeerAddr #
data ScriptDelay #
Constructors
| NoDelay | |
| ShortDelay | |
| LongDelay | |
| Delay DiffTime |
Instances
| Arbitrary ScriptDelay | |
Defined in Test.Ouroboros.Network.Data.Script | |
| Show ScriptDelay | |
Defined in Test.Ouroboros.Network.Data.Script Methods showsPrec :: Int -> ScriptDelay -> ShowS # show :: ScriptDelay -> String # showList :: [ScriptDelay] -> ShowS # | |
| Eq ScriptDelay | |
Defined in Test.Ouroboros.Network.Data.Script | |
Instances
| Functor Script | |
| Foldable Script | |
Defined in Test.Ouroboros.Network.Data.Script Methods fold :: Monoid m => Script m -> m # foldMap :: Monoid m => (a -> m) -> Script a -> m # foldMap' :: Monoid m => (a -> m) -> Script a -> m # foldr :: (a -> b -> b) -> b -> Script a -> b # foldr' :: (a -> b -> b) -> b -> Script a -> b # foldl :: (b -> a -> b) -> b -> Script a -> b # foldl' :: (b -> a -> b) -> b -> Script a -> b # foldr1 :: (a -> a -> a) -> Script a -> a # foldl1 :: (a -> a -> a) -> Script a -> a # elem :: Eq a => a -> Script a -> Bool # maximum :: Ord a => Script a -> a # minimum :: Ord a => Script a -> a # | |
| Traversable Script | |
| Arbitrary a => Arbitrary (Script a) | |
| NFData a => NFData (Script a) | |
Defined in Test.Ouroboros.Network.Data.Script | |
| Show a => Show (Script a) | |
| Eq a => Eq (Script a) | |
type PickScript peeraddr = Script (PickMembers peeraddr) #
type TimedScript a = Script (a, ScriptDelay) #
arbitraryPickScript :: Gen (Set peeraddr) -> Gen (PickScript peeraddr) #
initScript' :: MonadSTM m => Script a -> m (StrictTVar m (Script a)) #
interpretPickScript :: forall (m :: Type -> Type) peeraddr. (MonadSTM m, Ord peeraddr) => StrictTVar m (PickScript peeraddr) -> Set peeraddr -> Int -> STM m (Set peeraddr) #
playTimedScript :: (MonadAsync m, MonadDelay m) => Tracer m a -> TimedScript a -> m (TVar m a) #
prop_shrink_Script :: ShrinkCarefully (Script Int) -> Property #
shrinkScriptWith :: (a -> [a]) -> Script a -> [Script a] #
singletonScript :: a -> Script a #
singletonTimedScript :: a -> TimedScript a #
stepScript :: MonadSTM m => TVar m (Script a) -> m a #
prop_shrink_nonequal_GovernorMockEnvironment :: ShrinkCarefully GovernorMockEnvironment -> Property Source #