Documentation
¶
Index ¶
- type Corpus
- func (c *Corpus) ActiveMutableSequenceCount() int
- func (c *Corpus) AddTestResultCallSequence(callSequence calls.CallSequence, mutationChooserWeight *big.Int, ...) error
- func (c *Corpus) CallSequenceEntryCount(mutable bool, immutable bool, testResults bool) int
- func (c *Corpus) CheckSequenceCoverageAndUpdate(callSequence calls.CallSequence, mutationChooserWeight *big.Int, ...) error
- func (c *Corpus) CoverageMaps() *coverage.CoverageMaps
- func (c *Corpus) Flush() error
- func (c *Corpus) Initialize(baseTestChain *chain.TestChain, contractDefinitions contracts.Contracts) error
- func (c *Corpus) RandomMutationTargetSequence() (calls.CallSequence, error)
- func (c *Corpus) UnexecutedCallSequence() *calls.CallSequence
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Corpus ¶
type Corpus struct {
// contains filtered or unexported fields
}
Corpus describes an archive of fuzzer-generated artifacts used to further fuzzing efforts. These artifacts are reusable across fuzzer runs. Changes to the fuzzer/chain configuration or definitions within smart contracts may create incompatibilities with corpus items.
func NewCorpus ¶
NewCorpus initializes a new Corpus object, reading artifacts from the provided directory. If the directory refers to an empty path, artifacts will not be persistently stored.
func (*Corpus) ActiveMutableSequenceCount ¶ added in v0.1.1
ActiveMutableSequenceCount returns the count of call sequences recorded in the corpus which have been validated after Corpus initialization and are ready for use in mutations.
func (*Corpus) AddTestResultCallSequence ¶ added in v0.1.1
func (c *Corpus) AddTestResultCallSequence(callSequence calls.CallSequence, mutationChooserWeight *big.Int, flushImmediately bool) error
AddTestResultCallSequence adds a call sequence recorded to the corpus due to a test case provider flagging it to be recorded. Returns an error, if one occurs.
func (*Corpus) CallSequenceEntryCount ¶ added in v0.1.1
CallSequenceEntryCount returns the total number of call sequences entries in the corpus, based on the provided filter flags. Some call sequences may not be valid for use if they fail validation when initializing the corpus. Returns the count of the requested call sequence entries.
func (*Corpus) CheckSequenceCoverageAndUpdate ¶ added in v0.1.1
func (c *Corpus) CheckSequenceCoverageAndUpdate(callSequence calls.CallSequence, mutationChooserWeight *big.Int, flushImmediately bool) error
CheckSequenceCoverageAndUpdate checks if the most recent call executed in the provided call sequence achieved coverage the Corpus did not with any of its call sequences. If it did, the call sequence is added to the corpus and the Corpus coverage maps are updated accordingly. Returns an error if one occurs.
func (*Corpus) CoverageMaps ¶
func (c *Corpus) CoverageMaps() *coverage.CoverageMaps
CoverageMaps exposes coverage details for all call sequences known to the corpus.
func (*Corpus) Initialize ¶
func (c *Corpus) Initialize(baseTestChain *chain.TestChain, contractDefinitions contracts.Contracts) error
Initialize initializes any runtime data needed for a Corpus on startup. Call sequences are replayed on the post-setup (deployment) test chain to calculate coverage, while resolving references to compiled contracts.
func (*Corpus) RandomMutationTargetSequence ¶ added in v0.1.1
func (c *Corpus) RandomMutationTargetSequence() (calls.CallSequence, error)
RandomMutationTargetSequence returns a weighted random call sequence from the Corpus, or an error if one occurs.
func (*Corpus) UnexecutedCallSequence ¶
func (c *Corpus) UnexecutedCallSequence() *calls.CallSequence
UnexecutedCallSequence returns a call sequence loaded from disk which has not yet been returned by this method. It is intended to be used by the fuzzer to run all un-executed call sequences (without mutations) to check for test failures. If a call sequence is returned, it will not be returned by this method again. Returns a call sequence loaded from disk which has not yet been executed, to check for test failures. If all sequences in the corpus have been executed, this will return nil.