lib

package
v0.16.0 Latest Latest
Warning

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

Go to latest
Published: Jun 16, 2017 License: AGPL-3.0 Imports: 25 Imported by: 89

Documentation

Index

Constants

View Source
const (
	TickRate        = 1 * time.Millisecond
	MetricsRate     = 1 * time.Second
	CollectRate     = 10 * time.Millisecond
	ThresholdsRate  = 2 * time.Second
	ShutdownTimeout = 10 * time.Second

	BackoffAmount = 50 * time.Millisecond
	BackoffMax    = 10 * time.Second
)

Variables

View Source
var ErrNameContainsGroupSeparator = errors.Errorf("group and check names may not contain '%s'", groupSeparator)

Functions

func AnonymizePath added in v0.15.0

func AnonymizePath(path string) string

Archives should be share-able; to that end, paths including home directories should be anonymized.

func Clampf added in v0.5.0

func Clampf(val, min, max float64) float64

Clampf returns the given value, "clamped" to the range [min, max].

func Lerp

func Lerp(x, y int64, t float64) int64

Lerp is a linear interpolation between two values x and y, returning the value at the point t, where t is a fraction in the range [0.0 - 1.0].

func SplitKV added in v0.8.2

func SplitKV(s string) (key, value string)

Splits a string in the form "key=value".

Types

type Archive added in v0.15.0

type Archive struct {
	// The runner to use, eg. "js".
	Type string `json:"type"`

	// Options to use.
	Options Options `json:"options"`

	// Filename and contents of the main file being executed.
	Filename string `json:"filename"`
	Data     []byte `json:"-"`

	// Working directory for resolving relative paths.
	Pwd string `json:"pwd"`

	// Archived filesystem.
	Scripts map[string][]byte `json:"-"` // included scripts
	Files   map[string][]byte `json:"-"` // non-script resources
}

An Archive is a rollup of all resources and options needed to reproduce a test identically elsewhere.

func ReadArchive added in v0.15.0

func ReadArchive(in io.Reader) (*Archive, error)

func (*Archive) Write added in v0.15.0

func (arc *Archive) Write(out io.Writer) error

type AuthenticatedCollector added in v0.16.0

type AuthenticatedCollector interface {
	Collector

	// Present a login form to the user.
	Login(conf interface{}, in io.Reader, out io.Writer) (interface{}, error)
}

An AuthenticatedCollector is a collector that can store persistent authentication.

type Check

type Check struct {
	ID    string `json:"id"`
	Path  string `json:"path"`
	Group *Group `json:"group"`
	Name  string `json:"name"`

	Passes int64 `json:"passes"`
	Fails  int64 `json:"fails"`
}

func NewCheck

func NewCheck(name string, group *Group) (*Check, error)

type Collector added in v0.8.3

type Collector interface {
	// Init is called between the collector's creation and the call to Run(), right after the k6
	// banner has been printed to stdout. The argument is the result of calling MakeConfig() and
	// then deserializing from JSON the config value stored to disk (if any).
	Init() error

	// MakeConfig is called before Init() and should instantiate a blank configuration struct.
	// Do not apply defaults here, instead use null'able values and apply defaults in Init().
	MakeConfig() interface{}

	// Run is called in a goroutine and starts the collector. Should commit samples to the backend
	// at regular intervals and when the context is terminated.
	Run(ctx context.Context)

	// Collect receives a set of samples. This method is never called concurrently, and only while
	// the context for Run() is valid, but should defer as much work as possible to Run().
	Collect(samples []stats.Sample)
}

A Collector abstracts away the details of a storage backend from the application.

type CookieJar

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

CookieJar implements a simplified version of net/http/cookiejar, that most notably can be cleared without reinstancing the whole thing.

func NewCookieJar

func NewCookieJar() *CookieJar

func (*CookieJar) Clear

func (j *CookieJar) Clear()

func (*CookieJar) Cookies

func (j *CookieJar) Cookies(u *url.URL) []*http.Cookie

func (*CookieJar) SetCookies

func (j *CookieJar) SetCookies(u *url.URL, cookies []*http.Cookie)

type Duration added in v0.9.2

type Duration time.Duration

func (Duration) MarshalJSON added in v0.16.0

func (d Duration) MarshalJSON() ([]byte, error)

func (Duration) String added in v0.16.0

func (d Duration) String() string

func (*Duration) UnmarshalJSON added in v0.9.2

func (d *Duration) UnmarshalJSON(data []byte) error

type Engine

type Engine struct {
	Runner    Runner
	Options   Options
	Collector Collector
	Logger    *log.Logger

	Stages      []Stage
	Metrics     map[string]*stats.Metric
	MetricsLock sync.RWMutex
	// contains filtered or unexported fields
}

The Engine is the beating heart of K6.

func NewEngine

func NewEngine(r Runner, o Options) (*Engine, error)

func (*Engine) AtTime added in v0.5.0

func (e *Engine) AtTime() time.Duration

func (*Engine) GetVUs added in v0.5.0

func (e *Engine) GetVUs() int64

func (*Engine) GetVUsMax added in v0.5.0

func (e *Engine) GetVUsMax() int64

func (*Engine) IsPaused added in v0.5.0

func (e *Engine) IsPaused() bool

func (*Engine) IsRunning

func (e *Engine) IsRunning() bool

func (*Engine) IsTainted added in v0.5.0

func (e *Engine) IsTainted() bool

func (*Engine) Run

func (e *Engine) Run(ctx context.Context) error

func (*Engine) SetPaused added in v0.5.0

func (e *Engine) SetPaused(v bool)

func (*Engine) SetVUs

func (e *Engine) SetVUs(v int64) error

func (*Engine) SetVUsMax added in v0.5.0

func (e *Engine) SetVUsMax(v int64) error

func (*Engine) TotalTime

func (e *Engine) TotalTime() time.Duration

type Group

type Group struct {
	ID     string            `json:"id"`
	Path   string            `json:"path"`
	Name   string            `json:"name"`
	Parent *Group            `json:"parent"`
	Groups map[string]*Group `json:"groups"`
	Checks map[string]*Check `json:"checks"`
	// contains filtered or unexported fields
}

func NewGroup

func NewGroup(name string, parent *Group) (*Group, error)

func (*Group) Check

func (g *Group) Check(name string) (*Check, error)

func (*Group) Group

func (g *Group) Group(name string) (*Group, error)

type NullDuration added in v0.16.0

type NullDuration struct {
	Duration
	Valid bool
}

func NullDurationFrom added in v0.16.0

func NullDurationFrom(d time.Duration) NullDuration

func (NullDuration) MarshalJSON added in v0.16.0

func (d NullDuration) MarshalJSON() ([]byte, error)

func (*NullDuration) UnmarshalJSON added in v0.16.0

func (d *NullDuration) UnmarshalJSON(data []byte) error

type Options

type Options struct {
	Paused     null.Bool    `json:"paused"`
	VUs        null.Int     `json:"vus"`
	VUsMax     null.Int     `json:"vusMax"`
	Duration   NullDuration `json:"duration"`
	Iterations null.Int     `json:"iterations"`
	Stages     []Stage      `json:"stages"`

	Linger        null.Bool `json:"linger"`
	NoUsageReport null.Bool `json:"noUsageReport"`

	MaxRedirects          null.Int    `json:"maxRedirects"`
	InsecureSkipTLSVerify null.Bool   `json:"insecureSkipTLSVerify"`
	NoConnectionReuse     null.Bool   `json:"noConnectionReuse"`
	UserAgent             null.String `json:"userAgent"`
	Throw                 null.Bool   `json:"throw"`

	Thresholds map[string]stats.Thresholds `json:"thresholds"`

	// These values are for third party collectors' benefit.
	External map[string]interface{} `json:"ext"`
}

func (Options) Apply

func (o Options) Apply(opts Options) Options

type Runner

type Runner interface {
	// Archives the runner; an archive can be restored anywhere else to create a perfect clone.
	MakeArchive() *Archive

	// Creates a new VU. As much as possible should be precomputed here, to allow a pool
	// of prepared VUs to be used to quickly scale up and down.
	NewVU() (VU, error)

	// Returns the default (root) group.
	GetDefaultGroup() *Group

	// Returns the option set.
	GetOptions() Options

	// Applies a set of options.
	ApplyOptions(opts Options)
}

A Runner is a factory for VUs.

type RunnerFunc added in v0.5.0

type RunnerFunc func(ctx context.Context) ([]stats.Sample, error)

RunnerFunc adapts a function to be used as both a runner and a VU. Mainly useful for testing.

func (RunnerFunc) ApplyOptions added in v0.5.0

func (fn RunnerFunc) ApplyOptions(opts Options)

func (RunnerFunc) GetDefaultGroup added in v0.5.0

func (fn RunnerFunc) GetDefaultGroup() *Group

func (RunnerFunc) GetOptions added in v0.5.0

func (fn RunnerFunc) GetOptions() Options

func (RunnerFunc) MakeArchive added in v0.15.0

func (fn RunnerFunc) MakeArchive() *Archive

func (RunnerFunc) NewVU added in v0.5.0

func (fn RunnerFunc) NewVU() (VU, error)

func (RunnerFunc) VU added in v0.11.0

func (fn RunnerFunc) VU() *RunnerFuncVU

type RunnerFuncVU added in v0.11.0

type RunnerFuncVU struct {
	Fn RunnerFunc
	ID int64
}

func (*RunnerFuncVU) Reconfigure added in v0.11.0

func (fn *RunnerFuncVU) Reconfigure(id int64) error

func (RunnerFuncVU) RunOnce added in v0.11.0

func (fn RunnerFuncVU) RunOnce(ctx context.Context) ([]stats.Sample, error)

type SourceData added in v0.9.0

type SourceData struct {
	Data     []byte
	Filename string
}

type Stage

type Stage struct {
	Duration NullDuration `json:"duration"`
	Target   null.Int     `json:"target"`
}

type VU

type VU interface {
	// Runs the VU once. An iteration should be completely self-contained, and no state
	// or open connections should carry over from one iteration to the next.
	RunOnce(ctx context.Context) ([]stats.Sample, error)

	// Called when the VU's identity changes.
	Reconfigure(id int64) error
}

A VU is a Virtual User.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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