From 3984c91733166d63d43fd5d4ca0a61a46e666a26 Mon Sep 17 00:00:00 2001 From: Taras Madan Date: Wed, 20 Aug 2025 10:26:12 +0200 Subject: pkg/manager: store tail reports Send only the first report to dashboard. --- pkg/report/report.go | 15 +++++++++++++++ pkg/report/report_test.go | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) (limited to 'pkg/report') diff --git a/pkg/report/report.go b/pkg/report/report.go index 088f8c089..b4f93e3ac 100644 --- a/pkg/report/report.go +++ b/pkg/report/report.go @@ -943,3 +943,18 @@ func TitleToCrashType(title string) crash.Type { } return crash.UnknownType } + +const reportSeparator = "\n<<<<<<<<<<<<<<< tail report >>>>>>>>>>>>>>>\n\n" + +func MergeReportBytes(reps []*Report) []byte { + var res []byte + for _, rep := range reps { + res = append(res, rep.Report...) + res = append(res, []byte(reportSeparator)...) + } + return res +} + +func SplitReportBytes(data []byte) [][]byte { + return bytes.Split(data, []byte(reportSeparator)) +} diff --git a/pkg/report/report_test.go b/pkg/report/report_test.go index 2184cd411..8c863fe8d 100644 --- a/pkg/report/report_test.go +++ b/pkg/report/report_test.go @@ -510,3 +510,38 @@ BCDEF`), Truncate([]byte(`0123456789ABCDEF`), 0, 5)) DEF`), Truncate([]byte(`0123456789ABCDEF`), 4, 3)) } + +func TestSplitReportBytes(t *testing.T) { + tests := []struct { + name string + input []byte + wantFirst string + }{ + { + name: "empty", + input: nil, + wantFirst: "", + }, + { + name: "single", + input: []byte("report1"), + wantFirst: "report1", + }, + { + name: "split in the middle", + input: []byte("report1" + reportSeparator + "report2"), + wantFirst: "report1", + }, + { + name: "split in the middle, save new line", + input: []byte("report1\n" + reportSeparator + "report2"), + wantFirst: "report1\n", + }, + } + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + splitted := SplitReportBytes(test.input) + assert.Equal(t, test.wantFirst, string(splitted[0])) + }) + } +} -- cgit mrf-deployment