summaryrefslogtreecommitdiff
path: root/internal/eventloop_events_test.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-08 08:55:06 +0200
committerPaul Buetow <paul@buetow.org>2026-03-08 08:55:06 +0200
commit9950c77981ce06be34e877a6729abb23a36789c6 (patch)
tree778c4f32c27740f86810cb052146df97b20cea9e /internal/eventloop_events_test.go
parentdc20240d2eddacba8a690a75547cbd8f1d3df98e (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.go51
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")
+ }
+}