diff options
| author | Taras Madan <tarasmadan@google.com> | 2024-03-20 15:36:37 +0100 |
|---|---|---|
| committer | Taras Madan <tarasmadan@google.com> | 2024-03-21 16:38:22 +0000 |
| commit | 0a84219ec0829db2fb2d804eb0a9cbc0c5e6b4b1 (patch) | |
| tree | 586e697f7e99058baf4bc7f3b25d5ae208a94817 /pkg/cover/manager_to_ci.go | |
| parent | c2b3b7068cafe4a798f6cf1d9e65bf105b7e33fc (diff) | |
syz-ci, pkg/cover: stream coverage from manager to gcs
Diffstat (limited to 'pkg/cover/manager_to_ci.go')
| -rw-r--r-- | pkg/cover/manager_to_ci.go | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/pkg/cover/manager_to_ci.go b/pkg/cover/manager_to_ci.go new file mode 100644 index 000000000..4b6f1d9ef --- /dev/null +++ b/pkg/cover/manager_to_ci.go @@ -0,0 +1,51 @@ +// Copyright 2024 syzkaller project authors. All rights reserved. +// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. + +package cover + +import ( + "encoding/json" + "fmt" + "io" +) + +// CIDetails fields will be added to every CSV line. +type CIDetails struct { + Version int `json:"version"` + Timestamp string `json:"timestamp"` + FuzzingMinutes int `json:"fuzzing_minutes"` + Arch string `json:"arch"` + BuildID string `json:"build_id"` + Manager string `json:"manager"` + KernelRepo string `json:"kernel_repo"` + KernelBranch string `json:"kernel_branch"` + KernelCommit string `json:"kernel_commit"` +} + +type dbCoverageRecord struct { + CIDetails + CoverageInfo +} + +func writeJSLine(w io.Writer, covInfo dbCoverageRecord) error { + bs, err := json.Marshal(covInfo) + if err != nil { + return fmt.Errorf("failed to marshal covInfo: %w", err) + } + bs = append(bs, '\n') + if _, err = w.Write(bs); err != nil { + return fmt.Errorf("failed to write js data: %w", err) + } + return nil +} + +func WriteCIJSONLine(w io.Writer, managerCover CoverageInfo, ciDetails CIDetails) error { + dbLine := dbCoverageRecord{ + CIDetails: ciDetails, + CoverageInfo: managerCover, + } + if err := writeJSLine(w, dbLine); err != nil { + return fmt.Errorf("failed to serialize func line: %w", err) + } + return nil +} |
