unittest

package
v0.10.1-collection-patch Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 19, 2020 License: AGPL-3.0 Imports: 37 Imported by: 30

Documentation

Index

Constants

View Source
const GenesisStateCommitmentHex = "69acb970e2623ffe4b3147b70fceb4c43e8aad04b79fa31281042587b7672e84"

Pre-calculated state commitment with root account with the above private key

View Source
const ServiceAccountPrivateKeyHex = "e3a08ae3d0461cfed6d6f49bfc25fa899351c39d1bd21fdba8c87595b6c49bb4cc430201"

Variables

View Source
var GenesisStateCommitment flow.StateCommitment
View Source
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
}()
View Source
var ServiceAccountPrivateKey flow.AccountPrivateKey
View Source
var ServiceAccountPublicKey flow.AccountPublicKey

Functions

func AccountKeyFixture

func AccountKeyFixture() (*flow.AccountPrivateKey, error)

AccountKeyFixture returns a randomly generated ECDSA/SHA3 account key.

func AddressFixture

func AddressFixture() flow.Address

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

func AssertClosesBefore(t *testing.T, done <-chan struct{}, duration time.Duration)

AssertClosesBefore asserts that the given channel closes before the duration expires.

func AssertErrSubstringMatch

func AssertErrSubstringMatch(t testing.TB, expected, actual error)

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

func AssertReturnsBefore(t *testing.T, f func(), duration time.Duration)

AssertReturnsBefore asserts that the given function returns before the duration expires.

func BadgerDB

func BadgerDB(t testing.TB, dir string) *badger.DB

func BatchFixture

func BatchFixture() flow.Batch

func BatchListFixture

func BatchListFixture(n int) []flow.Batch

func BlockFixture

func BlockFixture() flow.Block

func BlockHeaderFixture

func BlockHeaderFixture() flow.Header

func BlockHeaderFixtureOnChain

func BlockHeaderFixtureOnChain(chainID flow.ChainID) flow.Header

func BlockHeaderWithParentFixture

func BlockHeaderWithParentFixture(parent *flow.Header) flow.Header

func BlockSealsFixture

func BlockSealsFixture(n int) []*flow.Seal

func BlockWithParentAndProposerFixture added in v0.10.0

func BlockWithParentAndProposerFixture(parent *flow.Header, proposer flow.Identifier) flow.Block

func BlockWithParentAndSeal added in v0.10.0

func BlockWithParentAndSeal(
	parent *flow.Header, sealed *flow.Header) *flow.Block

func BlockWithParentFixture

func BlockWithParentFixture(parent *flow.Header) flow.Block

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 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 ClusterBlockFixture() cluster.Block

func ClusterBlockWithParent

func ClusterBlockWithParent(parent *cluster.Block) cluster.Block

ClusterBlockWithParent creates a new cluster consensus block that is valid with respect to the given parent block.

func ClusterPayloadFixture

func ClusterPayloadFixture(n int) *cluster.Payload

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() *flow.ExecutionReceipt

func ExecutionResultFixture

func ExecutionResultFixture() *flow.ExecutionResult

func ExpectPanic

func ExpectPanic(expectedMsg string, t *testing.T)

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 HashFixture(size int) hash.Hash

func HeadersFromMap

func HeadersFromMap(headerDB map[flow.Identifier]*flow.Header) *storage.Headers

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

func IdentityFixture(opts ...func(*flow.Identity)) *flow.Identity

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 KeyFixture

func KeyFixture(algo crypto.SigningAlgorithm) crypto.PrivateKey

func Logger added in v0.10.0

func Logger() zerolog.Logger

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 PayloadFixture

func PayloadFixture(options ...func(*flow.Payload)) *flow.Payload

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 RandomBytes

func RandomBytes(n int) []byte

func RangeFixture

func RangeFixture() flow.Range

func RangeListFixture

func RangeListFixture(n int) []flow.Range

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 RegisterNetwork

func RegisterNetwork() (*module.Network, *network.Conduit)

RegisterNetwork returns a mocked network and conduit

func RequireReturnsBefore

func RequireReturnsBefore(t testing.TB, f func(), duration time.Duration, message string)

RequireReturnBefore requires that the given function returns before the duration expires.

func ResultApprovalFixture

func ResultApprovalFixture(opts ...func(*flow.ResultApproval)) *flow.ResultApproval

func ResultForBlockFixture added in v0.9.6

func ResultForBlockFixture(block *flow.Block) *flow.ExecutionResult

func RunWithBadgerDB

func RunWithBadgerDB(t testing.TB, f func(*badger.DB))

func RunWithTempDir

func RunWithTempDir(t testing.TB, f func(string))

func SealFixture

func SealFixture(opts ...func(*flow.Seal)) *flow.Seal

func SealFromResult

func SealFromResult(result *flow.ExecutionResult) func(*flow.Seal)

func SealWithBlockID

func SealWithBlockID(blockID flow.Identifier) func(*flow.Seal)

func SeedFixture

func SeedFixture(n int) []byte

SeedFixture returns a random []byte with length n

func SeedFixtures

func SeedFixtures(m int, n int) [][]byte

SeedFixtures returns a list of m random []byte, each having length n

func SetupWithCounter

func SetupWithCounter(counter uint64) func(*flow.EpochSetup)

func SignatureFixture

func SignatureFixture() crypto.Signature

func SignaturesFixture

func SignaturesFixture(n int) []crypto.Signature

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 TempBadgerDB

func TempBadgerDB(t testing.TB) (*badger.DB, string)

func TempDir

func TempDir(t testing.TB) string

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 VoteFixture() *hotstuff.Vote

func WithAllRoles

func WithAllRoles() func(*flow.Identity)

WithAllRoles can be used used to ensure an IdentityList fixtures contains all the roles required for a valid genesis block.

func WithAllRolesExcept

func WithAllRolesExcept(except ...flow.Role) func(*flow.Identity)

Same as above, but omitting a certain role for cases where we are manually setting up nodes or a particular role.

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 WithFinalView

func WithFinalView(view uint64) func(*flow.EpochSetup)

func WithNodeID

func WithNodeID(b byte) func(*flow.Identity)

WithNodeID adds a node ID with the given first byte to an identity.

func WithParticipants

func WithParticipants(participants flow.IdentityList) func(*flow.EpochSetup)

func WithRandomPublicKeys

func WithRandomPublicKeys() func(*flow.Identity)

WithRandomPublicKeys adds random public keys to an identity.

func WithReferenceBlock

func WithReferenceBlock(id flow.Identifier) func(tx *flow.TransactionBody)

func WithRole

func WithRole(role flow.Role) func(*flow.Identity)

WithRole adds a role to an identity fixture.

func WithServiceEvents

func WithServiceEvents(events ...flow.ServiceEvent) func(*flow.Seal)

func WithStake

func WithStake(stake uint64) func(*flow.Identity)

func WithTransactionDSL

func WithTransactionDSL(txDSL dsl.Transaction) func(tx *flow.TransactionBody)

func WithoutSeals

func WithoutSeals(payload *flow.Payload)

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.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL