...

Package test

import "github.com/prometheus/alertmanager/test/with_api_v1"
Overview
Index

Overview ▾

Index ▾

func At(ts float64) float64
type APIV1Alert
type AcceptanceOpts
type AcceptanceTest
    func NewAcceptanceTest(t *testing.T, opts *AcceptanceOpts) *AcceptanceTest
    func (t *AcceptanceTest) Alertmanager(conf string) *Alertmanager
    func (t *AcceptanceTest) Collector(name string) *Collector
    func (t *AcceptanceTest) Do(at float64, f func())
    func (t *AcceptanceTest) Run()
type AlertAPI
    func NewAlertAPI(c api.Client) AlertAPI
type Alertmanager
    func (am *Alertmanager) DelSilence(at float64, sil *TestSilence)
    func (am *Alertmanager) Push(at float64, alerts ...*TestAlert)
    func (am *Alertmanager) Reload()
    func (am *Alertmanager) SetSilence(at float64, sil *TestSilence)
    func (am *Alertmanager) Start()
    func (am *Alertmanager) Terminate()
    func (am *Alertmanager) UpdateConfig(conf string)
type ClusterStatus
type Collector
    func (c *Collector) String() string
    func (c *Collector) Want(iv Interval, alerts ...*TestAlert)
type ExtendedAlert
type Interval
    func Between(start, end float64) Interval
    func (iv Interval) String() string
type LabelName
type LabelSet
type LabelValue
type MockWebhook
    func NewWebhook(c *Collector) *MockWebhook
    func (ws *MockWebhook) Address() string
    func (ws *MockWebhook) ServeHTTP(w http.ResponseWriter, req *http.Request)
type PeerStatus
type ServerStatus
type SilenceAPI
    func NewSilenceAPI(c api.Client) SilenceAPI
type StatusAPI
    func NewStatusAPI(c api.Client) StatusAPI
type TestAlert
    func Alert(keyval ...interface{}) *TestAlert
    func (a *TestAlert) Active(tss ...float64) *TestAlert
    func (a *TestAlert) Annotate(keyval ...interface{}) *TestAlert
type TestSilence
    func Silence(start, end float64) *TestSilence
    func (s *TestSilence) ID() string
    func (s *TestSilence) Match(v ...string) *TestSilence
    func (s *TestSilence) MatchRE(v ...string) *TestSilence
    func (s *TestSilence) SetID(ID string)

Package files

acceptance.go collector.go helper.go mock.go

func At

func At(ts float64) float64

At is a convenience method to allow for declarative syntax of Acceptance test definitions.

type APIV1Alert

APIV1Alert represents an alert as expected by the AlertManager's push alert API.

type APIV1Alert struct {
    Labels       LabelSet  `json:"labels"`
    Annotations  LabelSet  `json:"annotations"`
    StartsAt     time.Time `json:"startsAt,omitempty"`
    EndsAt       time.Time `json:"endsAt,omitempty"`
    GeneratorURL string    `json:"generatorURL"`
}

type AcceptanceOpts

AcceptanceOpts defines configuration parameters for an acceptance test.

type AcceptanceOpts struct {
    RoutePrefix string
    Tolerance   time.Duration
    // contains filtered or unexported fields
}

type AcceptanceTest

AcceptanceTest provides declarative definition of given inputs and expected output of an Alertmanager setup.

type AcceptanceTest struct {
    *testing.T
    // contains filtered or unexported fields
}

func NewAcceptanceTest

func NewAcceptanceTest(t *testing.T, opts *AcceptanceOpts) *AcceptanceTest

NewAcceptanceTest returns a new acceptance test with the base time set to the current time.

func (*AcceptanceTest) Alertmanager

func (t *AcceptanceTest) Alertmanager(conf string) *Alertmanager

Alertmanager returns a new structure that allows starting an instance of Alertmanager on a random port.

func (*AcceptanceTest) Collector

func (t *AcceptanceTest) Collector(name string) *Collector

Collector returns a new collector bound to the test instance.

func (*AcceptanceTest) Do

func (t *AcceptanceTest) Do(at float64, f func())

Do sets the given function to be executed at the given time.

func (*AcceptanceTest) Run

func (t *AcceptanceTest) Run()

Run starts all Alertmanagers and runs queries against them. It then checks whether all expected notifications have arrived at the expected receiver.

type AlertAPI

AlertAPI provides bindings for the Alertmanager's alert API.

type AlertAPI interface {
    // List returns all the active alerts.
    List(ctx context.Context, filter, receiver string, silenced, inhibited, active, unprocessed bool) ([]*ExtendedAlert, error)
    // Push sends a list of alerts to the Alertmanager.
    Push(ctx context.Context, alerts ...APIV1Alert) error
}

func NewAlertAPI

func NewAlertAPI(c api.Client) AlertAPI

NewAlertAPI returns a new AlertAPI for the client.

type Alertmanager

Alertmanager encapsulates an Alertmanager process and allows declaring alerts being pushed to it at fixed points in time.

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

func (*Alertmanager) DelSilence

func (am *Alertmanager) DelSilence(at float64, sil *TestSilence)

DelSilence deletes the silence with the sid at the given time.

func (*Alertmanager) Push

func (am *Alertmanager) Push(at float64, alerts ...*TestAlert)

Push declares alerts that are to be pushed to the Alertmanager server at a relative point in time.

func (*Alertmanager) Reload

func (am *Alertmanager) Reload()

Reload sends the reloading signal to the Alertmanager process.

func (*Alertmanager) SetSilence

func (am *Alertmanager) SetSilence(at float64, sil *TestSilence)

SetSilence updates or creates the given Silence.

func (*Alertmanager) Start

func (am *Alertmanager) Start()

Start the alertmanager and wait until it is ready to receive.

func (*Alertmanager) Terminate

func (am *Alertmanager) Terminate()

Terminate kills the underlying Alertmanager process and remove intermediate data.

func (*Alertmanager) UpdateConfig

func (am *Alertmanager) UpdateConfig(conf string)

UpdateConfig rewrites the configuration file for the Alertmanager. It does not initiate config reloading.

type ClusterStatus

ClusterStatus represents the status of the cluster.

type ClusterStatus struct {
    Name   string       `json:"name"`
    Status string       `json:"status"`
    Peers  []PeerStatus `json:"peers"`
}

type Collector

Collector gathers alerts received by a notification receiver and verifies whether all arrived and within the correct time boundaries.

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

func (*Collector) String

func (c *Collector) String() string

func (*Collector) Want

func (c *Collector) Want(iv Interval, alerts ...*TestAlert)

Want declares that the Collector expects to receive the given alerts within the given time boundaries.

type ExtendedAlert

ExtendedAlert represents an alert as returned by the AlertManager's list alert API.

type ExtendedAlert struct {
    APIV1Alert
    Status      types.AlertStatus `json:"status"`
    Receivers   []string          `json:"receivers"`
    Fingerprint string            `json:"fingerprint"`
}

type Interval

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

func Between

func Between(start, end float64) Interval

Between is a convenience constructor for an interval for declarative syntax of Acceptance test definitions.

func (Interval) String

func (iv Interval) String() string

type LabelName

LabelName represents the name of a label.

type LabelName string

type LabelSet

LabelSet represents a collection of label names and values as a map.

type LabelSet map[LabelName]LabelValue

type LabelValue

LabelValue represents the value of a label.

type LabelValue string

type MockWebhook

type MockWebhook struct {
    Func func(timestamp float64) bool
    // contains filtered or unexported fields
}

func NewWebhook

func NewWebhook(c *Collector) *MockWebhook

func (*MockWebhook) Address

func (ws *MockWebhook) Address() string

func (*MockWebhook) ServeHTTP

func (ws *MockWebhook) ServeHTTP(w http.ResponseWriter, req *http.Request)

type PeerStatus

PeerStatus represents the status of a peer in the cluster.

type PeerStatus struct {
    Name    string `json:"name"`
    Address string `json:"address"`
}

type ServerStatus

ServerStatus represents the status of the AlertManager endpoint.

type ServerStatus struct {
    ConfigYAML    string            `json:"configYAML"`
    ConfigJSON    *config.Config    `json:"configJSON"`
    VersionInfo   map[string]string `json:"versionInfo"`
    Uptime        time.Time         `json:"uptime"`
    ClusterStatus *ClusterStatus    `json:"clusterStatus"`
}

type SilenceAPI

SilenceAPI provides bindings for the Alertmanager's silence API.

type SilenceAPI interface {
    // Get returns the silence associated with the given ID.
    Get(ctx context.Context, id string) (*types.Silence, error)
    // Set updates or creates the given silence and returns its ID.
    Set(ctx context.Context, sil types.Silence) (string, error)
    // Expire expires the silence with the given ID.
    Expire(ctx context.Context, id string) error
    // List returns silences matching the given filter.
    List(ctx context.Context, filter string) ([]*types.Silence, error)
}

func NewSilenceAPI

func NewSilenceAPI(c api.Client) SilenceAPI

NewSilenceAPI returns a new SilenceAPI for the client.

type StatusAPI

StatusAPI provides bindings for the Alertmanager's status API.

type StatusAPI interface {
    // Get returns the server's configuration, version, uptime and cluster information.
    Get(ctx context.Context) (*ServerStatus, error)
}

func NewStatusAPI

func NewStatusAPI(c api.Client) StatusAPI

NewStatusAPI returns a status API client.

type TestAlert

TestAlert models a model.Alert with relative times.

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

func Alert

func Alert(keyval ...interface{}) *TestAlert

Alert creates a new alert declaration with the given key/value pairs as identifying labels.

func (*TestAlert) Active

func (a *TestAlert) Active(tss ...float64) *TestAlert

Active declares the relative activity time for this alert. It must be a single starting value or two values where the second value declares the resolved time.

func (*TestAlert) Annotate

func (a *TestAlert) Annotate(keyval ...interface{}) *TestAlert

Annotate the alert with the given key/value pairs.

type TestSilence

TestSilence models a model.Silence with relative times.

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

func Silence

func Silence(start, end float64) *TestSilence

Silence creates a new TestSilence active for the relative interval given by start and end.

func (*TestSilence) ID

func (s *TestSilence) ID() string

ID gets the silence ID.

func (*TestSilence) Match

func (s *TestSilence) Match(v ...string) *TestSilence

Match adds a new plain matcher to the silence.

func (*TestSilence) MatchRE

func (s *TestSilence) MatchRE(v ...string) *TestSilence

MatchRE adds a new regex matcher to the silence

func (*TestSilence) SetID

func (s *TestSilence) SetID(ID string)

SetID sets the silence ID.