ouroboros-consensus:unstable-consensus-testlib
Safe HaskellNone
LanguageHaskell2010

Test.Util.LogicalClock

Description

Logical time (in terms of abstract " ticks ")

Intended for qualified import

import Test.Util.LogicalClock (LogicalClock)
import qualified Test.Util.LogicalClock as LogicalClock
Synopsis

API

data LogicalClock (m ∷ Type → Type) Source #

Logical clock (in terms of ticks rather than actual UTCTime)

Constructors

LogicalClock 

Fields

newtype NumTicks Source #

Number of ticks the test will run for

Constructors

NumTicks Word64 

newtype Tick Source #

Logical time unit

Constructors

Tick 

Fields

Instances

Instances details
Eq Tick Source # 
Instance details

Defined in Test.Util.LogicalClock

Methods

(==) ∷ Tick → Tick → Bool #

(/=) ∷ Tick → Tick → Bool #

Ord Tick Source # 
Instance details

Defined in Test.Util.LogicalClock

Methods

compare ∷ Tick → Tick → Ordering #

(<) ∷ Tick → Tick → Bool #

(<=) ∷ Tick → Tick → Bool #

(>) ∷ Tick → Tick → Bool #

(>=) ∷ Tick → Tick → Bool #

max ∷ Tick → Tick → Tick #

min ∷ Tick → Tick → Tick #

Enum Tick Source # 
Instance details

Defined in Test.Util.LogicalClock

Methods

succ ∷ Tick → Tick #

pred ∷ Tick → Tick #

toEnum ∷ Int → Tick #

fromEnum ∷ Tick → Int #

enumFrom ∷ Tick → [Tick] #

enumFromThen ∷ Tick → Tick → [Tick] #

enumFromTo ∷ Tick → Tick → [Tick] #

enumFromThenTo ∷ Tick → Tick → Tick → [Tick] #

Num Tick Source # 
Instance details

Defined in Test.Util.LogicalClock

Methods

(+) ∷ Tick → Tick → Tick #

(-) ∷ Tick → Tick → Tick #

(*) ∷ Tick → Tick → Tick #

negate ∷ Tick → Tick #

abs ∷ Tick → Tick #

signum ∷ Tick → Tick #

fromInteger ∷ Integer → Tick #

Show Tick Source # 
Instance details

Defined in Test.Util.LogicalClock

Methods

showsPrec ∷ Int → Tick → ShowS #

show ∷ Tick → String #

showList ∷ [Tick] → ShowS #

Random Tick Source # 
Instance details

Defined in Test.Util.LogicalClock

Methods

randomR ∷ RandomGen g ⇒ (Tick, Tick) → g → (Tick, g) Source #

random ∷ RandomGen g ⇒ g → (Tick, g) Source #

randomRs ∷ RandomGen g ⇒ (Tick, Tick) → g → [Tick] Source #

randoms ∷ RandomGen g ⇒ g → [Tick] Source #

Construction

sufficientTimeFor ∷ HasCallStack ⇒ [Tick] → NumTicks Source #

Set NumTicks such that we will have seen all of the specified Ticks

Scheduling actions

blockUntilTick ∷ MonadSTM m ⇒ LogicalClock m → Tick → m Bool Source #

Block until the specified tick

Returns False if the current tick is later than the requested one, or True if they were equal.

onTick ∷ (IOLike m, HasCallStack) ⇒ ResourceRegistry m → LogicalClock m → String → Tick → m () → m () Source #

Execute action once at the specified tick

tickWatcher ∷ LogicalClock m → (Tick → m ()) → Watcher m Tick Tick Source #

Execute action on every clock tick

Utilities

tickTracer ∷ ∀ (m ∷ Type → Type) ev. MonadSTM m ⇒ LogicalClock m → Tracer m (Tick, ev) → Tracer m ev Source #