Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CallInfo ¶
type CallInfo struct { Flags CallFlags Signal []uint32 // feedback signal, filled if FlagSignal is set Cover []uint32 // per-call coverage, filled if FlagSignal is set and cover == true, //if dedup == false, then cov effectively contains a trace, otherwise duplicates are removed Comps prog.CompMap // per-call comparison operands Errno int // call errno (0 if the call was successful) }
type Config ¶
type Config struct { // Path to executor binary. Executor string // Flags are configuation flags, defined above. Flags EnvFlags // Timeout is the execution timeout for a single program. Timeout time.Duration }
Config is the configuration for Env.
type Env ¶
func (*Env) Exec ¶
func (env *Env) Exec(opts *ExecOpts, p *prog.Prog) (output []byte, info []CallInfo, failed, hanged bool, err0 error)
Exec starts executor binary to execute program p and returns information about the execution: output: process output info: per-call info failed: true if executor has detected a kernel bug hanged: program hanged and was killed err0: failed to start process, or executor has detected a logical error
type EnvFlags ¶
type EnvFlags uint64
Configuration flags for Config.Flags.
const ( FlagDebug EnvFlags = 1 << iota // debug output from executor FlagSignal // collect feedback signals (coverage) FlagSandboxSetuid // impersonate nobody user FlagSandboxNamespace // use namespaces for sandboxing FlagEnableTun // initialize and use tun in executor FlagEnableNetDev // setup a bunch of various network devices for testing FlagEnableFault // enable fault injection support // Executor does not know about these: FlagUseShmem // use shared memory instead of pipes for communication FlagUseForkServer // use extended protocol with handshake )
type ExecFlags ¶
type ExecFlags uint64
Per-exec flags for ExecOpts.Flags:
const ( FlagCollectCover ExecFlags = 1 << iota // collect coverage FlagDedupCover // deduplicate coverage in executor FlagInjectFault // inject a fault in this execution (see ExecOpts) FlagCollectComps // collect KCOV comparisons FlagThreaded // use multiple threads to mitigate blocked syscalls FlagCollide // collide syscalls to provoke data races )
type ExecutorFailure ¶
type ExecutorFailure string
ExecutorFailure is returned from MakeEnv or from env.Exec when executor terminates by calling fail function. This is considered a logical error (a failed assert).
func (ExecutorFailure) Error ¶
func (err ExecutorFailure) Error() string
type Gate ¶
type Gate struct {
// contains filtered or unexported fields
}
Gate limits concurrency level and window to the given value. Limitation of concurrency window means that if a very old activity is still running it will not let new activities to start even if concurrency level is low.