diff options
| author | Paul Buetow <paul@buetow.org> | 2025-04-16 23:19:15 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-04-16 23:19:15 +0300 |
| commit | cd289eb0d978297b1e331da202eee09ca4c1290c (patch) | |
| tree | 893466694b6cd7430bb00e353a8c8db55b42b07c /internal/eventloop_test.go | |
| parent | ed7668ec893e21b4cf071c98dd5a292105aeec34 (diff) | |
add Equals
Diffstat (limited to 'internal/eventloop_test.go')
| -rw-r--r-- | internal/eventloop_test.go | 47 |
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{ |
