summaryrefslogtreecommitdiff
path: root/internal/eventloop_test.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-04-16 15:39:44 +0300
committerPaul Buetow <paul@buetow.org>2025-04-16 15:39:44 +0300
commit9745923f0acc994181f643fb02b612f10426f41b (patch)
tree1436230e82bbf88877c5f406a481eab285afb082 /internal/eventloop_test.go
parentd1d5cd53cbc62c8d8b7e3e4be73269918a997ddd (diff)
eventloop initial test plus fix
Diffstat (limited to 'internal/eventloop_test.go')
-rw-r--r--internal/eventloop_test.go57
1 files changed, 38 insertions, 19 deletions
diff --git a/internal/eventloop_test.go b/internal/eventloop_test.go
index 045e8f0..2749c80 100644
--- a/internal/eventloop_test.go
+++ b/internal/eventloop_test.go
@@ -2,29 +2,40 @@ package internal
import (
"context"
+ "fmt"
"ior/internal/event"
"ior/internal/types"
"syscall"
"testing"
)
-// TODO: Finish this test
-func TestEventloop(t *testing.T) {
- T = t
+type validateFunc func(t *testing.T, ev *event.Pair)
+func TestEventloop(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
+
inCh := make(chan []byte)
- outCh := make(chan *event.Pair, 2)
+ outCh := make(chan *event.Pair)
+ validateCh := make(chan validateFunc)
go func() {
defer close(inCh)
- sendOpenFileTracepoints(t, inCh)
+ defer close(validateCh)
+
+ enterEv, exitEv, validate := openFileTestdata(t)
+ inCh <- enterEv
+ inCh <- exitEv
+ validateCh <- validate
}()
go func() {
for ev := range outCh {
- t.Log("Received", ev)
+ t.Run(ev.EnterEv.String(), func(t *testing.T) {
+ t.Log("Received", ev)
+ validate := <-validateCh
+ validate(t, ev)
+ })
}
}()
@@ -36,39 +47,47 @@ func TestEventloop(t *testing.T) {
ev.run(ctx, inCh)
}
-func sendOpenFileTracepoints(t *testing.T, ch chan<- []byte) {
- enterOpenEvent := types.OpenEvent{
+func openFileTestdata(t *testing.T) (enterEvBytes, exitEvBytes []byte, validate validateFunc) {
+ enterEv := types.OpenEvent{
EventType: types.ENTER_OPEN_EVENT,
TraceId: types.SYS_ENTER_OPENAT,
Time: 123456789,
Pid: 10,
- Tid: 10,
+ Tid: 11,
Flags: syscall.O_RDWR,
Filename: [types.MAX_FILENAME_LENGTH]byte{},
Comm: [types.MAX_PROGNAME_LENGTH]byte{},
}
- copy(enterOpenEvent.Filename[:], "testfile.txt")
- copy(enterOpenEvent.Comm[:], "testcomm")
+ copy(enterEv.Filename[:], "testfile.txt")
+ copy(enterEv.Comm[:], "testcomm")
+
+ var err error
- bytes, err := enterOpenEvent.Bytes()
+ enterEvBytes, err = enterEv.Bytes()
if err != nil {
t.Error(err)
}
- t.Log("Sending", enterOpenEvent, bytes)
- ch <- bytes
- exitOpenEvent := types.RetEvent{
+ exitEv := types.RetEvent{
EventType: types.EXIT_OPEN_EVENT,
TraceId: types.SYS_EXIT_OPENAT,
Time: 123456789,
Ret: 42,
Pid: 10,
- Tid: 10,
+ Tid: 11,
}
- bytes, err = exitOpenEvent.Bytes()
+ exitEvBytes, err = exitEv.Bytes()
if err != nil {
t.Error(err)
+
}
- t.Log("Sending", exitOpenEvent, bytes)
- ch <- bytes
+
+ validate = func(t *testing.T, ev *event.Pair) {
+ if ev.EnterEv.GetTraceId() != enterEv.TraceId {
+ t.Errorf("Expected TraceId '%v' but got '%v'", enterEv.TraceId, ev.EnterEv.GetTraceId())
+ }
+ t.Log(fmt.Sprintf("Event pair '%v' appears fine", ev))
+ }
+
+ return
}