diff options
| author | Taras Madan <tarasmadan@google.com> | 2024-10-01 12:50:29 +0200 |
|---|---|---|
| committer | Taras Madan <tarasmadan@google.com> | 2024-10-02 09:40:02 +0000 |
| commit | e6185ff22b3ea7f1e80c8f931fbc21802df71402 (patch) | |
| tree | 7c02141b631d2de51a9274235512b20acb1f9283 | |
| parent | fb95da31ee52924519e703c1d8aa32bffe1db3e0 (diff) | |
pkg/cover: specify target commit requesting the line coverage
| -rw-r--r-- | pkg/cover/heatmap.go | 35 | ||||
| -rw-r--r-- | pkg/cover/heatmap_test.go | 25 |
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 +} |
