mirror of
https://github.com/datarhei/core.git
synced 2025-10-05 16:07:07 +08:00
Fix event filter
If a filter provides a k/v map, then the keys must exist in the event, otherwise it's not a mach.
This commit is contained in:
@@ -67,7 +67,7 @@ func (e *Event) Filter(ef *EventFilter) bool {
|
||||
for k, r := range ef.reData {
|
||||
v, ok := e.Data[k]
|
||||
if !ok {
|
||||
continue
|
||||
return false
|
||||
}
|
||||
|
||||
if !r.MatchString(v) {
|
||||
|
@@ -80,6 +80,60 @@ func TestEventFilter(t *testing.T) {
|
||||
require.False(t, res)
|
||||
}
|
||||
|
||||
func TestEventFilterDataKey(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: "info",
|
||||
Message: "none",
|
||||
Data: map[string]string{
|
||||
"bar": "foo",
|
||||
},
|
||||
}
|
||||
|
||||
err = filter.Compile()
|
||||
require.NoError(t, err)
|
||||
|
||||
res = event.Filter(&filter)
|
||||
require.False(t, res)
|
||||
|
||||
filter = EventFilter{
|
||||
Component: "foobar",
|
||||
Level: "info",
|
||||
Message: "none",
|
||||
Data: map[string]string{
|
||||
"foo": "bar",
|
||||
},
|
||||
}
|
||||
|
||||
err = filter.Compile()
|
||||
require.NoError(t, err)
|
||||
|
||||
res = event.Filter(&filter)
|
||||
require.True(t, res)
|
||||
}
|
||||
|
||||
func BenchmarkEventFilters(b *testing.B) {
|
||||
event := Event{
|
||||
Timestamp: 1234,
|
||||
|
Reference in New Issue
Block a user