mirror of
https://github.com/resmoio/kubernetes-event-exporter.git
synced 2026-08-24 01:06:22 +00:00
53 lines
1.4 KiB
Go
53 lines
1.4 KiB
Go
package sinks
|
|
|
|
import (
|
|
"github.com/opsgenie/kubernetes-event-exporter/pkg/kube"
|
|
"github.com/stretchr/testify/require"
|
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestLayoutConvert(t *testing.T) {
|
|
ev := &kube.EnhancedEvent{}
|
|
ev.Namespace = "default"
|
|
ev.Type = "Warning"
|
|
ev.InvolvedObject.Kind = "Pod"
|
|
ev.InvolvedObject.Name = "nginx-server-123abc-456def"
|
|
ev.Message = "Successfully pulled image \"nginx:latest\""
|
|
ev.FirstTimestamp = v1.Time{Time: time.Now()}
|
|
|
|
// Because Go, when parsing yaml, its []interface, not []string
|
|
var tagz interface{}
|
|
tagz = make([]interface{}, 2)
|
|
tagz.([]interface{})[0] = "sre"
|
|
tagz.([]interface{})[1] = "ops"
|
|
|
|
layout := map[string]interface{}{
|
|
"details": map[interface{}]interface{}{
|
|
"message": "{{ .Message }}",
|
|
"kind": "{{ .InvolvedObject.Kind }}",
|
|
"name": "{{ .InvolvedObject.Name }}",
|
|
"namespace": "{{ .Namespace }}",
|
|
"type": "{{ .Type }}",
|
|
"tags": tagz,
|
|
},
|
|
"eventType": "kube-event",
|
|
"region": "us-west-2",
|
|
"createdAt": "{{ .GetTimestampMs }}", // TODO: Test Int casts
|
|
}
|
|
|
|
res, err := convertLayoutTemplate(layout, ev)
|
|
require.NoError(t, err)
|
|
require.Equal(t, res["eventType"], "kube-event")
|
|
|
|
val, ok := res["details"].(map[string]interface{})
|
|
|
|
require.True(t, ok, "cannot cast to event")
|
|
|
|
val2, ok2 := val["message"].(string)
|
|
require.True(t, ok2, "cannot cast message to string")
|
|
|
|
require.Equal(t, val2, ev.Message)
|
|
}
|