Documentation
¶
Index ¶
- Constants
- Variables
- func Generate(c GenConfig) int
- func NewWrapRand(seed int64, ctl int) *wraprand
- func ParseMaskString(arg string, tag string) (map[int]int, error)
- func SetTunables(t TunableParams)
- type GenConfig
- type TunableParams
- func (t *TunableParams) DisableDefer()
- func (t *TunableParams) DisableMethodCalls()
- func (t *TunableParams) DisableRecursiveCalls()
- func (t *TunableParams) DisableReflectionCalls()
- func (t *TunableParams) DisableTakeAddr()
- func (t *TunableParams) LimitInputs(n int) error
- func (t *TunableParams) LimitOutputs(n int) error
Constants ¶
const ( // Param not address taken. StructTfIdx = iota ArrayTfIdx MapTfIdx PointerTfIdx NumericTfIdx FloatTfIdx ComplexTfIdx ByteTfIdx StringTfIdx )
const ( // Param not address taken. SkipAll = -1 SkipNone = 0 SkipPayload = 1 )
const ( RandCtlNochecks = 0 RandCtlChecks = 1 << iota RandCtlCapture RandCtlPanic )
const CallerName = "Caller"
const CheckerName = "Checker"
Variables ¶
var Verbctl int = 0
Functions ¶
func Generate ¶
Generate is the top level code generation hook for this package. Emits code according to the schema in config object 'c'.
func NewWrapRand ¶
func ParseMaskString ¶
ParseMaskString parses a string of the form K,J,...,M-N,Q-R,...,Z e.g. comma-separated integers or ranges of integers, returning the result in a form suitable for FcnMask or PkgMask fields in a Config. Here "tag" holds the mask flavor (fcn or pkg) and "arg" is the string argument to be parsed.
func SetTunables ¶
func SetTunables(t TunableParams)
SetTunables accepts a TunableParams object, checks to make sure that the settings in it are sane/logical, and applies the parameters for any subsequent calls to the Generate function. This function will issue a fatal error if any of the tunable params are incorrect/insane (for example, a 'percentage' value outside the range of 0-100).
Types ¶
type GenConfig ¶
type GenConfig struct {
// Tag is a string prefix prepended to functions within
// the generated code.
Tag string
// Output directory in to which we'll emit generated code.
// This will be created if it does not exist.
OutDir string
// Packagepath prefix given to the generated code.
PkgPath string
// Number of test packages created within the generated corpus.
// Each test package is essentially an independent collection
// generated code; the point of having multiple packages is to
// be able to get faster builds (more parallelism), and to avoid
// the compile time issues that crop up with 'giant' packages.
NumTestPackages int
// Number of test function pairs within each generated test package.
// Each pair consists of a "caller" function and "callee" function.
NumTestFunctions int
// Seed for random number generator.
Seed int64
// Pragma is a "// go:..." compiler directive to apply to the
// callee function as part of a generated function pair.
Pragma string
// Function and package mask used for minimization purposes.
// If a given mask is non-nil, then the generator will only
// emit code for a given func or package if its index is
// present in the mask map.
FcnMask map[int]int
PkgMask map[int]int
// Maximum number of failures to encounter before bailing out.
MaxFail int
// forcestackgrowth if set tells the generator to insert
// calls to runtime.gcTestMoveStackOnNextCall at various points
// in the generated code.
ForceStackGrowth bool
// Random number generator control flag (debugging)
RandCtl int
// Tells the generator to run "goimports" on the emitted code.
RunGoImports bool
// Debugging/testing hook. If set to 1, emit code that will cause the
// build to fail; if set to 2, emit code that will cause a test to fail.
EmitBad int
// If EmitBad above is set, then these can be used to select the ID of
// a specific bad func/package.
BadPackageIdx int
BadFuncIdx int
}
GenConfig contains configuration parameters relating to the mechanics of the code generation, e.g. how many packages/functions to emit, path to a directory into which we place the generated code, prefixes/packagenames for the generate code, and so on.
type TunableParams ¶
type TunableParams struct {
// contains filtered or unexported fields
}
TunableParams contains configuration parameters that control the flavor of code generated for a given test function. This includes things like the number of params/returns, the percentages of types (int, struct, etc) of the params/returns, and so on.
func DefaultTunables ¶
func DefaultTunables() TunableParams
func (*TunableParams) DisableDefer ¶
func (t *TunableParams) DisableDefer()
func (*TunableParams) DisableMethodCalls ¶
func (t *TunableParams) DisableMethodCalls()
func (*TunableParams) DisableRecursiveCalls ¶
func (t *TunableParams) DisableRecursiveCalls()
func (*TunableParams) DisableReflectionCalls ¶
func (t *TunableParams) DisableReflectionCalls()
func (*TunableParams) DisableTakeAddr ¶
func (t *TunableParams) DisableTakeAddr()
func (*TunableParams) LimitInputs ¶
func (t *TunableParams) LimitInputs(n int) error
func (*TunableParams) LimitOutputs ¶
func (t *TunableParams) LimitOutputs(n int) error