Alerting: Integration test for testing template via remote alertmanager (#92147)
* Add integration test for testing template * Update drone signature
This commit is contained in:
@@ -22,6 +22,7 @@ import (
|
||||
|
||||
"github.com/grafana/alerting/definition"
|
||||
alertingModels "github.com/grafana/alerting/models"
|
||||
"github.com/grafana/alerting/notify"
|
||||
"github.com/grafana/grafana/pkg/infra/db"
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/infra/tracing"
|
||||
@@ -739,6 +740,66 @@ func TestIntegrationRemoteAlertmanagerReceivers(t *testing.T) {
|
||||
}, rcvs)
|
||||
}
|
||||
|
||||
func TestIntegrationRemoteAlertmanagerTestTemplates(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("skipping integration test")
|
||||
}
|
||||
|
||||
amURL, ok := os.LookupEnv("AM_URL")
|
||||
if !ok {
|
||||
t.Skip("No Alertmanager URL provided")
|
||||
}
|
||||
|
||||
tenantID := os.Getenv("AM_TENANT_ID")
|
||||
password := os.Getenv("AM_PASSWORD")
|
||||
|
||||
cfg := AlertmanagerConfig{
|
||||
OrgID: 1,
|
||||
URL: amURL,
|
||||
TenantID: tenantID,
|
||||
BasicAuthPassword: password,
|
||||
DefaultConfig: defaultGrafanaConfig,
|
||||
}
|
||||
|
||||
secretsService := secretsManager.SetupTestService(t, fakes.NewFakeSecretsStore())
|
||||
m := metrics.NewRemoteAlertmanagerMetrics(prometheus.NewRegistry())
|
||||
am, err := NewAlertmanager(cfg, nil, secretsService.Decrypt, NoopAutogenFn, m, tracing.InitializeTracerForTest())
|
||||
require.NoError(t, err)
|
||||
|
||||
// Valid template
|
||||
c := apimodels.TestTemplatesConfigBodyParams{
|
||||
Alerts: []*amv2.PostableAlert{
|
||||
{
|
||||
Annotations: amv2.LabelSet{
|
||||
"annotations_label": "annotations_value",
|
||||
},
|
||||
Alert: amv2.Alert{
|
||||
Labels: amv2.LabelSet{
|
||||
"labels_label:": "labels_value",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Template: `{{ define "test" }} {{ index .Alerts 0 }} {{ end }}`,
|
||||
Name: "test",
|
||||
}
|
||||
res, err := am.TestTemplate(context.Background(), c)
|
||||
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res.Errors, 0)
|
||||
require.Len(t, res.Results, 1)
|
||||
require.Equal(t, "test", res.Results[0].Name)
|
||||
|
||||
// Invalid template
|
||||
c.Template = `{{ define "test" }} {{ index 0 .Alerts }} {{ end }}`
|
||||
res, err = am.TestTemplate(context.Background(), c)
|
||||
|
||||
require.NoError(t, err)
|
||||
require.Len(t, res.Results, 0)
|
||||
require.Len(t, res.Errors, 1)
|
||||
require.Equal(t, notify.ExecutionError, res.Errors[0].Kind)
|
||||
}
|
||||
|
||||
func genAlert(active bool, labels map[string]string) amv2.PostableAlert {
|
||||
endsAt := time.Now()
|
||||
if active {
|
||||
|
||||
Reference in New Issue
Block a user