aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/cover/heatmap.go
diff options
context:
space:
mode:
authorTaras Madan <tarasmadan@google.com>2024-10-01 12:50:29 +0200
committerTaras Madan <tarasmadan@google.com>2024-10-02 09:40:02 +0000
commite6185ff22b3ea7f1e80c8f931fbc21802df71402 (patch)
tree7c02141b631d2de51a9274235512b20acb1f9283 /pkg/cover/heatmap.go
parentfb95da31ee52924519e703c1d8aa32bffe1db3e0 (diff)
pkg/cover: specify target commit requesting the line coverage
Diffstat (limited to 'pkg/cover/heatmap.go')
-rw-r--r--pkg/cover/heatmap.go35
1 files changed, 22 insertions, 13 deletions
diff --git a/pkg/cover/heatmap.go b/pkg/cover/heatmap.go
index 90737c885..365f756c9 100644
--- a/pkg/cover/heatmap.go
+++ b/pkg/cover/heatmap.go
@@ -68,7 +68,7 @@ func (thm *templateHeatmapRow) addParts(depth int, pathLeft []string, filePath s
thm.builder[nextElement].addParts(depth+1, pathLeft[1:], filePath, instrumented, covered, timePeriod)
}
-func (thm *templateHeatmapRow) prepareDataFor(timePeriods []coveragedb.TimePeriod) {
+func (thm *templateHeatmapRow) prepareDataFor(pageColumns []pageColumnTarget) {
thm.Items = maps.Values(thm.builder)
sort.Slice(thm.Items, func(i, j int) bool {
if thm.Items[i].IsDir != thm.Items[j].IsDir {
@@ -76,8 +76,9 @@ func (thm *templateHeatmapRow) prepareDataFor(timePeriods []coveragedb.TimePerio
}
return thm.Items[i].Name < thm.Items[j].Name
})
- for _, tp := range timePeriods {
+ for _, pageColumn := range pageColumns {
var dateCoverage int64
+ tp := pageColumn.TimePeriod
if thm.instrumented[tp] != 0 {
dateCoverage = 100 * thm.covered[tp] / thm.instrumented[tp]
}
@@ -89,16 +90,16 @@ func (thm *templateHeatmapRow) prepareDataFor(timePeriods []coveragedb.TimePerio
fmt.Sprintf("/upstream/graph/coverage/file?dateto=%s&period=%s&commit=%s&filepath=%s",
tp.DateTo.String(),
tp.Type,
- "commit",
+ pageColumn.Commit,
thm.filePath))
}
}
- if len(timePeriods) > 0 {
- lastDate := timePeriods[len(timePeriods)-1]
+ if len(pageColumns) > 0 {
+ lastDate := pageColumns[len(pageColumns)-1].TimePeriod
thm.LastDayInstrumented = thm.instrumented[lastDate]
}
for _, item := range thm.builder {
- item.prepareDataFor(timePeriods)
+ item.prepareDataFor(pageColumns)
}
}
@@ -108,9 +109,15 @@ type fileCoverageWithDetails struct {
Instrumented int64
Covered int64
TimePeriod coveragedb.TimePeriod `spanner:"-"`
+ Commit string
Subsystems []string
}
+type pageColumnTarget struct {
+ TimePeriod coveragedb.TimePeriod
+ Commit string
+}
+
func filesCoverageToTemplateData(fCov []*fileCoverageWithDetails) *templateHeatmap {
res := templateHeatmap{
Root: &templateHeatmapRow{
@@ -120,7 +127,7 @@ func filesCoverageToTemplateData(fCov []*fileCoverageWithDetails) *templateHeatm
covered: map[coveragedb.TimePeriod]int64{},
},
}
- timePeriods := map[coveragedb.TimePeriod]struct{}{}
+ columns := map[pageColumnTarget]struct{}{}
for _, fc := range fCov {
var pathLeft []string
if fc.Subsystem != "" {
@@ -133,17 +140,18 @@ func filesCoverageToTemplateData(fCov []*fileCoverageWithDetails) *templateHeatm
fc.Instrumented,
fc.Covered,
fc.TimePeriod)
- timePeriods[fc.TimePeriod] = struct{}{}
+ columns[pageColumnTarget{TimePeriod: fc.TimePeriod, Commit: fc.Commit}] = struct{}{}
}
- sortedTimePeriods := maps.Keys(timePeriods)
- sort.Slice(sortedTimePeriods, func(i, j int) bool {
- return sortedTimePeriods[i].DateTo.Before(sortedTimePeriods[j].DateTo)
+ targetDateAndCommits := maps.Keys(columns)
+ sort.Slice(targetDateAndCommits, func(i, j int) bool {
+ return targetDateAndCommits[i].TimePeriod.DateTo.Before(targetDateAndCommits[j].TimePeriod.DateTo)
})
- for _, tp := range sortedTimePeriods {
+ for _, tdc := range targetDateAndCommits {
+ tp := tdc.TimePeriod
res.Periods = append(res.Periods, fmt.Sprintf("%s(%d)", tp.DateTo.String(), tp.Days))
}
- res.Root.prepareDataFor(sortedTimePeriods)
+ res.Root.prepareDataFor(targetDateAndCommits)
return &res
}
@@ -151,6 +159,7 @@ func filesCoverageWithDetailsStmt(ns, subsystem string, timePeriod coveragedb.Ti
stmt := spanner.Statement{
SQL: `
select
+ commit,
instrumented,
covered,
files.filepath,