// 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") } }