lib

package
v0.14.0 Latest Latest
Warning

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

Go to latest
Published: May 10, 2017 License: AGPL-3.0 Imports: 17 Imported by: 0

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 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 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.
	Init()

	// 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) 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 Options

type Options struct {
	Paused     null.Bool   `json:"paused"`
	VUs        null.Int    `json:"vus"`
	VUsMax     null.Int    `json:"vusMax"`
	Duration   null.String `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"`

	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

func (Options) SetAllValid

func (o Options) SetAllValid(valid bool) Options

type Runner

type Runner interface {
	// 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) 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 time.Duration `json:"duration"`
	Target   null.Int      `json:"target"`
}

func (*Stage) UnmarshalJSON added in v0.9.2

func (s *Stage) UnmarshalJSON(data []byte) error

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