mirror of
https://github.com/datarhei/core.git
synced 2025-10-06 00:17: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 {
|
for k, r := range ef.reData {
|
||||||
v, ok := e.Data[k]
|
v, ok := e.Data[k]
|
||||||
if !ok {
|
if !ok {
|
||||||
continue
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
if !r.MatchString(v) {
|
if !r.MatchString(v) {
|
||||||
|
@@ -80,6 +80,60 @@ func TestEventFilter(t *testing.T) {
|
|||||||
require.False(t, res)
|
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) {
|
func BenchmarkEventFilters(b *testing.B) {
|
||||||
event := Event{
|
event := Event{
|
||||||
Timestamp: 1234,
|
Timestamp: 1234,
|
||||||
|
Reference in New Issue
Block a user