diff options
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/eventloop_aggregate_test.go | 40 | ||||
| -rw-r--r-- | internal/eventloop_runtime.go | 12 |
2 files changed, 27 insertions, 25 deletions
diff --git a/internal/eventloop_aggregate_test.go b/internal/eventloop_aggregate_test.go index cfa9bb9..582b598 100644 --- a/internal/eventloop_aggregate_test.go +++ b/internal/eventloop_aggregate_test.go @@ -81,23 +81,33 @@ func TestFilterAggregateRowsForIngestGatesWhenUnsupportedFilterActive(t *testing } } -func TestFilterAggregateRowsForIngestAllowsKernelEqPIDFilter(t *testing.T) { - el := &eventLoop{ - cfg: eventLoopConfig{ - aggregateOnlyTraceIDs: map[types.TraceId]struct{}{ - types.SYS_ENTER_FUTEX: {}, - }, - }, +func TestFilterAggregateRowsForIngestRejectsPIDAndTIDFilters(t *testing.T) { + tests := []struct { + name string + filter globalfilter.Filter + }{ + {name: "pid", filter: globalfilter.Filter{PID: globalfilter.NewEqFilter(42)}}, + {name: "tid", filter: globalfilter.Filter{TID: globalfilter.NewEqFilter(43)}}, } - el.SetFilter(globalfilter.Filter{ - PID: globalfilter.NewEqFilter(42), - }) - got := el.filterAggregateRowsForIngest([]statsengine.SyscallAggregate{ - {TraceID: types.SYS_ENTER_FUTEX, Count: 2}, - }) - if len(got) != 1 { - t.Fatalf("expected row with PID eq filter, got %+v", got) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + el := &eventLoop{ + cfg: eventLoopConfig{ + aggregateOnlyTraceIDs: map[types.TraceId]struct{}{ + types.SYS_ENTER_FUTEX: {}, + }, + }, + } + el.SetFilter(tt.filter) + + got := el.filterAggregateRowsForIngest([]statsengine.SyscallAggregate{ + {TraceID: types.SYS_ENTER_FUTEX, Count: 2}, + }) + if len(got) != 0 { + t.Fatalf("expected no aggregate rows with %s filter, got %+v", tt.name, got) + } + }) } } diff --git a/internal/eventloop_runtime.go b/internal/eventloop_runtime.go index d9d9c4c..e8971d4 100644 --- a/internal/eventloop_runtime.go +++ b/internal/eventloop_runtime.go @@ -116,23 +116,15 @@ func aggregateIngestAllowedForFilter(filter globalfilter.Filter) bool { if filter.FD != nil || filter.LatencyNs != nil || filter.GapNs != nil || filter.Bytes != nil || filter.RetVal != nil { return false } - if !isKernelFilterNumericEq(filter.PID) { + if filter.PID != nil { return false } - if !isKernelFilterNumericEq(filter.TID) { + if filter.TID != nil { return false } return true } -func isKernelFilterNumericEq(filter *globalfilter.NumericFilter) bool { - if filter == nil { - return true - } - _, ok := filter.EqValue() - return ok -} - func hasPattern(filter *globalfilter.StringFilter) bool { return filter != nil && strings.TrimSpace(filter.Pattern) != "" } |
