diff options
| author | Taras Madan <tarasmadan@google.com> | 2024-11-06 17:18:44 +0100 |
|---|---|---|
| committer | Taras Madan <tarasmadan@google.com> | 2024-11-07 12:29:21 +0000 |
| commit | b727b13b371c02598242821ea230ed2e9f53e305 (patch) | |
| tree | c194eb01fad74dd67aa3968d7d787b68000fee70 /tools/syz-cover | |
| parent | 867e44df36d93e8127938eca6f6a5c339a2ba0b8 (diff) | |
dashboard/app: read lines coverage from spanner
We currently merge bigquery data for every line coverage request.
Let's read cached lines coverage data from spanner instead.
It allows to get only 1 file version from git and skip the data merge step.
Diffstat (limited to 'tools/syz-cover')
| -rw-r--r-- | tools/syz-cover/syz-cover.go | 65 |
1 files changed, 36 insertions, 29 deletions
diff --git a/tools/syz-cover/syz-cover.go b/tools/syz-cover/syz-cover.go index b640ff63d..4b4270992 100644 --- a/tools/syz-cover/syz-cover.go +++ b/tools/syz-cover/syz-cover.go @@ -30,6 +30,7 @@ import ( "io" "os" "os/exec" + "slices" "strconv" "strings" "time" @@ -51,9 +52,8 @@ var ( "modules JSON info obtained from /modules (optional)") flagNsHeatmap = flag.String("heatmap", "", "generate namespace heatmap") flagNsHeatmapGroupBy = flag.String("group-by", "dir", "dir or subsystem") - flagDateFrom = flag.String("from", - civil.DateOf(time.Now().Add(-14*24*time.Hour)).String(), "heatmap date from(optional)") - flagDateTo = flag.String("to", + flagPeriod = flag.String("period", "day", "time period(day[default], month, quarter)") + flagDateTo = flag.String("to", civil.DateOf(time.Now()).String(), "heatmap date to(optional)") flagProjectID = flag.String("project", "syzkaller", "spanner db project name") flagForFile = flag.String("for-file", "", "[optional]show file coverage") @@ -70,33 +70,26 @@ var ( "there are missing coverage callbacks") ) -func parseDates() (civil.Date, civil.Date) { - dateFrom, errDateFrom := civil.ParseDate(*flagDateFrom) - if errDateFrom != nil { - tool.Failf("failed to parse date from: %v", errDateFrom.Error()) - } - dateTo, errDateTo := civil.ParseDate(*flagDateTo) - if errDateTo != nil { - tool.Failf("failed to parse date to: %v", errDateTo.Error()) - } - return dateFrom, dateTo -} - -func periodsFromDays(from, to civil.Date) []coveragedb.TimePeriod { - if to.Before(from) { - panic("toDay can't be less than fromDay") - } - res := []coveragedb.TimePeriod{{DateTo: from, Days: 1, Type: coveragedb.DayPeriod}} - for ; from.Before(to); from = from.AddDays(1) { - res = append(res, coveragedb.TimePeriod{DateTo: from, Days: 1, Type: coveragedb.DayPeriod}) +func dayPeriods(tp coveragedb.TimePeriod) []coveragedb.TimePeriod { + var res []coveragedb.TimePeriod + for i := 0; i < tp.Days; i++ { + res = append(res, coveragedb.TimePeriod{DateTo: tp.DateTo.AddDays(-i), Days: 1, Type: coveragedb.DayPeriod}) } + slices.Reverse(res) return res } func toolBuildNsHeatmap() { buf := new(bytes.Buffer) - periods := periodsFromDays(parseDates()) - var err error + dateTo, err := civil.ParseDate(*flagDateTo) + if err != nil { + tool.Fail(err) + } + tp, err := coveragedb.MakeTimePeriod(dateTo, *flagPeriod) + if err != nil { + tool.Fail(err) + } + periods := dayPeriods(tp) switch *flagNsHeatmapGroupBy { case "dir": if err = cover.DoDirHeatMap(buf, *flagProjectID, *flagNsHeatmap, periods); err != nil { @@ -115,19 +108,33 @@ func toolBuildNsHeatmap() { } func toolFileCover() { - dateFrom, dateTo := parseDates() + dateTo, err := civil.ParseDate(*flagDateTo) + if err != nil { + tool.Failf("failed to parse date from: %v", err) + } + tp, err := coveragedb.MakeTimePeriod(dateTo, *flagPeriod) + if err != nil { + tool.Fail(err) + } config := cover.DefaultTextRenderConfig() config.ShowLineSourceExplanation = *flagDebug - details, err := cover.RendFileCoverage( - context.Background(), + mr, err := cover.GetMergeResult(context.Background(), *flagNamespace, *flagRepo, *flagCommit, *flagSourceCommit, *flagForFile, + nil, tp) + if err != nil { + tool.Fail(err) + } + + details, err := cover.RendFileCoverage( + *flagRepo, + *flagCommit, + *flagForFile, nil, // no proxy - get files directly from WebGits - dateFrom, - dateTo, + mr, config, ) if err != nil { |
