From 3690b89082215ff5c1fc84110074cf08b1b8909c Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 1 Mar 2026 23:33:46 +0200 Subject: Route non-fatal event-loop warnings to TUI --- internal/tui/eventstream/streamevent.go | 16 ++++++++++++++++ internal/tui/eventstream/streamevent_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) (limited to 'internal/tui/eventstream') diff --git a/internal/tui/eventstream/streamevent.go b/internal/tui/eventstream/streamevent.go index a5c3d14..dbe04dd 100644 --- a/internal/tui/eventstream/streamevent.go +++ b/internal/tui/eventstream/streamevent.go @@ -3,6 +3,7 @@ package eventstream import ( "ior/internal/event" "ior/internal/types" + "time" ) type StreamEvent struct { @@ -49,3 +50,18 @@ func NewStreamEvent(seq uint64, pair *event.Pair) StreamEvent { return e } + +// NewWarningEvent creates a synthetic stream row for non-fatal runtime warnings. +func NewWarningEvent(message string) StreamEvent { + now := uint64(time.Now().UnixNano()) + return StreamEvent{ + Seq: now, + TimeNs: now, + Syscall: "warning", + Comm: "ior", + FileName: message, + FD: UnknownFD, + RetVal: -1, + IsError: true, + } +} diff --git a/internal/tui/eventstream/streamevent_test.go b/internal/tui/eventstream/streamevent_test.go index 6be7407..6131fed 100644 --- a/internal/tui/eventstream/streamevent_test.go +++ b/internal/tui/eventstream/streamevent_test.go @@ -94,3 +94,29 @@ func TestNewStreamEventWithoutRetEvent(t *testing.T) { t.Fatalf("FD = %d, want %d", got.FD, UnknownFD) } } + +func TestNewWarningEventPopulatesFields(t *testing.T) { + got := NewWarningEvent("Dropped malformed event") + + if got.Syscall != "warning" { + t.Fatalf("Syscall = %q, want warning", got.Syscall) + } + if got.Comm != "ior" { + t.Fatalf("Comm = %q, want ior", got.Comm) + } + if got.FileName != "Dropped malformed event" { + t.Fatalf("FileName = %q, want warning text", got.FileName) + } + if got.FD != UnknownFD { + t.Fatalf("FD = %d, want %d", got.FD, UnknownFD) + } + if got.RetVal != -1 { + t.Fatalf("RetVal = %d, want -1", got.RetVal) + } + if !got.IsError { + t.Fatalf("IsError = false, want true") + } + if got.Seq == 0 || got.TimeNs == 0 { + t.Fatalf("Seq/TimeNs = %d/%d, want non-zero", got.Seq, got.TimeNs) + } +} -- cgit v1.2.3