mirror of
https://github.com/openfaas/faas.git
synced 2025-06-08 08:25:03 +00:00
91 lines
2.4 KiB
Go
91 lines
2.4 KiB
Go
// License: OpenFaaS Community Edition (CE) EULA
|
|
// Copyright (c) 2017,2019-2024 OpenFaaS Author(s)
|
|
|
|
// Copyright (c) Alex Ellis 2017. All rights reserved.
|
|
|
|
package requests
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
)
|
|
|
|
// TestUnmarshallAlert is an exploratory test from TDD'ing the struct to parse a Prometheus alert
|
|
func TestUnmarshallAlert(t *testing.T) {
|
|
file := []byte(`{
|
|
"receiver": "scale-up",
|
|
"status": "firing",
|
|
"alerts": [{
|
|
"status": "firing",
|
|
"labels": {
|
|
"alertname": "APIHighInvocationRate",
|
|
"code": "200",
|
|
"function_name": "func_nodeinfo",
|
|
"instance": "gateway:8080",
|
|
"job": "gateway",
|
|
"monitor": "faas-monitor",
|
|
"service": "gateway",
|
|
"severity": "major",
|
|
"value": "8.998200359928017"
|
|
},
|
|
"annotations": {
|
|
"description": "High invocation total on gateway:8080",
|
|
"summary": "High invocation total on gateway:8080"
|
|
},
|
|
"startsAt": "2017-03-15T15:52:57.805Z",
|
|
"endsAt": "0001-01-01T00:00:00Z",
|
|
"generatorURL": "http://4156cb797423:9090/graph?g0.expr=rate%28gateway_function_invocation_total%5B10s%5D%29+%3E+5\u0026g0.tab=0"
|
|
}],
|
|
"groupLabels": {
|
|
"alertname": "APIHighInvocationRate",
|
|
"service": "gateway"
|
|
},
|
|
"commonLabels": {
|
|
"alertname": "APIHighInvocationRate",
|
|
"code": "200",
|
|
"function_name": "func_nodeinfo",
|
|
"instance": "gateway:8080",
|
|
"job": "gateway",
|
|
"monitor": "faas-monitor",
|
|
"service": "gateway",
|
|
"severity": "major",
|
|
"value": "8.998200359928017"
|
|
},
|
|
"commonAnnotations": {
|
|
"description": "High invocation total on gateway:8080",
|
|
"summary": "High invocation total on gateway:8080"
|
|
},
|
|
"externalURL": "http://f054879d97db:9093",
|
|
"version": "3",
|
|
"groupKey": 18195285354214864953
|
|
}`)
|
|
|
|
var alert PrometheusAlert
|
|
err := json.Unmarshal(file, &alert)
|
|
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if (len(alert.Status)) == 0 {
|
|
t.Fatal("No status read")
|
|
}
|
|
|
|
if (len(alert.Receiver)) == 0 {
|
|
t.Fatal("No status read")
|
|
}
|
|
|
|
if (len(alert.Alerts)) == 0 {
|
|
t.Fatal("No alerts read")
|
|
}
|
|
|
|
if (len(alert.Alerts[0].Labels.AlertName)) == 0 {
|
|
t.Fatal("No alerts name")
|
|
}
|
|
|
|
if (len(alert.Alerts[0].Labels.FunctionName)) == 0 {
|
|
t.Fatal("No function name read")
|
|
}
|
|
|
|
}
|