| 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 extraCounters extraTrace
- = GovernorDebug !(DebugPeerSelection extraState extraFlags extraPeers PeerAddr)
- | GovernorEvent !(TracePeerSelection extraState extraFlags extraPeers extraTrace PeerAddr)
- | GovernorCounters !(PeerSelectionCounters extraCounters)
- | GovernorAssociationMode !AssociationMode
- | MockEnvEvent !TraceMockEnv
- selectGovernorEvents :: [(Time, TestTraceEvent extraState extraFlags extraPeers extraCounters extraTrace)] -> [(Time, TracePeerSelection extraState extraFlags extraPeers extraTrace PeerAddr)]
- selectGovernorStateEvents :: [(Time, TestTraceEvent extraState extraFlags extraPeers extraCounters extraTrace)] -> [(Time, DebugPeerSelection extraState extraFlags extraPeers PeerAddr)]
- selectPeerSelectionTraceEvents :: (Typeable extraState, Typeable extraFlags, Typeable extraPeers, Typeable extraCounters, Typeable extraTrace) => SimTrace a -> [(Time, TestTraceEvent extraState extraFlags extraPeers extraCounters extraTrace)]
- selectPeerSelectionTraceEventsUntil :: (Typeable extraState, Typeable extraFlags, Typeable extraPeers, Typeable extraCounters, Typeable extraTrace) => Time -> SimTrace a -> [(Time, TestTraceEvent extraState extraFlags extraPeers extraCounters extraTrace)]
- 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
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
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
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 extraCounters extraTrace Source #
Constructors
| GovernorDebug !(DebugPeerSelection extraState extraFlags extraPeers PeerAddr) | |
| GovernorEvent !(TracePeerSelection extraState extraFlags extraPeers extraTrace PeerAddr) | |
| GovernorCounters !(PeerSelectionCounters extraCounters) | |
| GovernorAssociationMode !AssociationMode | |
| MockEnvEvent !TraceMockEnv |
Instances
| (Show extraState, Show extraFlags, Show extraPeers, Show extraTrace, Show extraCounters) => Show (TestTraceEvent extraState extraFlags extraPeers extraCounters extraTrace) Source # | |
Defined in Test.Cardano.Network.PeerSelection.MockEnvironment Methods showsPrec :: Int -> TestTraceEvent extraState extraFlags extraPeers extraCounters extraTrace -> ShowS # show :: TestTraceEvent extraState extraFlags extraPeers extraCounters extraTrace -> String # showList :: [TestTraceEvent extraState extraFlags extraPeers extraCounters extraTrace] -> ShowS # | |
selectGovernorEvents :: [(Time, TestTraceEvent extraState extraFlags extraPeers extraCounters extraTrace)] -> [(Time, TracePeerSelection extraState extraFlags extraPeers extraTrace PeerAddr)] Source #
selectGovernorStateEvents :: [(Time, TestTraceEvent extraState extraFlags extraPeers extraCounters extraTrace)] -> [(Time, DebugPeerSelection extraState extraFlags extraPeers PeerAddr)] Source #
selectPeerSelectionTraceEvents :: (Typeable extraState, Typeable extraFlags, Typeable extraPeers, Typeable extraCounters, Typeable extraTrace) => SimTrace a -> [(Time, TestTraceEvent extraState extraFlags extraPeers extraCounters extraTrace)] Source #
selectPeerSelectionTraceEventsUntil :: (Typeable extraState, Typeable extraFlags, Typeable extraPeers, Typeable extraCounters, Typeable extraTrace) => Time -> SimTrace a -> [(Time, TestTraceEvent extraState extraFlags extraPeers extraCounters extraTrace)] Source #
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 #