| package alertmanager |
| |
| import ( |
| "bytes" |
| "testing" |
| |
| "github.com/stretchr/testify/assert" |
| "go.skia.org/infra/go/testutils/unittest" |
| ) |
| |
| var ( |
| oneAlert = `{ |
| "receiver": "general", |
| "status": "firing", |
| "alerts": [ |
| { |
| "status": "firing", |
| "labels": { |
| "alertname": "PerfAlert", |
| "category": "general", |
| "instance": "localhost:10110", |
| "job": "perf", |
| "monitor": "codelab-monitor", |
| "severity": "warning" |
| }, |
| "annotations": { |
| "description": "At least one untriaged perf cluster has been found. Please visit https://perf.skia.org/t/ to triage.", |
| "summary": "One or more untriaged clusters." |
| }, |
| "startsAt": "2017-01-05T15:28:22.805-05:00", |
| "endsAt": "0001-01-01T00:00:00Z", |
| "generatorURL": "http://jcgregorio.cnc.corp.google.com:9090/graph?g0.expr=perf_clustering_untriaged+%3E+0\u0026g0.tab=0" |
| } |
| ], |
| "groupLabels": { |
| "alertname": "PerfAlert" |
| }, |
| "commonLabels": { |
| "alertname": "PerfAlert", |
| "category": "general", |
| "instance": "localhost:10110", |
| "job": "perf", |
| "monitor": "codelab-monitor", |
| "severity": "warning" |
| }, |
| "commonAnnotations": { |
| "description": "At least one untriaged perf cluster has been found. Please visit https://perf.skia.org/t/ to triage.", |
| "summary": "One or more untriaged clusters." |
| }, |
| "externalURL": "http://jcgregorio.cnc.corp.google.com:10117" |
| }` |
| |
| twoAlerts = `{ |
| "receiver": "general", |
| "status": "firing", |
| "alerts": [ |
| { |
| "status": "firing", |
| "labels": { |
| "alertname": "PerfAlert", |
| "category": "general", |
| "instance": "localhost:10110", |
| "job": "perf", |
| "monitor": "codelab-monitor", |
| "severity": "warning" |
| }, |
| "annotations": { |
| "description": "At least one untriaged perf cluster has been found. Please visit https://perf.skia.org/t/ to triage.", |
| "abbr": "skia-perf-a" |
| }, |
| "startsAt": "2017-01-05T15:28:22.805-05:00", |
| "endsAt": "0001-01-01T00:00:00Z", |
| "generatorURL": "http://jcgregorio.cnc.corp.google.com:9090/graph?g0.expr=perf_clustering_untriaged+%3E+0\u0026g0.tab=0" |
| }, |
| { |
| "status": "firing", |
| "labels": { |
| "alertname": "PerfAlert", |
| "category": "general", |
| "instance": "localhost:10110", |
| "job": "perf", |
| "monitor": "codelab-monitor", |
| "severity": "warning" |
| }, |
| "annotations": { |
| "description": "At least one untriaged perf cluster has been found. Please visit https://perf.skia.org/t/ to triage.", |
| "abbr": "skia-perf-b" |
| }, |
| "startsAt": "2017-01-05T15:28:22.805-05:00", |
| "endsAt": "0001-01-01T00:00:00Z", |
| "generatorURL": "http://jcgregorio.cnc.corp.google.com:9090/graph?g0.expr=perf_clustering_untriaged+%3E+0\u0026g0.tab=0" |
| } |
| ], |
| "groupLabels": { |
| "alertname": "PerfAlert" |
| }, |
| "commonLabels": { |
| "alertname": "PerfAlert", |
| "category": "general", |
| "instance": "localhost:10110", |
| "job": "perf", |
| "monitor": "codelab-monitor", |
| "severity": "warning" |
| }, |
| "commonAnnotations": { |
| "description": "At least one untriaged perf cluster has been found. Please visit https://perf.skia.org/t/ to triage.", |
| "summary": "One or more untriaged clusters." |
| }, |
| "externalURL": "http://jcgregorio.cnc.corp.google.com:10117" |
| }` |
| ) |
| |
| func TestEmailBody(t *testing.T) { |
| unittest.SmallTest(t) |
| expectedBody := `<b>Alerts</b>: PerfAlert <br><br> |
| |
| <table border="0" cellspacing="5" cellpadding="5"> |
| <tr> |
| <th>Name</th> |
| <th>Severity</th> |
| <th>Status</th></th> |
| <th>Description</th> |
| </tr> |
| |
| <tr> |
| <td>PerfAlert</td> |
| <td>Warning</td> |
| <td>Firing</td> |
| <td>At least one untriaged perf cluster has been found. Please visit https://perf.skia.org/t/ to triage.</td> |
| </tr> |
| |
| </table> |
| ` |
| expectedSubject := `Alert: PerfAlert started at 3:28pm EST (5 Jan 2017)` |
| |
| body, subject, err := Email(bytes.NewBufferString(oneAlert)) |
| assert.NoError(t, err) |
| assert.Equal(t, expectedBody, body) |
| assert.Equal(t, expectedSubject, subject) |
| } |
| |
| func TestChatlBody(t *testing.T) { |
| unittest.SmallTest(t) |
| |
| expectedBody := `*PerfAlert* |
| *Firing* (Warning) At least one untriaged perf cluster has been found. Please visit https://perf.skia.org/t/ to triage. |
| ` |
| |
| body, err := Chat(bytes.NewBufferString(oneAlert)) |
| assert.NoError(t, err) |
| assert.Equal(t, expectedBody, body) |
| |
| expectedBody2 := `*PerfAlert* [2] |
| |
| *Firing* At least one untriaged perf cluster has been found. Please visit https://perf.skia.org/t/ to triage. |
| |
| skia-perf-a skia-perf-b |
| ` |
| |
| body, err = Chat(bytes.NewBufferString(twoAlerts)) |
| assert.NoError(t, err) |
| assert.Equal(t, expectedBody2, body) |
| } |