aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/covermerger
diff options
context:
space:
mode:
authorTaras Madan <tarasmadan@google.com>2024-12-05 10:08:44 +0100
committerTaras Madan <tarasmadan@google.com>2024-12-12 08:44:14 +0000
commit941924ebb4fc1ba15d5d3f12730ce32d7a6ace5f (patch)
treeb5d43ae7a180c34ceebda49e1eee276c2080fc3f /pkg/covermerger
parent035bb8e062dc88e848028048b5805e4c39bcdc47 (diff)
pkg/covermerger: aggregate data per-manager
It enables us to see the manager unique coverage.
Diffstat (limited to 'pkg/covermerger')
-rw-r--r--pkg/covermerger/bq_csv_reader.go6
-rw-r--r--pkg/covermerger/covermerger.go12
-rw-r--r--pkg/covermerger/covermerger_test.go2
3 files changed, 13 insertions, 7 deletions
diff --git a/pkg/covermerger/bq_csv_reader.go b/pkg/covermerger/bq_csv_reader.go
index 187da1812..ef9a4e879 100644
--- a/pkg/covermerger/bq_csv_reader.go
+++ b/pkg/covermerger/bq_csv_reader.go
@@ -64,15 +64,15 @@ func (r *bqCSVReader) InitNsRecords(ctx context.Context, ns, filePath, commit st
compression = "GZIP")
AS (
SELECT
- kernel_repo, kernel_branch, kernel_commit, file_path, sl, SUM(hit_count) as hit_count
+ kernel_repo, kernel_branch, kernel_commit, file_path, manager, sl, SUM(hit_count) as hit_count
FROM syzkaller.syzbot_coverage.`+"`%s`"+`
WHERE
TIMESTAMP_TRUNC(timestamp, DAY) >= "%s" AND
TIMESTAMP_TRUNC(timestamp, DAY) <= "%s" AND
version = 1 AND
starts_with(file_path, "%s") %s
- GROUP BY file_path, kernel_commit, kernel_repo, kernel_branch, sl
- ORDER BY file_path
+ GROUP BY file_path, manager, kernel_commit, kernel_repo, kernel_branch, sl
+ ORDER BY file_path, manager
);
`, gsURI, ns, from.String(), to.String(), filePath, selectCommit))
job, err := q.Run(ctx)
diff --git a/pkg/covermerger/covermerger.go b/pkg/covermerger/covermerger.go
index 5af6162a3..8fc058ddd 100644
--- a/pkg/covermerger/covermerger.go
+++ b/pkg/covermerger/covermerger.go
@@ -24,6 +24,7 @@ const (
KeyFilePath = "file_path"
KeyStartLine = "sl"
KeyHitCount = "hit_count"
+ KeyManager = "manager"
)
type FileRecord struct {
@@ -31,6 +32,7 @@ type FileRecord struct {
RepoCommit
StartLine int
HitCount int
+ Manager string
}
type RepoCommit struct {
@@ -87,6 +89,8 @@ func makeRecord(fields, schema []string) (*FileRecord, error) {
record.StartLine, err = readIntField(key, val)
case KeyHitCount:
record.HitCount, err = readIntField(key, val)
+ case KeyManager:
+ record.Manager = val
}
if err != nil {
return nil, err
@@ -124,7 +128,9 @@ func isSchema(fields, schema []string) bool {
return true
}
-func MergeCSVData(config *Config, reader io.Reader) (map[string]*MergeResult, error) {
+type FilesMergeResults map[string]*MergeResult
+
+func MergeCSVData(config *Config, reader io.Reader) (FilesMergeResults, error) {
var schema []string
csvReader := csv.NewReader(reader)
if fields, err := csvReader.Read(); err != nil {
@@ -172,10 +178,10 @@ type FileRecords struct {
records []*FileRecord
}
-func mergeChanData(c *Config, recordChan <-chan *FileRecord) (map[string]*MergeResult, error) {
+func mergeChanData(c *Config, recordChan <-chan *FileRecord) (FilesMergeResults, error) {
g, ctx := errgroup.WithContext(context.Background())
frecordChan := groupFileRecords(recordChan, ctx)
- stat := make(map[string]*MergeResult)
+ stat := make(FilesMergeResults)
var mu sync.Mutex
for i := 0; i < c.Jobs; i++ {
g.Go(func() error {
diff --git a/pkg/covermerger/covermerger_test.go b/pkg/covermerger/covermerger_test.go
index 286f58737..a8b2a3ca8 100644
--- a/pkg/covermerger/covermerger_test.go
+++ b/pkg/covermerger/covermerger_test.go
@@ -125,7 +125,7 @@ samp_time,1,360,arch,b1,ci-mock,git://repo,master,commit2,not_changed.c,func1,4,
strings.NewReader(test.bqTable),
)
assert.Nil(t, err)
- var expectedAggregation map[string]*MergeResult
+ var expectedAggregation FilesMergeResults
assert.Nil(t, json.Unmarshal([]byte(test.simpleAggregation), &expectedAggregation))
assert.Equal(t, expectedAggregation, aggregation)
})