diff options
| author | Taras Madan <tarasmadan@google.com> | 2025-08-20 10:26:12 +0200 |
|---|---|---|
| committer | Taras Madan <tarasmadan@google.com> | 2025-08-28 11:36:44 +0000 |
| commit | 3984c91733166d63d43fd5d4ca0a61a46e666a26 (patch) | |
| tree | 02537be4a6f2745094839369eff74c36258f29a7 /pkg/report | |
| parent | 6c8b90a1abc330c4e05307ddb268b084a02cd2a3 (diff) | |
pkg/manager: store tail reports
Send only the first report to dashboard.
Diffstat (limited to 'pkg/report')
| -rw-r--r-- | pkg/report/report.go | 15 | ||||
| -rw-r--r-- | pkg/report/report_test.go | 35 |
2 files changed, 50 insertions, 0 deletions
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])) + }) + } +} |
