func At(ts float64) float64
At is a convenience method to allow for declarative syntax of Acceptance test definitions.
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"` }
AcceptanceOpts defines configuration parameters for an acceptance test.
type AcceptanceOpts struct { RoutePrefix string Tolerance time.Duration // contains filtered or unexported fields }
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(t *testing.T, opts *AcceptanceOpts) *AcceptanceTest
NewAcceptanceTest returns a new acceptance test with the base time set to the current time.
func (t *AcceptanceTest) Alertmanager(conf string) *Alertmanager
Alertmanager returns a new structure that allows starting an instance of Alertmanager on a random port.
func (t *AcceptanceTest) Collector(name string) *Collector
Collector returns a new collector bound to the test instance.
func (t *AcceptanceTest) Do(at float64, f func())
Do sets the given function to be executed at the given time.
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.
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(c api.Client) AlertAPI
NewAlertAPI returns a new AlertAPI for the client.
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 (am *Alertmanager) DelSilence(at float64, sil *TestSilence)
DelSilence deletes the silence with the sid at the given time.
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 (am *Alertmanager) Reload()
Reload sends the reloading signal to the Alertmanager process.
func (am *Alertmanager) SetSilence(at float64, sil *TestSilence)
SetSilence updates or creates the given Silence.
func (am *Alertmanager) Start()
Start the alertmanager and wait until it is ready to receive.
func (am *Alertmanager) Terminate()
Terminate kills the underlying Alertmanager process and remove intermediate data.
func (am *Alertmanager) UpdateConfig(conf string)
UpdateConfig rewrites the configuration file for the Alertmanager. It does not initiate config reloading.
ClusterStatus represents the status of the cluster.
type ClusterStatus struct { Name string `json:"name"` Status string `json:"status"` Peers []PeerStatus `json:"peers"` }
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 (c *Collector) String() string
func (c *Collector) Want(iv Interval, alerts ...*TestAlert)
Want declares that the Collector expects to receive the given alerts within the given time boundaries.
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 struct {
// contains filtered or unexported fields
}
func Between(start, end float64) Interval
Between is a convenience constructor for an interval for declarative syntax of Acceptance test definitions.
func (iv Interval) String() string
LabelName represents the name of a label.
type LabelName string
LabelSet represents a collection of label names and values as a map.
type LabelSet map[LabelName]LabelValue
LabelValue represents the value of a label.
type LabelValue string
type MockWebhook struct { Func func(timestamp float64) bool // contains filtered or unexported fields }
func NewWebhook(c *Collector) *MockWebhook
func (ws *MockWebhook) Address() string
func (ws *MockWebhook) ServeHTTP(w http.ResponseWriter, req *http.Request)
PeerStatus represents the status of a peer in the cluster.
type PeerStatus struct { Name string `json:"name"` Address string `json:"address"` }
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"` }
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(c api.Client) SilenceAPI
NewSilenceAPI returns a new SilenceAPI for the client.
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(c api.Client) StatusAPI
NewStatusAPI returns a status API client.
TestAlert models a model.Alert with relative times.
type TestAlert struct {
// contains filtered or unexported fields
}
func Alert(keyval ...interface{}) *TestAlert
Alert creates a new alert declaration with the given key/value pairs as identifying labels.
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 (a *TestAlert) Annotate(keyval ...interface{}) *TestAlert
Annotate the alert with the given key/value pairs.
TestSilence models a model.Silence with relative times.
type TestSilence struct {
// contains filtered or unexported fields
}
func Silence(start, end float64) *TestSilence
Silence creates a new TestSilence active for the relative interval given by start and end.
func (s *TestSilence) ID() string
ID gets the silence ID.
func (s *TestSilence) Match(v ...string) *TestSilence
Match adds a new plain matcher to the silence.
func (s *TestSilence) MatchRE(v ...string) *TestSilence
MatchRE adds a new regex matcher to the silence
func (s *TestSilence) SetID(ID string)
SetID sets the silence ID.