aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
Diffstat (limited to 'pkg')
-rw-r--r--pkg/cover/heatmap.go35
-rw-r--r--pkg/cover/heatmap_test.go25
2 files changed, 39 insertions, 21 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,
diff --git a/pkg/cover/heatmap_test.go b/pkg/cover/heatmap_test.go
index f7c058a7a..5739d2e9c 100644
--- a/pkg/cover/heatmap_test.go
+++ b/pkg/cover/heatmap_test.go
@@ -35,7 +35,8 @@ func TestFilesCoverageToTemplateData(t *testing.T) {
Filepath: "file1",
Instrumented: 1,
Covered: 1,
- TimePeriod: coveragedb.TimePeriod{DateTo: civil.Date{Year: 2024, Month: time.July, Day: 1}, Days: 1},
+ TimePeriod: makeTimePeriod(t, civil.Date{Year: 2024, Month: time.July, Day: 1}, coveragedb.DayPeriod),
+ Commit: "commit1",
},
},
want: &templateHeatmap{
@@ -52,7 +53,7 @@ func TestFilesCoverageToTemplateData(t *testing.T) {
"Instrumented:\t1 blocks\nCovered:\t1 blocks",
},
FileCoverageLink: []string{
- "/upstream/graph/coverage/file?dateto=2024-07-01&period=day&commit=commit&filepath=file1"},
+ "/upstream/graph/coverage/file?dateto=2024-07-01&period=day&commit=commit1&filepath=file1"},
},
},
Name: "",
@@ -74,13 +75,15 @@ func TestFilesCoverageToTemplateData(t *testing.T) {
Filepath: "dir/file2",
Instrumented: 1,
Covered: 0,
- TimePeriod: coveragedb.TimePeriod{DateTo: civil.Date{Year: 2024, Month: time.July, Day: 2}, Days: 1},
+ TimePeriod: makeTimePeriod(t, civil.Date{Year: 2024, Month: time.July, Day: 2}, coveragedb.DayPeriod),
+ Commit: "commit2",
},
{
Filepath: "dir/file1",
Instrumented: 1,
Covered: 1,
- TimePeriod: coveragedb.TimePeriod{DateTo: civil.Date{Year: 2024, Month: time.July, Day: 1}, Days: 1},
+ TimePeriod: makeTimePeriod(t, civil.Date{Year: 2024, Month: time.July, Day: 1}, coveragedb.DayPeriod),
+ Commit: "commit1",
},
},
want: &templateHeatmap{
@@ -100,8 +103,8 @@ func TestFilesCoverageToTemplateData(t *testing.T) {
"Instrumented:\t0 blocks\nCovered:\t0 blocks",
},
FileCoverageLink: []string{
- "/upstream/graph/coverage/file?dateto=2024-07-01&period=day&commit=commit&filepath=dir/file1",
- "/upstream/graph/coverage/file?dateto=2024-07-02&period=day&commit=commit&filepath=dir/file1"},
+ "/upstream/graph/coverage/file?dateto=2024-07-01&period=day&commit=commit1&filepath=dir/file1",
+ "/upstream/graph/coverage/file?dateto=2024-07-02&period=day&commit=commit2&filepath=dir/file1"},
},
{
Items: []*templateHeatmapRow{},
@@ -115,8 +118,8 @@ func TestFilesCoverageToTemplateData(t *testing.T) {
"Instrumented:\t1 blocks\nCovered:\t0 blocks",
},
FileCoverageLink: []string{
- "/upstream/graph/coverage/file?dateto=2024-07-01&period=day&commit=commit&filepath=dir/file2",
- "/upstream/graph/coverage/file?dateto=2024-07-02&period=day&commit=commit&filepath=dir/file2"},
+ "/upstream/graph/coverage/file?dateto=2024-07-01&period=day&commit=commit1&filepath=dir/file2",
+ "/upstream/graph/coverage/file?dateto=2024-07-02&period=day&commit=commit2&filepath=dir/file2"},
},
},
Name: "dir",
@@ -150,3 +153,9 @@ func TestFilesCoverageToTemplateData(t *testing.T) {
})
}
}
+
+func makeTimePeriod(t *testing.T, targetDate civil.Date, periodType string) coveragedb.TimePeriod {
+ tp, err := coveragedb.MakeTimePeriod(targetDate, periodType)
+ assert.NoError(t, err)
+ return tp
+}