diff options
| author | Taras Madan <tarasmadan@google.com> | 2024-10-02 09:55:21 +0200 |
|---|---|---|
| committer | Taras Madan <tarasmadan@google.com> | 2024-10-02 09:40:02 +0000 |
| commit | e13d0f0baaeea41cc584c6333bbf0b788d7174b9 (patch) | |
| tree | 586aeb0aa62c81705ae8158814c152417e7c1a52 /pkg | |
| parent | ea2b66a65b01cd61336424457391310e8dd8b62b (diff) | |
pkg/cover: use timePeriods instead of civil.Date
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/cover/heatmap.go | 66 | ||||
| -rw-r--r-- | pkg/cover/heatmap_test.go | 11 | ||||
| -rw-r--r-- | pkg/cover/templates/heatmap.html | 4 |
3 files changed, 41 insertions, 40 deletions
diff --git a/pkg/cover/heatmap.go b/pkg/cover/heatmap.go index 7faea553a..246642c72 100644 --- a/pkg/cover/heatmap.go +++ b/pkg/cover/heatmap.go @@ -13,7 +13,6 @@ import ( "sort" "strings" - "cloud.google.com/go/civil" "cloud.google.com/go/spanner" "github.com/google/syzkaller/pkg/coveragedb" _ "github.com/google/syzkaller/pkg/subsystem/lists" @@ -31,18 +30,19 @@ type templateHeatmapRow struct { Tooltips []string builder map[string]*templateHeatmapRow - instrumented map[civil.Date]int64 - covered map[civil.Date]int64 + instrumented map[coveragedb.TimePeriod]int64 + covered map[coveragedb.TimePeriod]int64 } type templateHeatmap struct { - Root *templateHeatmapRow - Dates []string + Root *templateHeatmapRow + Periods []string } -func (thm *templateHeatmapRow) addParts(depth int, pathLeft []string, instrumented, covered int64, dateto civil.Date) { - thm.instrumented[dateto] += instrumented - thm.covered[dateto] += covered +func (thm *templateHeatmapRow) addParts(depth int, pathLeft []string, instrumented, covered int64, + timePeriod coveragedb.TimePeriod) { + thm.instrumented[timePeriod] += instrumented + thm.covered[timePeriod] += covered if len(pathLeft) == 0 { return } @@ -54,14 +54,14 @@ func (thm *templateHeatmapRow) addParts(depth int, pathLeft []string, instrument Depth: depth, IsDir: isDir, builder: make(map[string]*templateHeatmapRow), - instrumented: make(map[civil.Date]int64), - covered: make(map[civil.Date]int64), + instrumented: make(map[coveragedb.TimePeriod]int64), + covered: make(map[coveragedb.TimePeriod]int64), } } - thm.builder[nextElement].addParts(depth+1, pathLeft[1:], instrumented, covered, dateto) + thm.builder[nextElement].addParts(depth+1, pathLeft[1:], instrumented, covered, timePeriod) } -func (thm *templateHeatmapRow) prepareDataFor(dates []civil.Date) { +func (thm *templateHeatmapRow) prepareDataFor(timePeriods []coveragedb.TimePeriod) { thm.Items = maps.Values(thm.builder) sort.Slice(thm.Items, func(i, j int) bool { if thm.Items[i].IsDir != thm.Items[j].IsDir { @@ -69,21 +69,21 @@ func (thm *templateHeatmapRow) prepareDataFor(dates []civil.Date) { } return thm.Items[i].Name < thm.Items[j].Name }) - for _, d := range dates { + for _, tp := range timePeriods { var dateCoverage int64 - if thm.instrumented[d] != 0 { - dateCoverage = 100 * thm.covered[d] / thm.instrumented[d] + if thm.instrumented[tp] != 0 { + dateCoverage = 100 * thm.covered[tp] / thm.instrumented[tp] } thm.Coverage = append(thm.Coverage, dateCoverage) thm.Tooltips = append(thm.Tooltips, fmt.Sprintf("Instrumented:\t%d blocks\nCovered:\t%d blocks", - thm.instrumented[d], thm.covered[d])) + thm.instrumented[tp], thm.covered[tp])) } - if len(dates) > 0 { - lastDate := dates[len(dates)-1] + if len(timePeriods) > 0 { + lastDate := timePeriods[len(timePeriods)-1] thm.LastDayInstrumented = thm.instrumented[lastDate] } for _, item := range thm.builder { - item.prepareDataFor(dates) + item.prepareDataFor(timePeriods) } } @@ -91,7 +91,7 @@ type fileCoverageWithDetails struct { Filepath string Instrumented int64 Covered int64 - Dateto civil.Date + TimePeriod coveragedb.TimePeriod `spanner:"-"` Subsystems []string } @@ -99,29 +99,29 @@ func filesCoverageToTemplateData(fCov []*fileCoverageWithDetails) *templateHeatm res := templateHeatmap{ Root: &templateHeatmapRow{ builder: map[string]*templateHeatmapRow{}, - instrumented: map[civil.Date]int64{}, - covered: map[civil.Date]int64{}, + instrumented: map[coveragedb.TimePeriod]int64{}, + covered: map[coveragedb.TimePeriod]int64{}, }, } - dates := map[civil.Date]struct{}{} + timePeriods := map[coveragedb.TimePeriod]struct{}{} for _, fc := range fCov { res.Root.addParts( 0, strings.Split(fc.Filepath, "/"), fc.Instrumented, fc.Covered, - fc.Dateto) - dates[fc.Dateto] = struct{}{} + fc.TimePeriod) + timePeriods[fc.TimePeriod] = struct{}{} } - sortedDates := maps.Keys(dates) - sort.Slice(sortedDates, func(i, j int) bool { - return sortedDates[i].Before(sortedDates[j]) + sortedTimePeriods := maps.Keys(timePeriods) + sort.Slice(sortedTimePeriods, func(i, j int) bool { + return sortedTimePeriods[i].DateTo.Before(sortedTimePeriods[j].DateTo) }) - for _, d := range sortedDates { - res.Dates = append(res.Dates, d.String()) + for _, tp := range sortedTimePeriods { + res.Periods = append(res.Periods, fmt.Sprintf("%s(%d)", tp.DateTo.String(), tp.Days)) } - res.Root.prepareDataFor(sortedDates) + res.Root.prepareDataFor(sortedTimePeriods) return &res } @@ -129,7 +129,6 @@ func filesCoverageWithDetailsStmt(ns, subsystem string, timePeriod coveragedb.Ti stmt := spanner.Statement{ SQL: ` select - dateto, instrumented, covered, files.filepath, @@ -179,6 +178,7 @@ func filesCoverageWithDetails(ctx context.Context, projectID, ns, subsystem stri if err = row.ToStruct(&r); err != nil { return nil, fmt.Errorf("failed to row.ToStruct() spanner DB: %w", err) } + r.TimePeriod = timePeriod res = append(res, &r) } } @@ -257,7 +257,7 @@ func DoSubsystemsHeatMapStyleBodyJS(ctx context.Context, projectID, ns, subsyste Filepath: ssName + "/" + cwd.Filepath, Instrumented: cwd.Instrumented, Covered: cwd.Covered, - Dateto: cwd.Dateto, + TimePeriod: cwd.TimePeriod, } ssCovAndDates = append(ssCovAndDates, &newRecord) } diff --git a/pkg/cover/heatmap_test.go b/pkg/cover/heatmap_test.go index f83b31191..be90493df 100644 --- a/pkg/cover/heatmap_test.go +++ b/pkg/cover/heatmap_test.go @@ -8,6 +8,7 @@ import ( "time" "cloud.google.com/go/civil" + "github.com/google/syzkaller/pkg/coveragedb" "github.com/stretchr/testify/assert" ) @@ -33,7 +34,7 @@ func TestFilesCoverageToTemplateData(t *testing.T) { Filepath: "file1", Instrumented: 1, Covered: 1, - Dateto: civil.Date{Year: 2024, Month: time.July, Day: 1}, + TimePeriod: coveragedb.TimePeriod{DateTo: civil.Date{Year: 2024, Month: time.July, Day: 1}, Days: 1}, }, }, want: &templateHeatmap{ @@ -60,7 +61,7 @@ func TestFilesCoverageToTemplateData(t *testing.T) { "Instrumented:\t1 blocks\nCovered:\t1 blocks", }, }, - Dates: []string{"2024-07-01"}, + Periods: []string{"2024-07-01(1)"}, }, }, { @@ -70,13 +71,13 @@ func TestFilesCoverageToTemplateData(t *testing.T) { Filepath: "dir/file2", Instrumented: 1, Covered: 0, - Dateto: civil.Date{Year: 2024, Month: time.July, Day: 2}, + TimePeriod: coveragedb.TimePeriod{DateTo: civil.Date{Year: 2024, Month: time.July, Day: 2}, Days: 1}, }, { Filepath: "dir/file1", Instrumented: 1, Covered: 1, - Dateto: civil.Date{Year: 2024, Month: time.July, Day: 1}, + TimePeriod: coveragedb.TimePeriod{DateTo: civil.Date{Year: 2024, Month: time.July, Day: 1}, Days: 1}, }, }, want: &templateHeatmap{ @@ -128,7 +129,7 @@ func TestFilesCoverageToTemplateData(t *testing.T) { "Instrumented:\t1 blocks\nCovered:\t0 blocks", }, }, - Dates: []string{"2024-07-01", "2024-07-02"}, + Periods: []string{"2024-07-01(1)", "2024-07-02(1)"}, }, }, } diff --git a/pkg/cover/templates/heatmap.html b/pkg/cover/templates/heatmap.html index 622a27636..d72d3a02c 100644 --- a/pkg/cover/templates/heatmap.html +++ b/pkg/cover/templates/heatmap.html @@ -119,9 +119,9 @@ <div class="first_column bold"> date </div> - {{ range $date := .Dates }} + {{ range $period := .Periods }} <div class="date_column bold"> - {{ $date }} + {{ $period }} </div> {{ end }} </li> |
