vm_test

package
v0.9.15 Latest Latest
Warning

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

Go to latest
Published: May 14, 2022 License: Apache-2.0, MIT Imports: 39 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var EmptyObjectCid cid.Cid
View Source
var ExpectOK = &okExitCode
View Source
var FIL = big.NewInt(1e18)
View Source
var VerifregRoot address.Address

Functions

func ApplyOk

func ApplyOk(t *testing.T, v *VM, from, to address.Address, value abi.TokenAmount, method abi.MethodNum, params interface{}) cbor.Marshaler

func CreateAccounts

func CreateAccounts(ctx context.Context, t *testing.T, vm *VM, n int, balance abi.TokenAmount, seed int64) []address.Address

Creates n account actors in the VM with the given balance

func ExpectAttoFil

func ExpectAttoFil(amount big.Int) *big.Int

helpers to simplify pointer creation

func ExpectExitCode

func ExpectExitCode(code exitcode.ExitCode) *exitcode.ExitCode

func ExpectObject

func ExpectObject(v cbor.Marshaler) *objectExpectation

func GetDealState

func GetDealState(t *testing.T, vm *VM, dealID abi.DealID) (*market.DealState, bool)

func MinerDLInfo

func MinerDLInfo(t *testing.T, v *VM, minerIDAddr address.Address) *dline.Info

func MinerPower

func MinerPower(t *testing.T, vm *VM, minerIdAddr address.Address) miner.PowerPair

func ParamsForInvocation

func ParamsForInvocation(t *testing.T, vm *VM, idxs ...int) interface{}

func PowerForMinerSector

func PowerForMinerSector(t *testing.T, vm *VM, minerIdAddr address.Address, sectorNumber abi.SectorNumber) miner.PowerPair

func SectorDeadline

func SectorDeadline(t *testing.T, v *VM, minerIDAddress address.Address, sectorNumber abi.SectorNumber) (uint64, uint64)

find the proving deadline and partition index of a miner's sector

func ValueForInvocation

func ValueForInvocation(t *testing.T, vm *VM, idxs ...int) abi.TokenAmount

Types

type ActorImplLookup

type ActorImplLookup map[cid.Cid]runtime.VMActor

type ExpectInvocation

type ExpectInvocation struct {
	To     address.Address
	Method abi.MethodNum

	// optional
	Exitcode       exitcode.ExitCode
	From           address.Address
	Value          *abi.TokenAmount
	Params         *objectExpectation
	Ret            *objectExpectation
	SubInvocations []ExpectInvocation
}

ExpectInvocation is a pattern for a message invocation within the VM. The To and Method fields must be supplied. Exitcode defaults to exitcode.Ok. All other field are optional, where a nil or Undef value indicates that any value will match. SubInvocations will be matched recursively.

func (ExpectInvocation) Matches

func (ei ExpectInvocation) Matches(t *testing.T, invocations *Invocation)

type InternalMessage

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

func (InternalMessage) Caller

func (msg InternalMessage) Caller() address.Address

Caller implements runtime.MessageInfo.

func (InternalMessage) Receiver

func (msg InternalMessage) Receiver() address.Address

Receiver implements runtime.MessageInfo.

func (InternalMessage) ValueReceived

func (msg InternalMessage) ValueReceived() abi.TokenAmount

ValueReceived implements runtime.MessageInfo.

type Invocation

type Invocation struct {
	Msg            *InternalMessage
	Exitcode       exitcode.ExitCode
	Ret            cbor.Marshaler
	SubInvocations []*Invocation
}

type MinerBalances

type MinerBalances struct {
	AvailableBalance abi.TokenAmount
	VestingBalance   abi.TokenAmount
	PreCommitDeposit abi.TokenAmount
}

func GetMinerBalances

func GetMinerBalances(t *testing.T, vm *VM, minerIdAddr address.Address) MinerBalances

type NetworkStats

type NetworkStats struct {
	power.State
	TotalRawBytePower             abi.StoragePower
	TotalBytesCommitted           abi.StoragePower
	TotalQualityAdjPower          abi.StoragePower
	TotalQABytesCommitted         abi.StoragePower
	TotalPledgeCollateral         abi.TokenAmount
	ThisEpochRawBytePower         abi.StoragePower
	ThisEpochQualityAdjPower      abi.StoragePower
	ThisEpochPledgeCollateral     abi.TokenAmount
	MinerCount                    int64
	MinerAboveMinPowerCount       int64
	ThisEpochReward               abi.TokenAmount
	ThisEpochRewardSmoothed       *smoothing.FilterEstimate
	ThisEpochBaselinePower        abi.StoragePower
	TotalClientLockedCollateral   abi.TokenAmount
	TotalProviderLockedCollateral abi.TokenAmount
	TotalClientStorageFee         abi.TokenAmount
}

func GetNetworkStats

func GetNetworkStats(t *testing.T, vm *VM) NetworkStats

type TestActor

type TestActor struct {
	Head    cid.Cid
	Code    cid.Cid
	Balance abi.TokenAmount
}

Simplifed actor implementation that does not contain message nonce.

type VM

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

VM is a simplified message execution framework for the purposes of testing inter-actor communication. The VM maintains actor state and can be used to simulate message validation for a single block or tipset. The VM does not track gas charges, provide working syscalls, validate message nonces and many other things that a compliant VM needs to do.

func AdvanceByDeadline

func AdvanceByDeadline(t *testing.T, v *VM, minerIDAddr address.Address, predicate advanceDeadlinePredicate) (*VM, *dline.Info)

AdvanceByDeadline creates a new VM advanced to an epoch specified by the predicate while keeping the miner state upu-to-date by running a cron at the end of each deadline period.

func AdvanceByDeadlineTillEpoch

func AdvanceByDeadlineTillEpoch(t *testing.T, v *VM, minerIDAddr address.Address, e abi.ChainEpoch) (*VM, *dline.Info)

Advances by deadline until e is contained within the deadline period represented by the returned deadline info. The VM returned will be set to the last deadline close, not at e.

func AdvanceByDeadlineTillIndex

func AdvanceByDeadlineTillIndex(t *testing.T, v *VM, minerIDAddr address.Address, i uint64) (*VM, *dline.Info)

Advances by deadline until the deadline index matches the given index. The vm returned will be set to the close epoch of the previous deadline.

func AdvanceTillProvingDeadline

func AdvanceTillProvingDeadline(t *testing.T, v *VM, minerIDAddress address.Address, sectorNumber abi.SectorNumber) (*dline.Info, uint64, *VM)

Advance to the epoch when the sector is due to be proven. Returns the deadline info for proving deadline for sector, partition index of sector, and a VM at the opening of the deadline (ready for SubmitWindowedPoSt).

func NewVM

func NewVM(ctx context.Context, actorImpls ActorImplLookup, store adt.Store) *VM

NewVM creates a new runtime for executing messages.

func NewVMWithSingletons

func NewVMWithSingletons(ctx context.Context, t *testing.T) *VM

Creates a new VM and initializes all singleton actors plus a root verifier account.

func (*VM) Abortf

func (vm *VM) Abortf(errExitCode exitcode.ExitCode, msg string, args ...interface{})

func (*VM) ApplyMessage

func (vm *VM) ApplyMessage(from, to address.Address, value abi.TokenAmount, method abi.MethodNum, params interface{}) (cbor.Marshaler, exitcode.ExitCode)

ApplyMessage applies the message to the current state.

func (*VM) GetActor

func (vm *VM) GetActor(a address.Address) (*states.Actor, bool, error)

func (*VM) GetEpoch

func (vm *VM) GetEpoch() abi.ChainEpoch

Get the chain epoch for this vm

func (*VM) GetState

func (vm *VM) GetState(addr address.Address, out cbor.Unmarshaler) error

func (*VM) Invocations

func (vm *VM) Invocations() []*Invocation

func (*VM) LastInvocation

func (vm *VM) LastInvocation() *Invocation

func (*VM) Log

func (vm *VM) Log(level rt.LogLevel, msg string, args ...interface{})

func (*VM) NormalizeAddress

func (vm *VM) NormalizeAddress(addr address.Address) (address.Address, bool)

func (*VM) StateRoot

func (vm *VM) StateRoot() cid.Cid

func (*VM) Store

func (vm *VM) Store() adt.Store

func (*VM) WithEpoch

func (vm *VM) WithEpoch(epoch abi.ChainEpoch) (*VM, error)

func (*VM) WithRoot

func (vm *VM) WithRoot(root cid.Cid) (*VM, error)

Jump to

Keyboard shortcuts

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