diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-08 08:55:06 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-08 08:55:06 +0200 |
| commit | 9950c77981ce06be34e877a6729abb23a36789c6 (patch) | |
| tree | 778c4f32c27740f86810cb052146df97b20cea9e /internal/eventloop_events_test.go | |
| parent | dc20240d2eddacba8a690a75547cbd8f1d3df98e (diff) | |
task(ior): remove eventloop busy-wait polling (task 2b8f8f83)
Diffstat (limited to 'internal/eventloop_events_test.go')
| -rw-r--r-- | internal/eventloop_events_test.go | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/internal/eventloop_events_test.go b/internal/eventloop_events_test.go new file mode 100644 index 0000000..4515164 --- /dev/null +++ b/internal/eventloop_events_test.go @@ -0,0 +1,51 @@ +package internal + +import ( + "context" + "testing" + "time" +) + +func TestEventsStopsOnContextCancelWithoutRawData(t *testing.T) { + el := mustNewEventLoop(t, eventLoopConfig{}) + rawCh := make(chan []byte) + ctx, cancel := context.WithCancel(context.Background()) + out := el.events(ctx, rawCh) + + cancel() + + select { + case _, ok := <-out: + if ok { + t.Fatal("expected output channel to be closed after cancellation") + } + case <-time.After(200 * time.Millisecond): + t.Fatal("timed out waiting for output channel to close after cancellation") + } +} + +func TestEventsIgnoresEmptyRawPayload(t *testing.T) { + el := mustNewEventLoop(t, eventLoopConfig{}) + rawCh := make(chan []byte, 1) + ctx, cancel := context.WithCancel(context.Background()) + out := el.events(ctx, rawCh) + + rawCh <- nil + + select { + case ep := <-out: + t.Fatalf("expected no event for empty raw payload, got %#v", ep) + case <-time.After(50 * time.Millisecond): + } + + cancel() + + select { + case _, ok := <-out: + if ok { + t.Fatal("expected output channel to be closed after cancellation") + } + case <-time.After(200 * time.Millisecond): + t.Fatal("timed out waiting for output channel to close after cancellation") + } +} |
