Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Test.Ouroboros.Network.PeerSelection.MockEnvironment
Synopsis
- newtype PeerGraph = PeerGraph [(PeerAddr, [PeerAddr], PeerInfo)]
- data GovernorMockEnvironment = GovernorMockEnvironment {
- peerGraph :: PeerGraph
- localRootPeers :: LocalRootPeers PeerAddr
- publicRootPeers :: Map PeerAddr (PeerAdvertise, IsLedgerPeer)
- bigLedgerPeers :: Set PeerAddr
- targets :: TimedScript PeerSelectionTargets
- pickKnownPeersForPeerShare :: PickScript PeerAddr
- pickColdPeersToPromote :: PickScript PeerAddr
- pickWarmPeersToPromote :: PickScript PeerAddr
- pickHotPeersToDemote :: PickScript PeerAddr
- pickWarmPeersToDemote :: PickScript PeerAddr
- pickColdPeersToForget :: PickScript PeerAddr
- peerSharing :: PeerSharing
- 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 PeerAddr)
- | TraceEnvRequestPublicRootPeers
- | TraceEnvRequestBigLedgerPeers
- | TraceEnvSetPublicRoots !(Map PeerAddr (PeerAdvertise, IsLedgerPeer))
- | TraceEnvPublicRootTTL
- | TraceEnvBigLedgerPeersTTL
- | 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)
- data TestTraceEvent
- = GovernorDebug !(DebugPeerSelection PeerAddr)
- | GovernorEvent !(TracePeerSelection PeerAddr)
- | GovernorCounters !PeerSelectionCounters
- | MockEnvEvent !TraceMockEnv
- selectGovernorEvents :: [(Time, TestTraceEvent)] -> [(Time, TracePeerSelection PeerAddr)]
- selectPeerSelectionTraceEvents :: SimTrace a -> [(Time, TestTraceEvent)]
- selectPeerSelectionTraceEventsUntil :: Time -> SimTrace a -> [(Time, TestTraceEvent)]
- peerShareReachablePeers :: PeerGraph -> Set PeerAddr -> Set PeerAddr
- newtype Script a = Script (NonEmpty a)
- type PickScript peeraddr = Script (PickMembers peeraddr)
- data ScriptDelay
- = NoDelay
- | ShortDelay
- | LongDelay
- | Delay DiffTime
- 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))
- interpretPickScript :: forall (m :: Type -> Type) peeraddr. (MonadSTM m, Ord peeraddr) => TVar 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
- singletonScript :: a -> Script 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
- data PeerStatus
- tests :: TestTree
- prop_shrink_nonequal_GovernorMockEnvironment :: ShrinkCarefully GovernorMockEnvironment -> Property
Documentation
The peer graph is the graph of all the peers in the mock p2p network, in traditional adjacency representation.
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.Ouroboros.Network.PeerSelection.MockEnvironment Methods arbitrary :: Gen GovernorMockEnvironment shrink :: GovernorMockEnvironment -> [GovernorMockEnvironment] | |
Show GovernorMockEnvironment Source # | |
Eq GovernorMockEnvironment Source # | |
Defined in Test.Ouroboros.Network.PeerSelection.MockEnvironment Methods (==) :: GovernorMockEnvironment -> GovernorMockEnvironment -> Bool Source # (/=) :: GovernorMockEnvironment -> GovernorMockEnvironment -> Bool Source # |
newtype GovernorMockEnvironmentWithoutAsyncDemotion Source #
GovernorMockEnvironment
which does not do any asynchronous demotions.
Constructors
GovernorMockEnvironmentWAD GovernorMockEnvironment |
Instances
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
Instances
data TestTraceEvent Source #
Constructors
GovernorDebug !(DebugPeerSelection PeerAddr) | |
GovernorEvent !(TracePeerSelection PeerAddr) | |
GovernorCounters !PeerSelectionCounters | |
MockEnvEvent !TraceMockEnv |
Instances
selectGovernorEvents :: [(Time, TestTraceEvent)] -> [(Time, TracePeerSelection PeerAddr)] Source #
selectPeerSelectionTraceEvents :: SimTrace a -> [(Time, TestTraceEvent)] Source #
selectPeerSelectionTraceEventsUntil :: Time -> SimTrace a -> [(Time, TestTraceEvent)] Source #
Instances
Foldable Script | |
Defined in Ouroboros.Network.Testing.Data.Script Methods fold :: Monoid m => Script m -> m Source # foldMap :: Monoid m => (a -> m) -> Script a -> m Source # foldMap' :: Monoid m => (a -> m) -> Script a -> m Source # foldr :: (a -> b -> b) -> b -> Script a -> b Source # foldr' :: (a -> b -> b) -> b -> Script a -> b Source # foldl :: (b -> a -> b) -> b -> Script a -> b Source # foldl' :: (b -> a -> b) -> b -> Script a -> b Source # foldr1 :: (a -> a -> a) -> Script a -> a Source # foldl1 :: (a -> a -> a) -> Script a -> a Source # toList :: Script a -> [a] Source # null :: Script a -> Bool Source # length :: Script a -> Int Source # elem :: Eq a => a -> Script a -> Bool Source # maximum :: Ord a => Script a -> a Source # minimum :: Ord a => Script a -> a Source # | |
Traversable Script | |
Defined in Ouroboros.Network.Testing.Data.Script | |
Functor Script | |
Arbitrary a => Arbitrary (Script a) | |
Show a => Show (Script a) | |
Eq a => Eq (Script a) | |
type PickScript peeraddr = Script (PickMembers peeraddr) #
data ScriptDelay #
Constructors
NoDelay | |
ShortDelay | |
LongDelay | |
Delay DiffTime |
Instances
Arbitrary ScriptDelay | |
Defined in Ouroboros.Network.Testing.Data.Script | |
Show ScriptDelay | |
Defined in Ouroboros.Network.Testing.Data.Script | |
Eq ScriptDelay | |
Defined in Ouroboros.Network.Testing.Data.Script Methods (==) :: ScriptDelay -> ScriptDelay -> Bool Source # (/=) :: ScriptDelay -> ScriptDelay -> Bool Source # |
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)) #
interpretPickScript :: forall (m :: Type -> Type) peeraddr. (MonadSTM m, Ord peeraddr) => TVar 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 #
singletonScript :: a -> Script 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 #
data PeerStatus #
Constructors
PeerCold | |
PeerCooling | |
PeerWarm | |
PeerHot |
Instances
Show PeerStatus | |
Defined in Ouroboros.Network.PeerSelection.Types | |
Eq PeerStatus | |
Defined in Ouroboros.Network.PeerSelection.Types Methods (==) :: PeerStatus -> PeerStatus -> Bool Source # (/=) :: PeerStatus -> PeerStatus -> Bool Source # | |
Ord PeerStatus | |
Defined in Ouroboros.Network.PeerSelection.Types Methods compare :: PeerStatus -> PeerStatus -> Ordering Source # (<) :: PeerStatus -> PeerStatus -> Bool Source # (<=) :: PeerStatus -> PeerStatus -> Bool Source # (>) :: PeerStatus -> PeerStatus -> Bool Source # (>=) :: PeerStatus -> PeerStatus -> Bool Source # max :: PeerStatus -> PeerStatus -> PeerStatus Source # min :: PeerStatus -> PeerStatus -> PeerStatus Source # |
prop_shrink_nonequal_GovernorMockEnvironment :: ShrinkCarefully GovernorMockEnvironment -> Property Source #