Merge pull request #712 from prymitive/more-backend-tests

chore(tests): add more backend test coverage
This commit is contained in:
Łukasz Mierzwa
2019-05-12 15:17:16 +01:00
committed by GitHub
3 changed files with 161 additions and 4 deletions

View File

@@ -132,3 +132,70 @@ func TestStripReceivers(t *testing.T) {
t.Errorf("Expected no alerts after stripping all receivers, got %d", len(alerts))
}
}
func TestClearData(t *testing.T) {
log.SetLevel(log.PanicLevel)
httpmock.Activate()
for _, version := range mock.ListAllMocks() {
name := fmt.Sprintf("clear-data-mock-%s", version)
uri := fmt.Sprintf("http://localhost/clear/%s", version)
am, _ := alertmanager.NewAlertmanager(name, uri, alertmanager.WithRequestTimeout(time.Second))
mock.RegisterURL(fmt.Sprintf("%s/metrics", uri), version, "metrics")
_ = am.Pull()
if am.Version() != "" {
t.Errorf("[%s] Got non-empty version string: %s", am.Name, am.Version())
}
if am.Error() == "" {
t.Errorf("[%s] Got empty error string", am.Name)
}
if len(am.Silences()) != 0 {
t.Errorf("[%s] Get %d silences", am.Name, len(am.Silences()))
}
if len(am.Alerts()) != 0 {
t.Errorf("[%s] Get %d alerts", am.Name, len(am.Alerts()))
}
if len(am.KnownLabels()) != 0 {
t.Errorf("[%s] Get %d known labels", am.Name, len(am.KnownLabels()))
}
mock.RegisterURL(fmt.Sprintf("%s/api/v1/status", uri), version, "api/v1/status")
mock.RegisterURL(fmt.Sprintf("%s/api/v1/silences", uri), version, "api/v1/silences")
mock.RegisterURL(fmt.Sprintf("%s/api/v2/silences", uri), version, "api/v2/silences")
_ = am.Pull()
if am.Version() != "" {
t.Errorf("[%s] Got non-empty version string: %s", am.Name, am.Version())
}
if am.Error() == "" {
t.Errorf("[%s] Got empty error string", am.Name)
}
if len(am.Silences()) != 0 {
t.Errorf("[%s] Get %d silences", am.Name, len(am.Silences()))
}
if len(am.Alerts()) != 0 {
t.Errorf("[%s] Get %d alerts", am.Name, len(am.Alerts()))
}
if len(am.KnownLabels()) != 0 {
t.Errorf("[%s] Get %d known labels", am.Name, len(am.KnownLabels()))
}
mock.RegisterURL(fmt.Sprintf("%s/api/v1/alerts/groups", uri), version, "api/v1/alerts/groups")
mock.RegisterURL(fmt.Sprintf("%s/api/v2/alerts/groups", uri), version, "api/v2/alerts/groups")
_ = am.Pull()
if am.Version() == "" {
t.Errorf("[%s] Got empty version string", am.Name)
}
if am.Error() != "" {
t.Errorf("[%s] Got non-empty error string: %s", am.Name, am.Error())
}
if len(am.Silences()) == 0 {
t.Errorf("[%s] Get %d silences", am.Name, len(am.Silences()))
}
if len(am.Alerts()) == 0 {
t.Errorf("[%s] Get %d alerts", am.Name, len(am.Alerts()))
}
if len(am.KnownLabels()) == 0 {
t.Errorf("[%s] Get %d known labels", am.Name, len(am.KnownLabels()))
}
}
}

View File

@@ -31,22 +31,88 @@ var acTests = []acTest{
{
Alerts: []models.Alert{
models.Alert{
State: models.AlertStateActive,
Labels: map[string]string{
"foo": "bar",
"foo": "bar",
"number": "1",
},
Receiver: "default",
Alertmanager: []models.AlertmanagerInstance{
{Name: "am1"},
{Name: "am2"},
},
},
models.Alert{
State: models.AlertStateSuppressed,
Labels: map[string]string{
"foo": "bar baz",
"number": "5",
},
Receiver: "not default",
Alertmanager: []models.AlertmanagerInstance{
{Name: "am1"},
{
Name: "am2",
Silences: map[string]*models.Silence{
"1234567890": &models.Silence{
ID: "1234567890",
CreatedBy: "me@example.com",
JiraID: "JIRA-1",
},
}},
},
SilencedBy: []string{"1234567890"},
},
},
Expected: []string{
"@age\u003e1h",
"@age\u003c10m",
"@age\u003c1h",
"@age\u003e10m",
"@age\u003e1h",
"@alertmanager!=am1",
"@alertmanager!=am2",
"@alertmanager=am1",
"@alertmanager=am2",
"@limit=10",
"@limit=50",
"@state!=",
"@state=",
"@receiver!=default",
"@receiver!=not default",
"@receiver!~default",
"@receiver!~not",
"@receiver=default",
"@receiver=not default",
"@receiver=~default",
"@receiver=~not",
"@silence_author!=me@example.com",
"@silence_author!~me@example.com",
"@silence_author=me@example.com",
"@silence_author=~me@example.com",
"@silence_id!=1234567890",
"@silence_id=1234567890",
"@silence_jira!=JIRA-1",
"@silence_jira!~JIRA-1",
"@silence_jira=JIRA-1",
"@silence_jira=~JIRA-1",
"@state!=active",
"@state!=suppressed",
"@state=active",
"@state=suppressed",
"foo!=bar",
"foo!=bar baz",
"foo!~bar",
"foo!~baz",
"foo=bar",
"foo=bar baz",
"foo=~bar",
"foo=~baz",
"number!=1",
"number!=5",
"number\u003c1",
"number\u003c5",
"number=1",
"number=5",
"number\u003e1",
"number\u003e5",
},
},
}

View File

@@ -541,6 +541,30 @@ var tests = []filterTest{
Alert: models.Alert{},
IsMatch: true,
},
filterTest{
Expression: "@receiver=by-name",
IsValid: true,
Alert: models.Alert{
Receiver: "by-name",
},
IsMatch: true,
},
filterTest{
Expression: "@receiver=by-name",
IsValid: true,
Alert: models.Alert{
Receiver: "by-not-name",
},
IsMatch: false,
},
filterTest{
Expression: "@receiver=~name",
IsValid: true,
Alert: models.Alert{
Receiver: "by-not-name",
},
IsMatch: true,
},
}
func TestFilters(t *testing.T) {