Documentation

Overview

Package checks implements gobenchdata checks and checks configuration

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GenerateConfig

func GenerateConfig(path string) error

GenerateConfig outputs configuration in the provided directory

Types

type Check

type Check struct {
	Name        string `yaml:"name"`
	Description string `yaml:"description"`

	// regex matchers
	Package    string   `yaml:"package"`
	Benchmarks []string `yaml:"benchmarks"`

	// Diff functions are written as `antonmedv/expr` expressions: https://github.com/antonmedv/expr
	//
	// Two parameters are provided:
	//
	// * `base`: bench.Benchmark
	// * `current`: bench.Benchmark
	//
	// Return a flaot64-castable value. This is then checked against your defined Thresholds
	//
	// In general, calibrate your diff to return:
	//
	// * negative value for improvement
	// * positive value for regression
	//
	DiffFunc   string     `yaml:"diff"`
	Thresholds Thresholds `yaml:"thresholds"`
}

Check describes a set of benchmarks to run a diff on and check against thresholds

type CheckResult

type CheckResult struct {
	Status Status

	Diffs      []DiffResult
	Thresholds Thresholds
}

CheckResult reports the output of a Check

type Config

type Config struct {
	Checks []Check `yaml:"checks"`
}

Config declares checks configurations

func LoadConfig

func LoadConfig(path string) (*Config, error)

LoadConfig reads configuration from the given path

type DiffResult

type DiffResult struct {
	Status Status

	Package   string
	Benchmark string

	Value float64
}

DiffResult is the result of a diff

type EnvDiffFunc

type EnvDiffFunc struct {
	Check *Check
	// contains filtered or unexported fields
}

EnvDiffFunc describes variables provided to a DiffFunc

type EvaluateOptions

type EvaluateOptions struct {
	Debug       bool
	MustFindAll bool
}

EvaluateOptions declares options for checks evaluation

type Report

type Report struct {
	Status Status

	Base    string
	Current string

	Checks map[string]*CheckResult
}

Report reports the output of Evaluate

func Evaluate

func Evaluate(checks []Check, base bench.RunHistory, current bench.RunHistory, opts *EvaluateOptions) (*Report, error)

Evaluate checks against benchmark runs

func LoadReport

func LoadReport(path string) (*Report, error)

LoadReport loads checks results from the given path

type Status

type Status string

Status describes result of a check

const (
	// StatusPass is good!
	StatusPass Status = "pass"
	// StatusFail is bad
	StatusFail Status = "fail"
	// StatusNotFound means no measurements were found
	StatusNotFound Status = "not-found"
)

type Thresholds

type Thresholds struct {
	Min *float64 `yaml:"min,omitempty"`
	Max *float64 `yaml:"max,omitempty"`
}

Thresholds declares values from ChangeFunc to fail