From 0370a730f2b4bb6f8bbd06903685cfb6efa081df Mon Sep 17 00:00:00 2001 From: cubixle Date: Wed, 4 Aug 2021 23:25:29 +0100 Subject: [PATCH] adds comments and removes unused options --- http.go | 3 +++ l1.go | 18 ++++++++++++++++-- opts.go | 29 +++++++++++++++-------------- 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/http.go b/http.go index 3817464..f73dfd0 100644 --- a/http.go +++ b/http.go @@ -5,6 +5,9 @@ import ( "time" ) +// DefaultHTTPTester is an implementation of a simple load testing func. +// It follows the F signature and returns a Result. +// Any errors that occur will be set at Result.Error. func DefaultHTTPTester(target string) *Result { result := &Result{} client := http.Client{ diff --git a/l1.go b/l1.go index 8a823dd..b5cab66 100644 --- a/l1.go +++ b/l1.go @@ -19,10 +19,14 @@ type Runner struct { results []*Result } +// NewRunner creates a new Runner... +// There a bunch of defaults that will be set that can be overwritten +// with the Options (Opt) found in opts.go. +// +// The only error that is returned currently is if no target has been set +// with the WithTarget option func. func NewRunner(opts ...Opt) (*Runner, error) { r := &Runner{ - RunTime: 60 * time.Second, - Timeout: 30 * time.Second, MaxParrellConnections: 10, MaxConnections: 10, RampUp: 0, @@ -39,10 +43,19 @@ func NewRunner(opts ...Opt) (*Runner, error) { return r, nil } +// SetOpt gives the ability to change the configuration of Runner in a +// standardised way after NewRunner has been called. func (r *Runner) SetOpt(o Opt) { o(r) } +// Execute runs a worker pool and then fires off requests until MaxConnections +// has been reached. +// +// Execute will block until all requests have been completed. +// +// All results are aggregated and are accessible via the .Results() method +// once the requests have completed. func (r *Runner) Execute() { tasks := []*Task{} for i := 0; i < r.MaxConnections; i++ { @@ -70,5 +83,6 @@ func (r *Runner) Results() *results { Results: r.results, Target: r.Target, } + return res } diff --git a/opts.go b/opts.go index d085225..d5b70c6 100644 --- a/opts.go +++ b/opts.go @@ -1,46 +1,47 @@ package l1 -import "time" - // Opt type Opt func(*Runner) +// WithMaxConns will set the maximum amount of connections +// you want the runners to make. +// +// If this is not passed to the NewRunner() the default will be +// set to 10. func WithMaxConns(amount int) Opt { return func(r *Runner) { r.MaxConnections = amount } } -func WithTimeout(timeInSecs int) Opt { - return func(r *Runner) { - r.Timeout = time.Duration(timeInSecs) * time.Second - } -} - -func WithRunTime(timeInSecs int) Opt { - return func(r *Runner) { - r.RunTime = time.Duration(timeInSecs) * time.Second - } -} - +// WithMaxParrellConns will set the max parrell connections +// you want the runners to use. +// +// If this is not passed to the NewRunner() the default will be +// set to 10. func WithMaxParrellConns(amount int) Opt { return func(r *Runner) { r.MaxParrellConnections = amount } } +// WithTarget sets the target, the target will be passed to the runner +// function. func WithTarget(target string) Opt { return func(r *Runner) { r.Target = target } } +// WithRunFunc will set the function used by the requests pool. func WithRunFunc(f F) Opt { return func(r *Runner) { r.RunFunc = f } } +// WithRampUp will set the amount of time between each ramp up +// stage. func WithRampUp(seconds int) Opt { return func(r *Runner) { r.RampUp = seconds