funcgen

package
v0.0.0-...-21fbe9e Latest Latest
Warning

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

Go to latest
Published: Feb 4, 2026 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SeedSkip       uint64 = 10
	SeedRateJitter uint64 = 20
	SeedTaskJitter uint64 = 30
)

Predefined seed offsets for the various RNGs needed in a workload.

Variables

This section is empty.

Functions

func ParseBernoulli

func ParseBernoulli(s string, rngs rand.Source) (distuv.Rander, error)

parse bernoulli(:time, :probability) into distuv.Bernoulli

func ParseDistribution

func ParseDistribution(s string, rngs rand.Source) (distuv.Rander, error)

Match a string prefix to a distuv distribution and parse its function arguments using a regular expression.

func ParseExponential

func ParseExponential(s string, rngs rand.Source) (distuv.Rander, error)

parse exponential(:rate) into distuv.Exponential

func ParseLaplace

func ParseLaplace(s string, rngs rand.Source) (distuv.Rander, error)

parse laplace(:mu, :scale) into distuv.Exponential

func ParseNormal

func ParseNormal(s string, rngs rand.Source) (distuv.Rander, error)

parse normal(:mu, :sigma) into distuv.Normal

func ParsePareto

func ParsePareto(s string, rngs rand.Source) (distuv.Rander, error)

parse pareto(:time, :alpha) into distuv.Pareto

func ParsePoisson

func ParsePoisson(s string, rngs rand.Source) (distuv.Rander, error)

parse poisson(:time, :rate) into distuv.Poisson

func ParseUniform

func ParseUniform(s string, rngs rand.Source) (distuv.Rander, error)

parse uniform(:min, :max) into distuv.Uniform

Types

type CoinFlip

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

func NewCoinFlip

func NewCoinFlip(p float64, rngs rand.Source) (*CoinFlip, error)

Boolean coin flip based on a bernoulli distribution.

func (*CoinFlip) Next

func (cf *CoinFlip) Next() bool

type JitterDuration

type JitterDuration struct {
	Fixed  time.Duration
	Jitter string
	// contains filtered or unexported fields
}

func (*JitterDuration) Next

func (jd *JitterDuration) Next() time.Duration

Return the next random duration as Fixed + Jitter.Rand()

func (*JitterDuration) Prepare

func (jd *JitterDuration) Prepare(rng rand.Source) (*JitterDuration, error)

Preflight checks on the arguments and instantiate the distribution.

type Never

type Never struct{}

Simplest distribution which always returns 0.

func (*Never) Rand

func (*Never) Rand() float64

type NextTask

type NextTask struct {
	Sleep   time.Duration
	Tasklen time.Duration
	Skip    bool
}

type TraceConfig

type TraceConfig struct {
	Name            string
	Seed            uint64
	Duration        time.Duration
	ConcurrentLimit uint64
	Workloads       []WorkloadConfig
}

func ReadTraceConfig

func ReadTraceConfig(filename string) (trace *TraceConfig, err error)

type WorkloadConfig

type WorkloadConfig struct {
	Name string
	Seed uint64
	Skip float64

	Rate JitterDuration
	Task JitterDuration
	// contains filtered or unexported fields
}

func (WorkloadConfig) TaskIterator

func (w WorkloadConfig) TaskIterator() iter.Seq[NextTask]

Iterator that yields the next task properties without actually sleeping.

func (WorkloadConfig) TaskTriggers

Iterator that runs a workload. Attention: that means that this iterator will block and sleep according to the task instants! Use this in a goroutine to trigger function requests asynchronously.

Jump to

Keyboard shortcuts

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