Files
core/http/api/event_test.go
2023-07-18 21:51:07 +02:00

112 lines
1.7 KiB
Go

package api
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestEventFilter(t *testing.T) {
event := Event{
Timestamp: 1234,
Level: 3,
Component: "foobar",
Message: "none",
Data: map[string]string{
"foo": "bar",
},
}
filter := EventFilter{
Component: "foobar",
Level: "info",
Message: "none",
}
err := filter.Compile()
require.NoError(t, err)
res := event.Filter(&filter)
require.True(t, res)
filter = EventFilter{
Component: "foobar",
Level: "warn",
Message: "none",
}
err = filter.Compile()
require.NoError(t, err)
res = event.Filter(&filter)
require.False(t, res)
filter = EventFilter{
Component: "foobar",
Level: "info",
Message: "done",
}
err = filter.Compile()
require.NoError(t, err)
res = event.Filter(&filter)
require.False(t, res)
foobarfilter := EventFilter{
Component: "foobar",
Data: map[string]string{
"foo": "^b.*$",
},
}
err = foobarfilter.Compile()
require.NoError(t, err)
res = event.Filter(&foobarfilter)
require.True(t, res)
foobazfilter := EventFilter{
Component: "foobaz",
Data: map[string]string{
"foo": "baz",
},
}
err = foobazfilter.Compile()
require.NoError(t, err)
res = event.Filter(&foobazfilter)
require.False(t, res)
}
func BenchmarkEventFilters(b *testing.B) {
event := Event{
Timestamp: 1234,
Level: 3,
Component: "foobar",
Message: "none",
Data: map[string]string{
"foo": "bar",
},
}
levelfilter := EventFilter{
Component: "foobar",
Level: "info",
Data: map[string]string{
"foo": "^b.*$",
},
}
err := levelfilter.Compile()
require.NoError(b, err)
res := event.Filter(&levelfilter)
require.True(b, res)
for i := 0; i < b.N; i++ {
event.Filter(&levelfilter)
}
}