summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
Diffstat (limited to 'internal')
-rw-r--r--internal/eventloop_aggregate_test.go40
-rw-r--r--internal/eventloop_runtime.go12
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) != ""
}