runner

package
v0.0.0-...-1c6d3df Latest Latest
Warning

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

Go to latest
Published: Aug 1, 2025 License: Apache-2.0 Imports: 5 Imported by: 4

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ContextKey

type ContextKey string

ContextKey is a type that represents a key in a Golang context

const (
	// ExperimentEngineKey represents the key for the experiment engine name, stored in the context
	ExperimentEngineKey ContextKey = "experimentEngineKey"
)

type ExperimentRunner

type ExperimentRunner interface {
	// GetTreatmentForRequest is a method that is called by the Turing Router for each request it receives to retrieve
	// an appropriate treatment for it
	GetTreatmentForRequest(
		header http.Header,
		payload []byte,
		options GetTreatmentOptions,
	) (*Treatment, error)
	// RegisterMetricsCollector is a method that should only be called on startup of the experiment runner to register
	// the metrics collector of the Turing Router (to be called just after the experiment runner has been initialised)
	RegisterMetricsCollector(
		collector metrics.Collector,
		metricsRegistrationHelper MetricsRegistrationHelper,
	) error
}

ExperimentRunner is the generic interface for generating experiment configs for a given request

func NewInterceptRunner

func NewInterceptRunner(
	name string,
	runner ExperimentRunner,
	interceptors ...Interceptor,
) ExperimentRunner

type GetTreatmentOptions

type GetTreatmentOptions struct {
	TuringRequestID string
}

type Interceptor

type Interceptor interface {
	BeforeDispatch(ctx context.Context) context.Context
	AfterCompletion(ctx context.Context, err error)
}

Interceptor interface is used to define concrete interceptors whose methods will be run before and after a single fetch treatment call

type MetricsRegistrationHelper

type MetricsRegistrationHelper interface {
	// Register is a method that should be called within ExperimentRunner.RegisterMetricsCollector to register
	// additional metrics that the experiment engine requires on the metrics collector of the Turing Router
	Register(metrics []instrumentation.Metric) error
}

MetricsRegistrationHelper is the generic interface for the Turing router to register additional metrics needed by the experiment engine

type Treatment

type Treatment struct {
	ExperimentName string
	Name           string
	Config         json.RawMessage
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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