app

package
v0.0.0-...-be868c5 Latest Latest
Warning

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

Go to latest
Published: Apr 29, 2024 License: BSD-3-Clause Imports: 35 Imported by: 0

Documentation

Overview

Package app implements the performance data analysis server.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AdaptiveKolmogorovZurbenko

func AdaptiveKolmogorovZurbenko(xs []float64, m, k int) []float64

AdaptiveKolmogorovZurbenko performs an adaptive Kolmogorov-Zurbenko (KZA) filter of xs using an initial window size m and k iterations. m must be a positive odd integer. k must be positive.

See Zurbenko, et al. 1996: Detecting discontinuities in time series of upper air data: Demonstration of an adaptive filter technique. Journal of Climate, 9, 3548–3560.

func KolmogorovZurbenko

func KolmogorovZurbenko(xs []float64, m, k int) []float64

KolmogorovZurbenko performs a Kolmogorov-Zurbenko (KZ) filter of xs with window size m and k iterations. m must be a positive odd integer. k must be positive.

func MovingAverage

func MovingAverage(xs []float64, m int) []float64

MovingAverage performs a moving average (MA) filter of xs with window size m. m must be a positive odd integer.

Note that this is filter is often described in terms of the half length of the window (m-1)/2.

Types

type App

type App struct {
	// StorageClient is used to talk to the perfdata server.
	StorageClient *perfdata.Client

	// BaseDir is the directory containing the "template" directory.
	// If empty, the current directory will be used.
	BaseDir string

	// InfluxHost is the host URL of the perf InfluxDB server.
	InfluxHost string

	// InfluxToken is the Influx auth token for connecting to InfluxHost.
	//
	// If empty, we attempt to fetch the token from Secret Manager using
	// InfluxProject.
	InfluxToken string

	// InfluxProject is the GCP project ID containing the InfluxDB secrets.
	//
	// If empty, this defaults to the project this service is running as.
	//
	// Only used if InfluxToken is empty.
	InfluxProject string

	// AuthCronEmail is the service account email which requests to
	// /cron/syncinflux must contain an OICD authentication token for, with
	// audience "/cron/syncinflux".
	//
	// If empty, no authentication is required.
	AuthCronEmail string
}

App manages the analysis server logic. Construct an App instance and call RegisterOnMux to connect it with an HTTP server.

func (*App) RegisterOnMux

func (a *App) RegisterOnMux(mux *http.ServeMux)

RegisterOnMux registers the app's URLs on mux.

type BenchmarkJSON

type BenchmarkJSON struct {
	Name           string
	Unit           string
	HigherIsBetter bool

	// These will be sorted by CommitDate.
	Values []ValueJSON

	Regression *RegressionJSON
}

BenchmarkJSON contains the timeseries values for a single benchmark name + unit.

We could try to shoehorn this into benchfmt.Result, but that isn't really the best fit for a graph.

type RegressionJSON

type RegressionJSON struct {
	Change         float64 // endpoint regression, if any
	DeltaIndex     int     // index at which largest increase of regression occurs
	Delta          float64 // size of that changes
	IgnoredBecause string
	// contains filtered or unexported fields
}

type ValueJSON

type ValueJSON struct {
	CommitHash           string
	CommitDate           time.Time
	BaselineCommitHash   string
	BenchmarksCommitHash string

	// These are pre-formatted as percent change.
	Low    float64
	Center float64
	High   float64
}

Jump to

Keyboard shortcuts

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