mocks

package
v0.33.12 Latest Latest
Warning

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

Go to latest
Published: Mar 15, 2024 License: AGPL-3.0 Imports: 10 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ConvertStorageOutput added in v0.33.1

func ConvertStorageOutput[K comparable, V any, R any](fn func(key K) (V, error), mapper func(V) R) func(key K) (R, error)

ConvertStorageOutput maps the output type from a getter function to a different type. This is useful to avoid maintaining multiple maps for the same data.

Example usage:

blockMap := map[uint64]*flow.Block{}

headers.On("BlockIDByHeight", mock.AnythingOfType("uint64")).Return(
	mocks.ConvertStorageOutput(
		mocks.StorageMapGetter(s.blockMap),
		func(block *flow.Block) flow.Identifier { return block.ID() },
	),
)

func NewFinalizedHeaderCache added in v0.31.0

func NewFinalizedHeaderCache(t *testing.T, state protocol.State) *finalizedHeaderCache

func StorageMapGetter added in v0.33.1

func StorageMapGetter[K comparable, V any](m map[K]V) func(key K) (V, error)

StorageMapGetter implements a simple generic getter function for mock storage methods. This is useful to avoid duplicating boilerplate code for mock storage methods.

Example: Instead of the following code:

results.On("ByID", mock.AnythingOfType("flow.Identifier")).Return(
	func(resultID flow.Identifier) (*flow.ExecutionResult, error) {
		if result, ok := s.resultMap[resultID]; ok {
			return result, nil
		}
		return nil, storage.ErrNotFound
	},
)

Use this:

results.On("ByID", mock.AnythingOfType("flow.Identifier")).Return(
	mocks.StorageMapGetter(s.resultMap),
)

Types

type EpochQuery

type EpochQuery struct {
	// contains filtered or unexported fields
}

EpochQuery implements protocol.EpochQuery for testing purposes. Safe for concurrent use by multiple goroutines.

func NewEpochQuery

func NewEpochQuery(t *testing.T, counter uint64, epochs ...protocol.Epoch) *EpochQuery

func (*EpochQuery) Add

func (mock *EpochQuery) Add(epoch protocol.Epoch)

func (*EpochQuery) ByCounter

func (mock *EpochQuery) ByCounter(counter uint64) protocol.Epoch

func (*EpochQuery) Current

func (mock *EpochQuery) Current() protocol.Epoch

func (*EpochQuery) Next

func (mock *EpochQuery) Next() protocol.Epoch

func (*EpochQuery) Phase added in v0.31.0

func (mock *EpochQuery) Phase() flow.EpochPhase

Phase returns a phase consistent with the current epoch state.

func (*EpochQuery) Previous added in v0.13.0

func (mock *EpochQuery) Previous() protocol.Epoch

func (*EpochQuery) Transition

func (mock *EpochQuery) Transition()

type Params added in v0.11.0

type Params struct {
	// contains filtered or unexported fields
}

func (*Params) ChainID added in v0.11.0

func (p *Params) ChainID() (flow.ChainID, error)

func (*Params) EpochCommitSafetyThreshold added in v0.29.0

func (p *Params) EpochCommitSafetyThreshold() (uint64, error)

func (*Params) EpochFallbackTriggered added in v0.29.0

func (p *Params) EpochFallbackTriggered() (bool, error)

func (*Params) FinalizedRoot added in v0.30.7

func (p *Params) FinalizedRoot() (*flow.Header, error)

func (*Params) ProtocolVersion added in v0.23.2

func (p *Params) ProtocolVersion() (uint, error)

func (*Params) Seal added in v0.11.0

func (p *Params) Seal() (*flow.Seal, error)

func (*Params) SealedRoot added in v0.30.7

func (p *Params) SealedRoot() (*flow.Header, error)

func (*Params) SporkID added in v0.23.2

func (p *Params) SporkID() (flow.Identifier, error)

func (*Params) SporkRootBlockHeight added in v0.29.6

func (p *Params) SporkRootBlockHeight() (uint64, error)

type ProtocolState added in v0.11.0

type ProtocolState struct {
	sync.Mutex
	protocol.ParticipantState
	// contains filtered or unexported fields
}

ProtocolState is a mocked version of protocol state, which has very close behavior to the real implementation but for testing purpose. If you are testing a module that depends on protocol state's behavior, but you don't want to mock up the methods and its return value, then just use this module

func NewProtocolState added in v0.11.0

func NewProtocolState() *ProtocolState

func (*ProtocolState) AtBlockID added in v0.11.0

func (ps *ProtocolState) AtBlockID(blockID flow.Identifier) protocol.Snapshot

func (*ProtocolState) AtHeight added in v0.11.0

func (ps *ProtocolState) AtHeight(height uint64) protocol.Snapshot

func (*ProtocolState) Bootstrap added in v0.14.0

func (m *ProtocolState) Bootstrap(root *flow.Block, result *flow.ExecutionResult, seal *flow.Seal) error

func (*ProtocolState) Extend added in v0.14.0

func (m *ProtocolState) Extend(block *flow.Block) error

func (*ProtocolState) Final added in v0.11.0

func (ps *ProtocolState) Final() protocol.Snapshot

func (*ProtocolState) Finalize added in v0.14.0

func (m *ProtocolState) Finalize(blockID flow.Identifier) error

func (*ProtocolState) Params added in v0.11.0

func (ps *ProtocolState) Params() protocol.Params

Jump to

Keyboard shortcuts

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