summaryrefslogtreecommitdiff
path: root/internal/eventloop_test.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-04-16 23:19:15 +0300
committerPaul Buetow <paul@buetow.org>2025-04-16 23:19:15 +0300
commitcd289eb0d978297b1e331da202eee09ca4c1290c (patch)
tree893466694b6cd7430bb00e353a8c8db55b42b07c /internal/eventloop_test.go
parented7668ec893e21b4cf071c98dd5a292105aeec34 (diff)
add Equals
Diffstat (limited to 'internal/eventloop_test.go')
-rw-r--r--internal/eventloop_test.go47
1 files changed, 30 insertions, 17 deletions
diff --git a/internal/eventloop_test.go b/internal/eventloop_test.go
index f61487e..841fb8a 100644
--- a/internal/eventloop_test.go
+++ b/internal/eventloop_test.go
@@ -4,32 +4,30 @@ import (
"context"
"fmt"
"ior/internal/event"
- "ior/internal/file"
"ior/internal/types"
"syscall"
"testing"
)
-type validateFunc func(t *testing.T, ev *event.Pair)
-
type testData struct {
- rawTracepoints [][]byte // All the raw tracepoints sent to the event loop
- validates []validateFunc // Validation functions to check the event pairs
+ rawTracepoints [][]byte // All the raw tracepoints sent to the event loop
+ validates []func(t *testing.T, ev *event.Pair) // Validation functions to be called on the event loop output
}
func TestEventloop(t *testing.T) {
testTable := map[string]testData{
- "OpenEventTest": makeOpenEventTestData(t),
+ "OpenEventTest1": makeOpenEventTestData1(t),
+ "OpenEventTest2": makeOpenEventTestData2(t),
}
ctx, cancel := context.WithCancel(context.Background())
- defer cancel()
-
inCh := make(chan []byte)
- defer close(inCh)
-
outCh := make(chan *event.Pair)
- defer close(outCh)
+ defer func() {
+ cancel()
+ close(inCh)
+ close(outCh)
+ }()
ev := newEventLoop()
ev.printCb = func(ev *event.Pair) { outCh <- ev }
@@ -39,11 +37,14 @@ func TestEventloop(t *testing.T) {
t.Run(testName, func(t *testing.T) {
go func() {
for _, raw := range td.rawTracepoints {
+ t.Log("Sending raw tracepoint", raw, "simulating BPF sending this")
inCh <- raw
}
}()
for _, validate := range td.validates {
- validate(t, <-outCh)
+ ep := <-outCh
+ t.Log("Received", ep)
+ validate(t, ep)
}
select {
case x := <-outCh:
@@ -54,7 +55,7 @@ func TestEventloop(t *testing.T) {
}
}
-func makeOpenEventTestData(t *testing.T) (td testData) {
+func makeOpenEventTestData1(t *testing.T) (td testData) {
enterEv, enterEvBytes := makeEnterOpenEvent(t)
td.rawTracepoints = append(td.rawTracepoints, enterEvBytes)
@@ -62,17 +63,17 @@ func makeOpenEventTestData(t *testing.T) (td testData) {
td.rawTracepoints = append(td.rawTracepoints, exitEvBytes)
td.validates = append(td.validates, func(t *testing.T, ep *event.Pair) {
- if ep.EnterEv.GetTraceId() != enterEv.TraceId {
- t.Errorf("Expected TraceId '%v' but got '%v'", enterEv.TraceId, ep.EnterEv.GetTraceId())
+ if !enterEv.Equals(ep.EnterEv) {
+ t.Errorf("Expected '%v' but got '%v'", enterEv, ep.EnterEv)
return
}
filenameA := ep.FileName()
- filenameB := file.StringValue(enterEv.Filename[:])
+ filenameB := types.StringValue(enterEv.Filename[:])
if filenameA != filenameB {
t.Errorf("Expected file name '%v' but got '%v'", filenameB, filenameA)
return
}
- comm := file.StringValue(enterEv.Comm[:])
+ comm := types.StringValue(enterEv.Comm[:])
if ep.Comm != comm {
t.Errorf("Expected comm name '%v' but got '%v'", comm, ep.Comm)
return
@@ -82,6 +83,18 @@ func makeOpenEventTestData(t *testing.T) (td testData) {
return td
}
+func makeOpenEventTestData2(t *testing.T) (td testData) {
+ // Almost the same, but with duplicates
+ td1 := makeOpenEventTestData1(t)
+ td.rawTracepoints = append(td.rawTracepoints, td1.rawTracepoints[1]) // Will be ignored by the event loop
+ td.rawTracepoints = append(td.rawTracepoints, td1.rawTracepoints[0]) // Will be used by the event loop
+ td.rawTracepoints = append(td.rawTracepoints, td1.rawTracepoints[0]) // Will be ignored by the event loop
+ td.rawTracepoints = append(td.rawTracepoints, td1.rawTracepoints[1]) // Will be used by the event loop
+ td.rawTracepoints = append(td.rawTracepoints, td1.rawTracepoints[1]) // Will be ignored by the event loop
+ td.validates = td1.validates
+
+ return td
+}
func makeEnterOpenEvent(t *testing.T) (types.OpenEvent, []byte) {
ev := types.OpenEvent{