summaryrefslogtreecommitdiff
path: root/internal/tui/eventstream/export_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/tui/eventstream/export_test.go')
-rw-r--r--internal/tui/eventstream/export_test.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/internal/tui/eventstream/export_test.go b/internal/tui/eventstream/export_test.go
index f398fce..6cea2b1 100644
--- a/internal/tui/eventstream/export_test.go
+++ b/internal/tui/eventstream/export_test.go
@@ -1,6 +1,8 @@
package eventstream
import (
+ "bytes"
+ "encoding/csv"
"os"
"path/filepath"
"reflect"
@@ -196,6 +198,43 @@ func TestExportRowsToCSVPathTraversal(t *testing.T) {
_ = traversal // silence unused-variable warning
}
+func TestWriteStreamCSVAppendsFamilyColumn(t *testing.T) {
+ var buf bytes.Buffer
+ rows := []StreamEvent{{
+ Seq: 7,
+ TimeNs: 100,
+ GapNs: 3,
+ DurationNs: 5,
+ Comm: "worker",
+ PID: 10,
+ TID: 11,
+ Syscall: "socketpair",
+ FD: 4,
+ RetVal: 0,
+ Bytes: 0,
+ FileName: "/tmp/sock",
+ IsError: false,
+ Family: "Network",
+ }}
+ fail := func(err error) (string, error) { return "", err }
+
+ if err := writeStreamCSV(csv.NewWriter(&buf), rows, fail); err != nil {
+ t.Fatalf("writeStreamCSV() error = %v", err)
+ }
+
+ records, err := csv.NewReader(bytes.NewReader(buf.Bytes())).ReadAll()
+ if err != nil {
+ t.Fatalf("read CSV: %v", err)
+ }
+ wantHeader := []string{"seq", "time_ns", "gap_ns", "latency_ns", "comm", "pid", "tid", "syscall", "fd", "ret", "bytes", "file", "error", "family"}
+ if !reflect.DeepEqual(records[0], wantHeader) {
+ t.Fatalf("header = %#v, want %#v", records[0], wantHeader)
+ }
+ if records[1][8] != "4" || records[1][12] != "false" || records[1][13] != "Network" {
+ t.Fatalf("family should be appended without shifting legacy columns, got %#v", records[1])
+ }
+}
+
// TestShellSplitVariousCases covers the tokenizer with a table-driven approach.
func TestShellSplitVariousCases(t *testing.T) {
cases := []struct {