testhelpers

package
v0.9.8 Latest Latest
Warning

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

Go to latest
Published: Jun 28, 2021 License: Apache-2.0, MIT Imports: 52 Imported by: 1

Documentation

Index

Constants

View Source
const (
	// DefaultDaemonCmdTimeout is the default timeout for executing commands.
	DefaultDaemonCmdTimeout = 1 * time.Minute
)

Variables

This section is empty.

Functions

func AutoSealInterval

func AutoSealInterval(autoSealInterval string) func(*TestDaemon)

AutoSealInterval specifies an interval for automatically sealing

func CmdTimeout

func CmdTimeout(t time.Duration) func(*TestDaemon)

CmdTimeout allows setting the `cmdTimeout` config option on the daemon.

func ContainerDir

func ContainerDir(dir string) func(*TestDaemon)

ContainerDir sets the `containerDir` path for the daemon.

func DefaultAddress

func DefaultAddress(defaultAddr address.Address) func(*TestDaemon)

DefaultAddress specifies a key file for this daemon to add to their wallet during init

func GenesisFile

func GenesisFile(a string) func(*TestDaemon)

GenesisFile allows setting the `genesisFile` config option on the daemon.

func GenesisFilePath

func GenesisFilePath() string

GenesisFilePath returns the path to the test genesis

func GetFilecoinBinary

func GetFilecoinBinary() (string, error)

GetFilecoinBinary returns the path where the filecoin binary will be if it has been built

func GetFreePort

func GetFreePort() (int, error)

GetFreePort gets a free port from the kernel Credit: https://github.com/phayes/freeport

func InitArgs

func InitArgs(a ...string) func(*TestDaemon)

InitArgs allows setting additional arguments to repo initialization

func IsRelay

func IsRelay(td *TestDaemon)

IsRelay starts the daemon with the --is-relay option.

func KeyFile

func KeyFile(kf string) func(*TestDaemon)

KeyFile specifies a key file for this daemon to add to their wallet during init

func MustGetFilecoinBinary

func MustGetFilecoinBinary() string

MustGetFilecoinBinary returns the path where the filecoin binary will be if it has been built and panics otherwise.

func NewFakeHost

func NewFakeHost() host.Host

NewFakeHost constructs a FakeHost with no other parameters needed

func RandPeerID

func RandPeerID() (peer.ID, error)

RandPeerID is a libp2p random peer ID generator. These peer.ID generators were copied from libp2p/go-testutil. We didn't bring in the whole repo as a dependency because we only need this small bit. However if we find ourselves using more and more pieces we should just take a dependency on it.

func RequireIntPeerID

func RequireIntPeerID(t *testing.T, i int64) peer.ID

RequireIntPeerID takes in an integer and creates a unique peer id for it.

func RequireMakeStateTree

func RequireMakeStateTree(t *testing.T, cst cbor.IpldStore, acts map[address.Address]*types.Actor) (cid.Cid, *tree.State)

RequireMakeStateTree takes a map of addresses to actors and stores them on the state tree, requiring that all its steps succeed.

func RequireRandomPeerID

func RequireRandomPeerID(t *testing.T) peer.ID

RequireRandomPeerID returns a new libp2p peer ID or panics.

func RequireSignedTestBlockFromTipSet

func RequireSignedTestBlockFromTipSet(t *testing.T, baseTipSet types.TipSet, stateRootCid cid.Cid, receiptRootCid cid.Cid, height abi.ChainEpoch, minerAddr address.Address, minerWorker address.Address, signer types.Signer) *types.BlockHeader

RequireSignedTestBlockFromTipSet creates a block with a valid signature by the passed in miner work and a Miner field set to the minerAddr.

func RequireTipset

func RequireTipset(t *testing.T) *types.TipSet

RequireTipset is a helper that constructs a tipset

func RequireTipsetWithHeight

func RequireTipsetWithHeight(t *testing.T, height abi.ChainEpoch) *types.TipSet

func RunInit

func RunInit(td *TestDaemon, opts ...string) ([]byte, error)

RunInit is the equivalent of executing `venus init`.

func RunSuccessFirstLine

func RunSuccessFirstLine(td *TestDaemon, args ...string) string

RunSuccessFirstLine executes the given command, asserts success and returns the first line of stdout.

func RunSuccessLines

func RunSuccessLines(td *TestDaemon, args ...string) []string

RunSuccessLines executes the given command, asserts success and returns an array of lines of the stdout.

func ShouldInit

func ShouldInit(i bool) func(*TestDaemon)

ShouldInit allows setting the `init` config option on the daemon. If set, `venus init` is run before starting up the daemon.

func WaitForIt

func WaitForIt(count int, delay time.Duration, cb func() (bool, error)) error

WaitForIt waits until the given callback returns true.

func WaitTimeout

func WaitTimeout(wg *sync.WaitGroup, timeout time.Duration) bool

WaitTimeout waits for the waitgroup for the specified max timeout. Returns true if waiting timed out.

Types

type CmdOutput

type CmdOutput struct {
	// Args is the command and argument sequence executed.
	Args []string
	// contains filtered or unexported fields
}

CmdOutput collects the output from a CLI command issued to a process.

func ReadOutput

func ReadOutput(tb testing.TB, args []string, stdout io.Reader, stderr io.Reader) *CmdOutput

ReadOutput reads the `stdout` and `stderr` streams completely and returns a new Output object.

func (*CmdOutput) AssertFail

func (o *CmdOutput) AssertFail(err string) *CmdOutput

AssertFail asserts that the output represents a failed execution, with the error matching the passed in error.

func (*CmdOutput) AssertSuccess

func (o *CmdOutput) AssertSuccess() *CmdOutput

AssertSuccess asserts that the output represents a successful execution.

func (*CmdOutput) ReadStderr

func (o *CmdOutput) ReadStderr() string

ReadStderr returns a string representation of the stderr output.

func (*CmdOutput) ReadStdout

func (o *CmdOutput) ReadStdout() string

ReadStdout returns a string representation of the stdout output.

func (*CmdOutput) ReadStdoutTrimNewlines

func (o *CmdOutput) ReadStdoutTrimNewlines() string

ReadStdoutTrimNewlines returns a string representation of stdout, with trailing line breaks removed.

func (*CmdOutput) SetInvocationError

func (o *CmdOutput) SetInvocationError(executionErr error)

SetInvocationError sets the error for an unsuccessful invocation. May not be called if a status code has been set (probably indicating a usage error).

func (*CmdOutput) SetStatus

func (o *CmdOutput) SetStatus(status int)

SetStatus sets the status code for a successful invocation. May not be called if a status code has been set (probably indicating a usage error).

func (*CmdOutput) Status

func (o *CmdOutput) Status() (int, error)

Status returns the status code and any error value from execution. The status code and any output streams are valid only if error is nil.

func (*CmdOutput) Stderr

func (o *CmdOutput) Stderr() []byte

Stderr returns the raw bytes from stderr.

func (*CmdOutput) Stdout

func (o *CmdOutput) Stdout() []byte

Stdout returns the raw bytes from stdout.

type FakeBlockValidator

type FakeBlockValidator struct{}

FakeBlockValidator passes everything as valid

func NewFakeBlockValidator

func NewFakeBlockValidator() *FakeBlockValidator

NewFakeBlockValidator createas a FakeBlockValidator that passes everything as valid.

func (*FakeBlockValidator) ValidateHeaderSemantic

func (fbv *FakeBlockValidator) ValidateHeaderSemantic(ctx context.Context, child *types.BlockHeader, parents types.TipSet) error

ValidateHeaderSemantic does nothing.

func (*FakeBlockValidator) ValidateMessagesSyntax

func (fbv *FakeBlockValidator) ValidateMessagesSyntax(ctx context.Context, messages []*types.SignedMessage) error

ValidateMessagesSyntax does nothing

func (*FakeBlockValidator) ValidateReceiptsSyntax

func (fbv *FakeBlockValidator) ValidateReceiptsSyntax(ctx context.Context, receipts []types.MessageReceipt) error

ValidateReceiptsSyntax does nothing

func (*FakeBlockValidator) ValidateSyntax

func (fbv *FakeBlockValidator) ValidateSyntax(ctx context.Context, blk *types.BlockHeader) error

ValidateSyntax does nothing.

func (*FakeBlockValidator) ValidateUnsignedMessagesSyntax

func (fbv *FakeBlockValidator) ValidateUnsignedMessagesSyntax(ctx context.Context, messages []*types.UnsignedMessage) error

ValidateUnsignedMessagesSyntax does nothing

type FakeCMgr

type FakeCMgr struct {
}

func (FakeCMgr) Close

func (f FakeCMgr) Close() error

func (FakeCMgr) GetTagInfo

func (f FakeCMgr) GetTagInfo(p peer.ID) *connmgr.TagInfo

func (FakeCMgr) IsProtected

func (f FakeCMgr) IsProtected(id peer.ID, tag string) (protected bool)

func (FakeCMgr) Notifee

func (f FakeCMgr) Notifee() inet.Notifiee

func (FakeCMgr) Protect

func (f FakeCMgr) Protect(id peer.ID, tag string)

func (FakeCMgr) TagPeer

func (f FakeCMgr) TagPeer(id peer.ID, s string, i int)

func (FakeCMgr) TrimOpenConns

func (f FakeCMgr) TrimOpenConns(ctx context.Context)

func (FakeCMgr) Unprotect

func (f FakeCMgr) Unprotect(id peer.ID, tag string) (protected bool)

func (FakeCMgr) UntagPeer

func (f FakeCMgr) UntagPeer(p peer.ID, tag string)

func (FakeCMgr) UpsertTag

func (f FakeCMgr) UpsertTag(p peer.ID, tag string, upsert func(int) int)

type FakeDialer

type FakeDialer struct {
	PeersImpl func() []peer.ID
}

FakeDialer is a test inet.Dialer

func (*FakeDialer) ClosePeer

func (fd *FakeDialer) ClosePeer(peer.ID) error

func (*FakeDialer) Connectedness

func (fd *FakeDialer) Connectedness(peer.ID) inet.Connectedness

func (*FakeDialer) Conns

func (fd *FakeDialer) Conns() []inet.Conn

func (*FakeDialer) ConnsToPeer

func (fd *FakeDialer) ConnsToPeer(peer.ID) []inet.Conn

func (*FakeDialer) DialPeer

func (fd *FakeDialer) DialPeer(context.Context, peer.ID) (inet.Conn, error)

func (*FakeDialer) LocalPeer

func (fd *FakeDialer) LocalPeer() peer.ID

func (*FakeDialer) Notify

func (fd *FakeDialer) Notify(inet.Notifiee)

func (*FakeDialer) Peers

func (fd *FakeDialer) Peers() []peer.ID

Peers returns a fake inet.Dialer PeersImpl

func (*FakeDialer) Peerstore

func (fd *FakeDialer) Peerstore() peerstore.Peerstore

func (*FakeDialer) StopNotify

func (fd *FakeDialer) StopNotify(inet.Notifiee)

type FakeHost

type FakeHost struct {
	ConnectImpl func(context.Context, peer.AddrInfo) error
}

FakeHost is a test host.Host

func (*FakeHost) Addrs

func (fh *FakeHost) Addrs() []ma.Multiaddr

func (*FakeHost) Close

func (fh *FakeHost) Close() error

func (*FakeHost) ConnManager

func (fh *FakeHost) ConnManager() connmgr.ConnManager

func (*FakeHost) Connect

func (fh *FakeHost) Connect(ctx context.Context, pi peer.AddrInfo) error

func (*FakeHost) EventBus

func (fh *FakeHost) EventBus() event.Bus

func (*FakeHost) ID

func (fh *FakeHost) ID() peer.ID

func (*FakeHost) Mux

func (fh *FakeHost) Mux() protocol.Switch

func (*FakeHost) Network

func (fh *FakeHost) Network() inet.Network

func (*FakeHost) NewStream

func (fh *FakeHost) NewStream(context.Context, peer.ID, ...protocol.ID) (inet.Stream, error)

NewStream is required for the host.Host interface; returns a new FakeStream.

func (*FakeHost) Peerstore

func (fh *FakeHost) Peerstore() peerstore.Peerstore

func (*FakeHost) RemoveStreamHandler

func (fh *FakeHost) RemoveStreamHandler(protocol.ID)

func (*FakeHost) SetStreamHandler

func (fh *FakeHost) SetStreamHandler(protocol.ID, inet.StreamHandler)

func (*FakeHost) SetStreamHandlerMatch

func (fh *FakeHost) SetStreamHandlerMatch(protocol.ID, func(string) bool, inet.StreamHandler)

type MockMessagePoolValidator

type MockMessagePoolValidator struct {
	Valid bool
}

MockMessagePoolValidator is a mock validator

func NewMockMessagePoolValidator

func NewMockMessagePoolValidator() *MockMessagePoolValidator

NewMockMessagePoolValidator creates a MockMessagePoolValidator

func (*MockMessagePoolValidator) ValidateSignedMessageSyntax

func (v *MockMessagePoolValidator) ValidateSignedMessageSyntax(ctx context.Context, msg *types.SignedMessage) error

Validate returns true if the mock validator is set to validate the message

type StubBlockValidator

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

StubBlockValidator is a mockable block validator.

func NewStubBlockValidator

func NewStubBlockValidator() *StubBlockValidator

NewStubBlockValidator creates a StubBlockValidator that allows errors to configured for blocks passed to the Validate* methods.

func (*StubBlockValidator) StubSyntaxValidationForBlock

func (mbv *StubBlockValidator) StubSyntaxValidationForBlock(blk *types.BlockHeader, err error)

StubSyntaxValidationForBlock stubs an error when the ValidateSyntax is called on the with the given block.

func (*StubBlockValidator) ValidateBlockMsg added in v0.9.1

func (mbv *StubBlockValidator) ValidateBlockMsg(ctx context.Context, blk *types.BlockMsg) pubsub.ValidationResult

ValidateSyntax return nil or error for stubbed block `blk`.

type TestDaemon

type TestDaemon struct {
	Stdin  io.Writer
	Stdout io.Reader
	Stderr io.Reader
	// contains filtered or unexported fields
}

TestDaemon is used to manage a Filecoin daemon instance for testing purposes.

func NewDaemon

func NewDaemon(t *testing.T, options ...func(*TestDaemon)) *TestDaemon

NewDaemon creates a new `TestDaemon`, using the passed in configuration options.

func (*TestDaemon) CmdAddr

func (td *TestDaemon) CmdAddr() (ma.Multiaddr, error)

CmdAddr returns the command address of the test daemon (if it is running).

func (*TestDaemon) CmdToken added in v0.9.7

func (td *TestDaemon) CmdToken() (string, error)

CmdToken returns the command token of the test daemon (if it is running).

func (*TestDaemon) Config

func (td *TestDaemon) Config() *config.Config

Config is a helper to read out the config of the daemon.

func (*TestDaemon) ConnectSuccess

func (td *TestDaemon) ConnectSuccess(remote *TestDaemon) *CmdOutput

ConnectSuccess connects the daemon to another daemon, asserting that the operation was successful.

func (*TestDaemon) CreateAddress

func (td *TestDaemon) CreateAddress() string

CreateAddress adds a new address to the daemons wallet and returns it. equivalent to:

`venus address new`

func (*TestDaemon) CreateStorageMinerAddr

func (td *TestDaemon) CreateStorageMinerAddr(peer *TestDaemon, fromAddr address.Address) address.Address

CreateStorageMinerAddr issues a new message to the network, mines the message and returns the address of the new miner equivalent to:

`venus miner create --from $TEST_ACCOUNT 20`

func (*TestDaemon) GetAddresses

func (td *TestDaemon) GetAddresses() []string

GetAddresses returns all of the addresses of the daemon.

func (*TestDaemon) GetChainHead

func (td *TestDaemon) GetChainHead() []types.BlockHeader

GetChainHead returns the blocks in the head tipset from `td`

func (*TestDaemon) GetDefaultAddress

func (td *TestDaemon) GetDefaultAddress() string

GetDefaultAddress returns the default sender address for this daemon.

func (*TestDaemon) GetID

func (td *TestDaemon) GetID() string

GetID returns the id of the daemon.

func (*TestDaemon) GetMinerAddress

func (td *TestDaemon) GetMinerAddress() address.Address

GetMinerAddress returns the miner address for this daemon.

func (*TestDaemon) MakeMoney

func (td *TestDaemon) MakeMoney(rewards int, peers ...*TestDaemon)

MakeMoney mines a block and ensures that the block has been propagated to all peers.

func (*TestDaemon) MineAndPropagate

func (td *TestDaemon) MineAndPropagate(wait time.Duration, peers ...*TestDaemon)

MineAndPropagate mines a block and ensure the block has propagated to all `peers` by comparing the current head block of `td` with the head block of each peer in `peers`

func (*TestDaemon) MinerSetPrice

func (td *TestDaemon) MinerSetPrice(minerAddr address.Address, fromAddr address.Address, price string, expiry string) cid.Cid

MinerSetPrice creates an ask for a CURRENTLY MINING test daemon and waits for it to appears on chain. It returns the cid of the AddAsk message so other daemons can `message wait` for it.

func (*TestDaemon) MustHaveChainHeadBy

func (td *TestDaemon) MustHaveChainHeadBy(wait time.Duration, peers []*TestDaemon)

MustHaveChainHeadBy ensures all `peers` have the same chain head as `td`, by duration `wait`

func (*TestDaemon) MustUnmarshalChain

func (td *TestDaemon) MustUnmarshalChain(input string) [][]types.BlockHeader

MustUnmarshalChain unmarshals the chain from `input` into a slice of blocks

func (*TestDaemon) ReadStderr

func (td *TestDaemon) ReadStderr() string

ReadStderr returns a string representation of the stderr of the daemon.

func (*TestDaemon) ReadStdout

func (td *TestDaemon) ReadStdout() string

ReadStdout returns a string representation of the stdout of the daemon.

func (*TestDaemon) RepoDir

func (td *TestDaemon) RepoDir() string

RepoDir returns the repo directory of the test daemon.

func (*TestDaemon) Restart

func (td *TestDaemon) Restart() *TestDaemon

Restart restarts the daemon

func (*TestDaemon) Run

func (td *TestDaemon) Run(args ...string) *CmdOutput

Run executes the given command against the test daemon.

func (*TestDaemon) RunFail

func (td *TestDaemon) RunFail(err string, args ...string) *CmdOutput

RunFail is like Run, but asserts that the command exited with an error matching the passed in error.

func (*TestDaemon) RunSuccess

func (td *TestDaemon) RunSuccess(args ...string) *CmdOutput

RunSuccess is like Run, but asserts that the command exited successfully.

func (*TestDaemon) RunWithStdin

func (td *TestDaemon) RunWithStdin(stdin io.Reader, args ...string) *CmdOutput

RunWithStdin executes the given command against the test daemon, allowing to control stdin of the process.

func (*TestDaemon) Shutdown

func (td *TestDaemon) Shutdown()

Shutdown stops the daemon and deletes the repository.

func (*TestDaemon) ShutdownEasy

func (td *TestDaemon) ShutdownEasy()

ShutdownEasy stops the daemon using `SIGINT`.

func (*TestDaemon) ShutdownSuccess

func (td *TestDaemon) ShutdownSuccess()

ShutdownSuccess stops the daemon, asserting that it exited successfully.

func (*TestDaemon) Start

func (td *TestDaemon) Start() *TestDaemon

Start starts up the daemon.

func (*TestDaemon) Stop

func (td *TestDaemon) Stop() *TestDaemon

Stop stops the daemon

func (*TestDaemon) UpdatePeerID

func (td *TestDaemon) UpdatePeerID()

UpdatePeerID updates a currently mining miner's peer ID

func (*TestDaemon) WaitForAPI

func (td *TestDaemon) WaitForAPI() error

WaitForAPI polls if the API on the daemon is available, and blocks until it is.

func (*TestDaemon) WaitForMessageRequireSuccess

func (td *TestDaemon) WaitForMessageRequireSuccess(msgCid cid.Cid) *types.MessageReceipt

WaitForMessageRequireSuccess accepts a message cid and blocks until a message with matching cid is included in a block. The receipt is then inspected to ensure that the corresponding message receipt had a 0 exit code.

type TestExchange

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

func NewTestExchange

func NewTestExchange() *TestExchange

func (*TestExchange) AddPeer

func (f *TestExchange) AddPeer(peer peer.ID)

func (*TestExchange) AddSourceBlocks

func (f *TestExchange) AddSourceBlocks(blocks ...*types.BlockHeader)

AddSourceBlocks adds the input blocks to the fetcher source.

func (*TestExchange) GetBlocks

func (f *TestExchange) GetBlocks(ctx context.Context, tsk types.TipSetKey, count int) ([]*types.TipSet, error)

func (*TestExchange) GetChainMessages

func (f *TestExchange) GetChainMessages(ctx context.Context, tipsets []*types.TipSet) ([]*exchange.CompactedMessages, error)

func (*TestExchange) GetFullTipSet

func (f *TestExchange) GetFullTipSet(ctx context.Context, peer []peer.ID, tsk types.TipSetKey) (*types.FullTipSet, error)

func (*TestExchange) RemovePeer

func (f *TestExchange) RemovePeer(peer peer.ID)

type TestFetcher

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

TestFetcher is an object with the same method set as Fetcher plus a method for adding blocks to the source. It is used to implement an object that behaves like Fetcher but does not go to the network for use in tests.

func NewTestFetcher

func NewTestFetcher() *TestFetcher

NewTestFetcher returns a TestFetcher with no source blocks.

func (*TestFetcher) AddSourceBlocks

func (f *TestFetcher) AddSourceBlocks(blocks ...*types.BlockHeader)

AddSourceBlocks adds the input blocks to the fetcher source.

func (*TestFetcher) FetchTipSetHeaders

func (f *TestFetcher) FetchTipSetHeaders(ctx context.Context, tsKey types.TipSetKey, from peer.ID, done func(t *types.TipSet) (bool, error)) ([]*types.TipSet, error)

FetchTipSetHeaders fetches the tipset at `tsKey` but not messages

func (*TestFetcher) FetchTipSets

func (f *TestFetcher) FetchTipSets(ctx context.Context, tsKey types.TipSetKey, from peer.ID, done func(t *types.TipSet) (bool, error)) ([]*types.TipSet, error)

FetchTipSets fetchs the tipset at `tsKey` from the network using the fetchers `sourceBlocks`.

func (*TestFetcher) GetBlocks

func (f *TestFetcher) GetBlocks(ctx context.Context, cids []cid.Cid) ([]*types.BlockHeader, error)

GetBlocks returns any blocks in the source with matching cids.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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