summaryrefslogtreecommitdiff
path: root/internal/tui
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-01 23:33:46 +0200
committerPaul Buetow <paul@buetow.org>2026-03-01 23:33:46 +0200
commit3690b89082215ff5c1fc84110074cf08b1b8909c (patch)
treee89f32688b64a467cb804e9df615a32cc6c2522c /internal/tui
parent3a438f0381a21c0055db3cce3164ff0ef5970cc0 (diff)
Route non-fatal event-loop warnings to TUI
Diffstat (limited to 'internal/tui')
-rw-r--r--internal/tui/eventstream/streamevent.go16
-rw-r--r--internal/tui/eventstream/streamevent_test.go26
2 files changed, 42 insertions, 0 deletions
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)
+ }
+}