Documentation
¶
Index ¶
- Constants
- Variables
- func AccountKeyFixture() (*flow.AccountPrivateKey, error)
- func AddressFixture() flow.Address
- func AlterTransactionForCluster(tx flow.TransactionBody, clusters flow.ClusterList, target flow.IdentityList, ...) flow.TransactionBody
- func AssertClosesBefore(t *testing.T, done <-chan struct{}, duration time.Duration)
- func AssertErrSubstringMatch(t testing.TB, expected, actual error)
- func AssertReturnsBefore(t *testing.T, f func(), duration time.Duration)
- func BadgerDB(t testing.TB, dir string) *badger.DB
- func BatchFixture() flow.Batch
- func BatchListFixture(n int) []flow.Batch
- func BlockFixture() flow.Block
- func BlockFixtures(number int) []*flow.Block
- func BlockHeaderFixture() flow.Header
- func BlockHeaderFixtureOnChain(chainID flow.ChainID) flow.Header
- func BlockHeaderWithParentFixture(parent *flow.Header) flow.Header
- func BlockSealsFixture(n int) []*flow.Seal
- func BlockWithParentAndProposerFixture(parent *flow.Header, proposer flow.Identifier) flow.Block
- func BlockWithParentAndSeal(parent *flow.Header, sealed *flow.Header) *flow.Block
- func BlockWithParentFixture(parent *flow.Header) flow.Block
- func BootstrapExecutionResultFixture(block *flow.Block, commit flow.StateCommitment) *flow.ExecutionResult
- func BootstrapFixture(participants flow.IdentityList, opts ...func(*flow.Block)) (*flow.Block, *flow.ExecutionResult, *flow.Seal)
- func ChainFixture(nonGenesisCount int) ([]*flow.Block, *flow.ExecutionResult, *flow.Seal)
- func ChainFixtureFrom(count int, parent *flow.Header) []*flow.Block
- func ChunkDataPackFixture(identifier flow.Identifier) *flow.ChunkDataPack
- func ChunkFixture(blockID flow.Identifier) *flow.Chunk
- func ChunksFixture(n uint, blockID flow.Identifier) []*flow.Chunk
- func ClusterAssignment(n uint, nodes flow.IdentityList) flow.AssignmentList
- func ClusterBlockFixture() cluster.Block
- func ClusterBlockWithParent(parent *cluster.Block) cluster.Block
- func ClusterPayloadFixture(n int) *cluster.Payload
- func CollectionFixture(n int) flow.Collection
- func CollectionGuaranteeFixture(options ...func(*flow.CollectionGuarantee)) *flow.CollectionGuarantee
- func CollectionGuaranteesFixture(n int, options ...func(*flow.CollectionGuarantee)) []*flow.CollectionGuarantee
- func CommitWithCounter(counter uint64) func(*flow.EpochCommit)
- func CompleteCollectionFixture() *entity.CompleteCollection
- func CompleteIdentitySet(identities ...*flow.Identity) flow.IdentityList
- func CreateNParticipantsWithMyRole(myRole flow.Role, otherRoles ...flow.Role) (flow.IdentityList, flow.Identifier, *module.Local)
- func EmulatorRootKey() (*flow.AccountPrivateKey, error)
- func EpochCommitFixture(opts ...func(*flow.EpochCommit)) *flow.EpochCommit
- func EpochSetupFixture(opts ...func(setup *flow.EpochSetup)) *flow.EpochSetup
- func EventFixture(eType flow.EventType, transactionIndex uint32, eventIndex uint32, ...) flow.Event
- func ExecutableBlockFixture(collectionsSignerIDs [][]flow.Identifier) *entity.ExecutableBlock
- func ExecutableBlockFixtureWithParent(collectionsSignerIDs [][]flow.Identifier, parent *flow.Header) *entity.ExecutableBlock
- func ExecutionReceiptFixture(opts ...func(*flow.ExecutionReceipt)) *flow.ExecutionReceipt
- func ExecutionResultFixture(opts ...func(*flow.ExecutionResult)) *flow.ExecutionResult
- func ExpectPanic(expectedMsg string, t *testing.T)
- func FinalizedProtocolStateWithParticipants(participants flow.IdentityList) (*flow.Block, *protocol.Snapshot, *protocol.State)
- func GenesisFixture(identities flow.IdentityList) *flow.Block
- func HashFixture(size int) hash.Hash
- func HeadersFromMap(headerDB map[flow.Identifier]*flow.Header) *storage.Headers
- func IDEqual(t *testing.T, id1, id2 flow.Identifier)
- func IDsEqual(t *testing.T, id1, id2 []flow.Identifier)
- func IdentifierFixture() flow.Identifier
- func IdentifierListFixture(n int) []flow.Identifier
- func IdentityFixture(opts ...func(*flow.Identity)) *flow.Identity
- func IdentityListFixture(n int, opts ...func(*flow.Identity)) flow.IdentityList
- func InvalidAddressFixture() flow.Address
- func InvalidFormatSignature() flow.TransactionSignature
- func KeyFixture(algo crypto.SigningAlgorithm) crypto.PrivateKey
- func Logger() zerolog.Logger
- func NetworkingKey() (crypto.PrivateKey, error)
- func NetworkingKeys(n int) ([]crypto.PrivateKey, error)
- func NoopTxScript() []byte
- func PayloadFixture(options ...func(*flow.Payload)) *flow.Payload
- func PendingFromBlock(block *flow.Block) *flow.PendingBlock
- func ProposalFixture() *messages.BlockProposal
- func ProposalFromBlock(block *flow.Block) *messages.BlockProposal
- func ProposalKeyFixture() flow.ProposalKey
- func QuorumCertificateFixture() *flow.QuorumCertificate
- func RandomAddressFixture() flow.Address
- func RandomBytes(n int) []byte
- func RangeFixture() flow.Range
- func RangeListFixture(n int) []flow.Range
- func ReadyDoneify(toMock interface{})
- func ReceiptForBlockFixture(block *flow.Block) *flow.ExecutionReceipt
- func RegisterNetwork() (*module.Network, *mocknetwork.Conduit)
- func RequireCloseBefore(t testing.TB, c <-chan struct{}, duration time.Duration, message string)
- func RequireConcurrentCallsReturnBefore(t *testing.T, f func(), count int, duration time.Duration, message string)
- func RequireNeverClosedWithin(t *testing.T, ch <-chan struct{}, duration time.Duration, message string)
- func RequireNeverReturnBefore(t *testing.T, f func(), duration time.Duration, message string) <-chan struct{}
- func RequireReturnsBefore(t testing.TB, f func(), duration time.Duration, message string)
- func ResultApprovalFixture(opts ...func(*flow.ResultApproval)) *flow.ResultApproval
- func RunWithBadgerDB(t testing.TB, f func(*badger.DB))
- func RunWithTempDir(t testing.TB, f func(string))
- func SeedFixture(n int) []byte
- func SeedFixtures(m int, n int) [][]byte
- func SetupWithCounter(counter uint64) func(*flow.EpochSetup)
- func SignatureFixture() crypto.Signature
- func SignaturesFixture(n int) []crypto.Signature
- func StakingKey() (crypto.PrivateKey, error)
- func StakingKeys(n int) ([]crypto.PrivateKey, error)
- func StateCommitmentFixture() flow.StateCommitment
- func StateDeltaFixture() *messages.ExecutionStateDelta
- func StateDeltaWithParentFixture(parent *flow.Header) *messages.ExecutionStateDelta
- func StateInteractionsFixture() *delta.Snapshot
- func TempBadgerDB(t testing.TB) (*badger.DB, string)
- func TempDir(t testing.TB) string
- func TransactionBodyFixture(opts ...func(*flow.TransactionBody)) flow.TransactionBody
- func TransactionDSLFixture(chain flow.Chain) dsl.Transaction
- func TransactionFixture(n ...func(t *flow.Transaction)) flow.Transaction
- func TransactionForCluster(clusters flow.ClusterList, target flow.IdentityList) flow.TransactionBody
- func TransactionSignatureFixture() flow.TransactionSignature
- func VerifiableChunkDataFixture(chunkIndex uint64) *verification.VerifiableChunkData
- func VoteFixture() *hotstuff.Vote
- func WithAddress(address string) func(*flow.Identity)
- func WithAllRoles() func(*flow.Identity)
- func WithAllRolesExcept(except ...flow.Role) func(*flow.Identity)
- func WithApproverID(id flow.Identifier) func(*flow.ResultApproval)
- func WithBlock(block *flow.Block) func(*flow.ExecutionResult)
- func WithBlockID(id flow.Identifier) func(*flow.ResultApproval)
- func WithChunk(chunkIdx uint64) func(*flow.ResultApproval)
- func WithCollRef(refID flow.Identifier) func(*flow.CollectionGuarantee)
- func WithDKGFromParticipants(participants flow.IdentityList) func(*flow.EpochCommit)
- func WithExecutionResultID(id flow.Identifier) func(*flow.ResultApproval)
- func WithExecutorID(id flow.Identifier) func(*flow.ExecutionReceipt)
- func WithFinalView(view uint64) func(*flow.EpochSetup)
- func WithNetworkingKey(key crypto.PublicKey) func(*flow.Identity)
- func WithNodeID(b byte) func(*flow.Identity)
- func WithParticipants(participants flow.IdentityList) func(*flow.EpochSetup)
- func WithPreviousResult(prevResult flow.ExecutionResult) func(*flow.ExecutionResult)
- func WithRandomPublicKeys() func(*flow.Identity)
- func WithReferenceBlock(id flow.Identifier) func(tx *flow.TransactionBody)
- func WithResult(result *flow.ExecutionResult) func(*flow.ExecutionReceipt)
- func WithRole(role flow.Role) func(*flow.Identity)
- func WithStake(stake uint64) func(*flow.Identity)
- func WithTransactionDSL(txDSL dsl.Transaction) func(tx *flow.TransactionBody)
- func WithoutSeals(payload *flow.Payload)
- type ClusterStateChecker
- func (checker *ClusterStateChecker) Assert(t *testing.T)
- func (checker *ClusterStateChecker) ExpectContainsTx(txIDs ...flow.Identifier) *ClusterStateChecker
- func (checker *ClusterStateChecker) ExpectOmitsTx(txIDs ...flow.Identifier) *ClusterStateChecker
- func (checker *ClusterStateChecker) ExpectTxCount(n int) *ClusterStateChecker
- type EpochBuilder
Constants ¶
const GenesisStateCommitmentHex = "1082e01f0dee9d1331c4ec0ba02454782f78e682ce74af7aad18660f42b907de"
Pre-calculated state commitment with root account with the above private key
const ServiceAccountPrivateKeyHex = "e3a08ae3d0461cfed6d6f49bfc25fa899351c39d1bd21fdba8c87595b6c49bb4cc430201"
Variables ¶
var GenesisStateCommitment flow.StateCommitment
var GenesisTokenSupply = func() cadence.UFix64 { value, err := cadence.NewUFix64("10000000.00000000") if err != nil { panic(fmt.Errorf("invalid genesis token supply: %w", err)) } return value }()
var IncorporatedResult incorporatedResultFactory
var IncorporatedResultSeal incorporatedResultSealFactory
var Seal sealFactory
var ServiceAccountPrivateKey flow.AccountPrivateKey
var ServiceAccountPublicKey flow.AccountPublicKey
Functions ¶
func AccountKeyFixture ¶
func AccountKeyFixture() (*flow.AccountPrivateKey, error)
AccountKeyFixture returns a randomly generated ECDSA/SHA3 account key.
func AddressFixture ¶
func AlterTransactionForCluster ¶
func AlterTransactionForCluster(tx flow.TransactionBody, clusters flow.ClusterList, target flow.IdentityList, after func(tx *flow.TransactionBody)) flow.TransactionBody
AlterTransactionForCluster modifies a transaction nonce until it is assigned to the target cluster.
The `after` function is run after each modification to allow for any content dependent changes to the transaction (eg. signing it).
func AssertClosesBefore ¶
AssertClosesBefore asserts that the given channel closes before the duration expires.
func AssertErrSubstringMatch ¶
AssertErrSubstringMatch asserts that two errors match with substring checking on the Error method (`expected` must be a substring of `actual`, to account for the actual error being wrapped). Fails the test if either error is nil.
NOTE: This should only be used in cases where `errors.Is` cannot be, like when errors are transmitted over the network without type information.
func AssertReturnsBefore ¶
AssertReturnsBefore asserts that the given function returns before the duration expires.
func BatchFixture ¶
func BatchListFixture ¶
func BlockFixture ¶
func BlockFixtures ¶ added in v0.13.0
func BlockHeaderFixture ¶
func BlockSealsFixture ¶
func BlockWithParentAndProposerFixture ¶ added in v0.10.0
func BlockWithParentAndSeal ¶ added in v0.10.0
func BootstrapExecutionResultFixture ¶
func BootstrapExecutionResultFixture(block *flow.Block, commit flow.StateCommitment) *flow.ExecutionResult
func BootstrapFixture ¶
func BootstrapFixture(participants flow.IdentityList, opts ...func(*flow.Block)) (*flow.Block, *flow.ExecutionResult, *flow.Seal)
BootstrapFixture generates all the artifacts necessary to bootstrap the protocol state.
func ChainFixture ¶ added in v0.11.0
ChainFixture creates a list of blocks that forms a chain
func ChainFixtureFrom ¶ added in v0.11.0
ChainFixtureFrom creates a chain of blocks starting from a given parent block, the total number of blocks in the chain is specified by the given count
func ChunkDataPackFixture ¶
func ChunkDataPackFixture(identifier flow.Identifier) *flow.ChunkDataPack
func ChunkFixture ¶
func ChunkFixture(blockID flow.Identifier) *flow.Chunk
func ChunksFixture ¶ added in v0.9.6
func ChunksFixture(n uint, blockID flow.Identifier) []*flow.Chunk
func ClusterAssignment ¶
func ClusterAssignment(n uint, nodes flow.IdentityList) flow.AssignmentList
ClusterAssignment creates an assignment list with n clusters and with nodes evenly distributed among clusters.
func ClusterBlockFixture ¶
func ClusterBlockWithParent ¶
ClusterBlockWithParent creates a new cluster consensus block that is valid with respect to the given parent block.
func ClusterPayloadFixture ¶
func CollectionFixture ¶
func CollectionFixture(n int) flow.Collection
func CollectionGuaranteeFixture ¶
func CollectionGuaranteeFixture(options ...func(*flow.CollectionGuarantee)) *flow.CollectionGuarantee
func CollectionGuaranteesFixture ¶
func CollectionGuaranteesFixture(n int, options ...func(*flow.CollectionGuarantee)) []*flow.CollectionGuarantee
func CommitWithCounter ¶
func CommitWithCounter(counter uint64) func(*flow.EpochCommit)
func CompleteCollectionFixture ¶
func CompleteCollectionFixture() *entity.CompleteCollection
func CompleteIdentitySet ¶
func CompleteIdentitySet(identities ...*flow.Identity) flow.IdentityList
CompleteIdentitySet takes a number of identities and completes the missing roles.
func CreateNParticipantsWithMyRole ¶
func CreateNParticipantsWithMyRole(myRole flow.Role, otherRoles ...flow.Role) ( flow.IdentityList, flow.Identifier, *module.Local)
CreateNParticipantsWithMyRole creates a list of identities from given roles
func EmulatorRootKey ¶
func EmulatorRootKey() (*flow.AccountPrivateKey, error)
func EpochCommitFixture ¶
func EpochCommitFixture(opts ...func(*flow.EpochCommit)) *flow.EpochCommit
func EpochSetupFixture ¶
func EpochSetupFixture(opts ...func(setup *flow.EpochSetup)) *flow.EpochSetup
func EventFixture ¶
func EventFixture(eType flow.EventType, transactionIndex uint32, eventIndex uint32, txID flow.Identifier) flow.Event
EventFixture returns an event
func ExecutableBlockFixture ¶
func ExecutableBlockFixture(collectionsSignerIDs [][]flow.Identifier) *entity.ExecutableBlock
func ExecutableBlockFixtureWithParent ¶
func ExecutableBlockFixtureWithParent(collectionsSignerIDs [][]flow.Identifier, parent *flow.Header) *entity.ExecutableBlock
func ExecutionReceiptFixture ¶
func ExecutionReceiptFixture(opts ...func(*flow.ExecutionReceipt)) *flow.ExecutionReceipt
func ExecutionResultFixture ¶
func ExecutionResultFixture(opts ...func(*flow.ExecutionResult)) *flow.ExecutionResult
func ExpectPanic ¶
func FinalizedProtocolStateWithParticipants ¶
func FinalizedProtocolStateWithParticipants(participants flow.IdentityList) ( *flow.Block, *protocol.Snapshot, *protocol.State)
FinalizedProtocolStateWithParticipants returns a protocol state with finalized participants
func GenesisFixture ¶
func GenesisFixture(identities flow.IdentityList) *flow.Block
func HashFixture ¶
func HeadersFromMap ¶
HeadersFromMap creates a storage header mock that backed by a given map
func IdentifierFixture ¶
func IdentifierFixture() flow.Identifier
func IdentifierListFixture ¶
func IdentifierListFixture(n int) []flow.Identifier
func IdentityFixture ¶
IdentityFixture returns a node identity.
func IdentityListFixture ¶
func IdentityListFixture(n int, opts ...func(*flow.Identity)) flow.IdentityList
IdentityListFixture returns a list of node identity objects. The identities can be customized (ie. set their role) by passing in a function that modifies the input identities as required.
func InvalidAddressFixture ¶ added in v0.11.0
func InvalidFormatSignature ¶ added in v0.12.0
func InvalidFormatSignature() flow.TransactionSignature
func KeyFixture ¶
func KeyFixture(algo crypto.SigningAlgorithm) crypto.PrivateKey
func Logger ¶ added in v0.10.0
Logger returns a zerolog use -vv flag to print debugging logs for tests
func NetworkingKey ¶
func NetworkingKey() (crypto.PrivateKey, error)
func NetworkingKeys ¶
func NetworkingKeys(n int) ([]crypto.PrivateKey, error)
func NoopTxScript ¶
func NoopTxScript() []byte
NoopTxScript returns a Cadence script for a no-op transaction.
func PendingFromBlock ¶
func PendingFromBlock(block *flow.Block) *flow.PendingBlock
func ProposalFixture ¶
func ProposalFixture() *messages.BlockProposal
func ProposalFromBlock ¶
func ProposalFromBlock(block *flow.Block) *messages.BlockProposal
func ProposalKeyFixture ¶
func ProposalKeyFixture() flow.ProposalKey
func QuorumCertificateFixture ¶
func QuorumCertificateFixture() *flow.QuorumCertificate
func RandomAddressFixture ¶ added in v0.11.0
func RandomBytes ¶
func RangeFixture ¶
func RangeListFixture ¶
func ReadyDoneify ¶
func ReadyDoneify(toMock interface{})
ReadyDoneify sets up a generated mock to respond to Ready and Done lifecycle methods. Any mock type generated by mockery can be used.
func ReceiptForBlockFixture ¶ added in v0.14.0
func ReceiptForBlockFixture(block *flow.Block) *flow.ExecutionReceipt
func RegisterNetwork ¶
func RegisterNetwork() (*module.Network, *mocknetwork.Conduit)
RegisterNetwork returns a mocked network and conduit
func RequireCloseBefore ¶ added in v0.12.0
RequireCloseBefore requires that the given channel returns before the duration expires.
func RequireConcurrentCallsReturnBefore ¶ added in v0.11.0
func RequireConcurrentCallsReturnBefore(t *testing.T, f func(), count int, duration time.Duration, message string)
RequireConcurrentCallsReturnBefore is a test helper that runs function `f` count-many times concurrently, and requires all invocations to return within duration.
func RequireNeverClosedWithin ¶ added in v0.11.0
func RequireNeverClosedWithin(t *testing.T, ch <-chan struct{}, duration time.Duration, message string)
RequireNeverClosedWithin is a test helper function that fails the test if channel `ch` is closed before the determined duration.
func RequireNeverReturnBefore ¶ added in v0.11.0
func RequireNeverReturnBefore(t *testing.T, f func(), duration time.Duration, message string) <-chan struct{}
RequireNeverReturnBefore is a test helper that tries invoking function `f` and fails the test if either: - function `f` is not invoked within 1 second. - function `f` returns before specified `duration`.
It also returns a channel that is closed once the function `f` returns and hence its openness can evaluate return status of function `f` for intervals longer than duration.
func RequireReturnsBefore ¶
RequireReturnBefore requires that the given function returns before the duration expires.
func ResultApprovalFixture ¶
func ResultApprovalFixture(opts ...func(*flow.ResultApproval)) *flow.ResultApproval
func RunWithBadgerDB ¶
func RunWithTempDir ¶
func SeedFixtures ¶
SeedFixtures returns a list of m random []byte, each having length n
func SetupWithCounter ¶
func SetupWithCounter(counter uint64) func(*flow.EpochSetup)
func SignatureFixture ¶
func SignaturesFixture ¶
func StakingKey ¶
func StakingKey() (crypto.PrivateKey, error)
func StakingKeys ¶
func StakingKeys(n int) ([]crypto.PrivateKey, error)
func StateCommitmentFixture ¶
func StateCommitmentFixture() flow.StateCommitment
func StateDeltaFixture ¶
func StateDeltaFixture() *messages.ExecutionStateDelta
func StateDeltaWithParentFixture ¶
func StateDeltaWithParentFixture(parent *flow.Header) *messages.ExecutionStateDelta
func StateInteractionsFixture ¶ added in v0.11.0
func TempBadgerDB ¶
func TransactionBodyFixture ¶
func TransactionBodyFixture(opts ...func(*flow.TransactionBody)) flow.TransactionBody
func TransactionDSLFixture ¶
func TransactionDSLFixture(chain flow.Chain) dsl.Transaction
func TransactionFixture ¶
func TransactionFixture(n ...func(t *flow.Transaction)) flow.Transaction
func TransactionForCluster ¶
func TransactionForCluster(clusters flow.ClusterList, target flow.IdentityList) flow.TransactionBody
TransactionForCluster generates a transaction that will be assigned to the target cluster ID.
func TransactionSignatureFixture ¶
func TransactionSignatureFixture() flow.TransactionSignature
func VerifiableChunkDataFixture ¶
func VerifiableChunkDataFixture(chunkIndex uint64) *verification.VerifiableChunkData
VerifiableChunkDataFixture returns a complete verifiable chunk with an execution receipt referencing the block/collections.
func VoteFixture ¶
func WithAddress ¶ added in v0.13.0
WithAddress sets the network address of identity fixture.
func WithAllRoles ¶
WithAllRoles can be used used to ensure an IdentityList fixtures contains all the roles required for a valid genesis block.
func WithAllRolesExcept ¶
Same as above, but omitting a certain role for cases where we are manually setting up nodes or a particular role.
func WithApproverID ¶ added in v0.11.0
func WithApproverID(id flow.Identifier) func(*flow.ResultApproval)
func WithBlockID ¶ added in v0.11.0
func WithBlockID(id flow.Identifier) func(*flow.ResultApproval)
func WithChunk ¶ added in v0.11.0
func WithChunk(chunkIdx uint64) func(*flow.ResultApproval)
func WithCollRef ¶
func WithCollRef(refID flow.Identifier) func(*flow.CollectionGuarantee)
func WithDKGFromParticipants ¶
func WithDKGFromParticipants(participants flow.IdentityList) func(*flow.EpochCommit)
func WithExecutionResultID ¶
func WithExecutionResultID(id flow.Identifier) func(*flow.ResultApproval)
func WithExecutorID ¶ added in v0.11.0
func WithExecutorID(id flow.Identifier) func(*flow.ExecutionReceipt)
func WithFinalView ¶
func WithFinalView(view uint64) func(*flow.EpochSetup)
func WithNetworkingKey ¶ added in v0.13.0
WithNetworkingKey sets the networking public key of identity fixture.
func WithNodeID ¶
WithNodeID adds a node ID with the given first byte to an identity.
func WithParticipants ¶
func WithParticipants(participants flow.IdentityList) func(*flow.EpochSetup)
func WithPreviousResult ¶ added in v0.11.0
func WithPreviousResult(prevResult flow.ExecutionResult) func(*flow.ExecutionResult)
func WithRandomPublicKeys ¶
WithRandomPublicKeys adds random public keys to an identity.
func WithReferenceBlock ¶
func WithReferenceBlock(id flow.Identifier) func(tx *flow.TransactionBody)
func WithResult ¶ added in v0.11.0
func WithResult(result *flow.ExecutionResult) func(*flow.ExecutionReceipt)
func WithTransactionDSL ¶
func WithTransactionDSL(txDSL dsl.Transaction) func(tx *flow.TransactionBody)
func WithoutSeals ¶
Types ¶
type ClusterStateChecker ¶
type ClusterStateChecker struct {
// contains filtered or unexported fields
}
ClusterStateChecker is a test utility for checking cluster state. First, prepare it with expectations about the state, using `Expect*` functions, then use `Check` to assert the expectations.
Duplicates are checked automatically without setting any expectations.
func NewClusterStateChecker ¶
func NewClusterStateChecker(state cluster.State) *ClusterStateChecker
NewClusterStateChecker returns a state checker for the given state.
func (*ClusterStateChecker) Assert ¶
func (checker *ClusterStateChecker) Assert(t *testing.T)
Assert checks all assertions against the cluster state. If any assertions fail, the test will fail.
func (*ClusterStateChecker) ExpectContainsTx ¶
func (checker *ClusterStateChecker) ExpectContainsTx(txIDs ...flow.Identifier) *ClusterStateChecker
ExpectContainsTx adds an expectation that the given transaction exists in the cluster state.
func (*ClusterStateChecker) ExpectOmitsTx ¶
func (checker *ClusterStateChecker) ExpectOmitsTx(txIDs ...flow.Identifier) *ClusterStateChecker
ExpectOmitsTx adds an expectation that the given transaction does not exist in the cluster state.
func (*ClusterStateChecker) ExpectTxCount ¶
func (checker *ClusterStateChecker) ExpectTxCount(n int) *ClusterStateChecker
ExpectTxCount adds an expectation for the total count of transactions in the cluster state.
type EpochBuilder ¶ added in v0.12.0
type EpochBuilder struct {
// contains filtered or unexported fields
}
EpochBuilder is a testing utility for building epochs into chain state.
func NewEpochBuilder ¶ added in v0.12.0
func NewEpochBuilder(t *testing.T, state protocol.State) *EpochBuilder
func (*EpochBuilder) BuildEpoch ¶ added in v0.12.0
func (builder *EpochBuilder) BuildEpoch() *EpochBuilder
Build builds and finalizes a sequence of blocks comprising a minimal full epoch (epoch N). We assume the latest finalized block is within staking phase in epoch N.
| EPOCH N | A -> B -> C -> D
A is the latest finalized block. B contains seals up to block A, if needed. It contains no service events or seals. C contains a seal for block B containing the EpochSetup service event. Block D contains a seal for block C containing the EpochCommit service event.
To build a sequence of epochs, we call BuildEpoch, then CompleteEpoch, and so on.
func (*EpochBuilder) CompleteEpoch ¶ added in v0.12.0
func (builder *EpochBuilder) CompleteEpoch()
CompleteEpoch caps off the current epoch by building the first block of the next epoch. We must be in the Committed phase to call CompleteEpoch. Once the epoch has been capped off, we can build the next epoch with BuildEpoch.
func (*EpochBuilder) UsingCommitOpts ¶ added in v0.12.0
func (builder *EpochBuilder) UsingCommitOpts(opts ...func(*flow.EpochCommit)) *EpochBuilder
UsingCommitOpts sets options for the epoch setup event. For options targeting the same field, those added here will take precedence over defaults.
func (*EpochBuilder) UsingSetupOpts ¶ added in v0.12.0
func (builder *EpochBuilder) UsingSetupOpts(opts ...func(*flow.EpochSetup)) *EpochBuilder
UsingSetupOpts sets options for the epoch setup event. For options targeting the same field, those added here will take precedence over defaults.