Help us shape the future of Go! Take the 2026 Go Developer Survey

loadgen

package
v0.17.0 Latest Latest
Warning

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

Go to latest
Published: Oct 20, 2026 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

Package loadgen is a small, stdlib-only client-side HTTP load generator (ADR-0053). It drives a target URL with concurrent workers (closed model) and reports throughput + tail latency — the engine behind `funcdctl bench` (the funcd analogue of `nats bench`).

It is deliberately HAND-ROLLED on the standard library — net/http + sort + sync — so the shipped funcdctl binary carries no benchmarking dependency: ADR-0051 confines gopsutil/fortio to the funcd-bench harness, and this package keeps that true (it must NEVER import them). It is a client tool, not the funcd-bench embed/memory harness (ADR-0040/0052).

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Options

type Options struct {
	URL         string
	Method      string        // default POST
	Body        string        // request body, sent as-is each request
	ContentType string        // default application/json
	Concurrency int           // worker goroutines (default 8)
	Duration    time.Duration // closed-model run length (used when Requests == 0; default 5s)
	Requests    int           // total requests across workers; 0 ⇒ use Duration
}

Options configures a load run.

type Result

type Result struct {
	Total    int           `json:"total"`
	OK       int           `json:"ok"`
	Errors   int           `json:"errors"`
	Duration time.Duration `json:"duration"` // actual elapsed wall-clock of the run
	RPS      float64       `json:"rps"`      // OK / Duration.Seconds()
	P50      time.Duration `json:"p50"`
	P90      time.Duration `json:"p90"`
	P99      time.Duration `json:"p99"`
	Max      time.Duration `json:"max"`
}

Result is the measured outcome of a run.

func Run

func Run(ctx context.Context, o Options) (Result, error)

Run drives o.URL under load and returns the measured Result. It honors ctx cancellation. Transport failures (connection refused, timeout, non-2xx) are counted in Result.Errors — they are NOT returned; the only returned error is a usage problem (empty URL). The caller decides whether OK==0 is fatal.

Jump to

Keyboard shortcuts

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