Documentation
¶
Index ¶
- Variables
- func AnonymizePath(path string) string
- func Clampf(val, min, max float64) float64
- func Lerp(x, y int64, t float64) int64
- func Max(a, b int64) int64
- func Min(a, b int64) int64
- func SplitKV(s string) (key, value string)
- type Archive
- type AtomicBool
- type AuthenticatedCollector
- type Check
- type Collector
- type CookieJar
- type Duration
- type Executor
- type Group
- type NullDuration
- type Options
- type Runner
- type RunnerFunc
- type RunnerFuncVU
- type SourceData
- type Stage
- type TLSAuth
- type TLSAuthFields
- type TLSCipherSuites
- type TLSVersion
- type VU
Constants ¶
This section is empty.
Variables ¶
var ErrNameContainsGroupSeparator = errors.Errorf("group and check names may not contain '%s'", groupSeparator)
var SupportedTLSCipherSuites = map[string]uint16{ "TLS_RSA_WITH_RC4_128_SHA": tls.TLS_RSA_WITH_RC4_128_SHA, "TLS_RSA_WITH_3DES_EDE_CBC_SHA": tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA, "TLS_RSA_WITH_AES_128_CBC_SHA": tls.TLS_RSA_WITH_AES_128_CBC_SHA, "TLS_RSA_WITH_AES_256_CBC_SHA": tls.TLS_RSA_WITH_AES_256_CBC_SHA, "TLS_RSA_WITH_AES_128_GCM_SHA256": tls.TLS_RSA_WITH_AES_128_GCM_SHA256, "TLS_RSA_WITH_AES_256_GCM_SHA384": tls.TLS_RSA_WITH_AES_256_GCM_SHA384, "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA": tls.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA": tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA": tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, "TLS_ECDHE_RSA_WITH_RC4_128_SHA": tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA, "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA": tls.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA": tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA": tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256": tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256": tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384": tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384": tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, }
var SupportedTLSVersions = map[string]int{ "ssl3.0": tls.VersionSSL30, "tls1.0": tls.VersionTLS10, "tls1.1": tls.VersionTLS11, "tls1.2": tls.VersionTLS12, }
Functions ¶
func AnonymizePath ¶ added in v0.15.0
Archives should be share-able; to that end, paths including home directories should be anonymized.
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.
type AtomicBool ¶ added in v0.17.0
type AtomicBool struct {
// contains filtered or unexported fields
}
func (*AtomicBool) Get ¶ added in v0.17.0
func (a *AtomicBool) Get() bool
func (*AtomicBool) Set ¶ added in v0.17.0
func (a *AtomicBool) Set(v bool)
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 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)
// Returns whether the collector is ready to receive samples. The engine will wait for this to
// return true before doing anything else.
IsReady() bool
// 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
type Duration ¶ added in v0.9.2
func (Duration) MarshalJSON ¶ added in v0.16.0
func (*Duration) UnmarshalJSON ¶ added in v0.9.2
type Executor ¶ added in v0.17.0
type Executor interface {
Run(ctx context.Context, out chan<- []stats.Sample) error
IsRunning() bool
GetRunner() Runner
SetLogger(l *log.Logger)
GetLogger() *log.Logger
GetIterations() int64
GetEndIterations() null.Int
SetEndIterations(i null.Int)
GetTime() time.Duration
GetEndTime() NullDuration
SetEndTime(t NullDuration)
IsPaused() bool
SetPaused(paused bool)
GetVUs() int64
SetVUs(vus int64) error
GetVUsMax() int64
SetVUsMax(max int64) error
}
An Executor wraps a Runner, and abstracts away an execution environment.
type Group ¶
type NullDuration ¶ added in v0.16.0
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"`
TLSCipherSuites *TLSCipherSuites `json:"tlsCipherSuites"`
TLSVersion *TLSVersion `json:"tlsVersion"`
TLSAuth []*TLSAuth `json:"tlsAuth"`
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"`
}
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
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
type SourceData ¶ added in v0.9.0
type Stage ¶
type Stage struct {
Duration NullDuration `json:"duration"`
Target null.Int `json:"target"`
}
type TLSAuth ¶ added in v0.17.2
type TLSAuth struct {
TLSAuthFields
// contains filtered or unexported fields
}
func (*TLSAuth) Certificate ¶ added in v0.17.2
func (c *TLSAuth) Certificate() (*tls.Certificate, error)
func (*TLSAuth) UnmarshalJSON ¶ added in v0.17.2
type TLSAuthFields ¶ added in v0.17.2
type TLSCipherSuites ¶ added in v0.17.0
type TLSCipherSuites []uint16
func (*TLSCipherSuites) UnmarshalJSON ¶ added in v0.17.0
func (s *TLSCipherSuites) UnmarshalJSON(data []byte) error
type TLSVersion ¶ added in v0.17.0
func (*TLSVersion) UnmarshalJSON ¶ added in v0.17.0
func (v *TLSVersion) 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.