diff options
| -rw-r--r-- | dashboard/app/coverage_batch.go | 31 | ||||
| -rw-r--r-- | dashboard/app/cron.yaml | 6 |
2 files changed, 27 insertions, 10 deletions
diff --git a/dashboard/app/coverage_batch.go b/dashboard/app/coverage_batch.go index 04c7d545c..69ad78d3b 100644 --- a/dashboard/app/coverage_batch.go +++ b/dashboard/app/coverage_batch.go @@ -26,13 +26,20 @@ func initCoverageBatches() { } const ( - runsPerBatch = 5 daysToMerge = 7 batchTimeoutSeconds = 60 * 60 * 6 ) func handleBatchCoverage(w http.ResponseWriter, r *http.Request) { ctx := appengine.NewContext(r) + doQuarters := r.FormValue("quarters") == "true" + doMonths := r.FormValue("months") == "true" + doDays := r.FormValue("days") == "true" + maxSteps, err := strconv.Atoi(r.FormValue("steps")) + if err != nil { + log.Errorf(ctx, "failed to convert &steps= into maxSteps: %s", err.Error()) + return + } for ns, nsConfig := range getConfig(ctx).Namespaces { if nsConfig.Coverage == nil { continue @@ -42,7 +49,7 @@ func handleBatchCoverage(w http.ResponseWriter, r *http.Request) { log.Errorf(ctx, "can't find default repo or branch for ns %s", ns) continue } - periods, err := nsDatesToMerge(ctx, ns, daysToMerge, runsPerBatch) + periods, err := nsDatesToMerge(ctx, ns, daysToMerge, maxSteps) if err != nil { log.Errorf(ctx, "failed nsDatesToMerge(): %s", err) } @@ -54,17 +61,23 @@ func handleBatchCoverage(w http.ResponseWriter, r *http.Request) { if err != nil { log.Errorf(ctx, "failed coveragedb.NsDataMerged(%s): %s", ns, err) } - periods = append(periods, coveragedb.PeriodsToMerge(daysAvailable, periodsMerged, rowsAvailable, rowsMerged, - &coveragedb.DayPeriodOps{})...) - periods = append(periods, coveragedb.PeriodsToMerge(daysAvailable, periodsMerged, rowsAvailable, rowsMerged, - &coveragedb.MonthPeriodOps{})...) - periods = append(periods, coveragedb.PeriodsToMerge(daysAvailable, periodsMerged, rowsAvailable, rowsMerged, - &coveragedb.QuarterPeriodOps{})...) + if doDays { + periods = append(periods, coveragedb.PeriodsToMerge(daysAvailable, periodsMerged, rowsAvailable, rowsMerged, + &coveragedb.DayPeriodOps{})...) + } + if doMonths { + periods = append(periods, coveragedb.PeriodsToMerge(daysAvailable, periodsMerged, rowsAvailable, rowsMerged, + &coveragedb.MonthPeriodOps{})...) + } + if doQuarters { + periods = append(periods, coveragedb.PeriodsToMerge(daysAvailable, periodsMerged, rowsAvailable, rowsMerged, + &coveragedb.QuarterPeriodOps{})...) + } if len(periods) == 0 { log.Infof(ctx, "there is no new coverage for merging available in %s", ns) continue } - periods = coveragedb.AtMostNLatestPeriods(periods, runsPerBatch) + periods = coveragedb.AtMostNLatestPeriods(periods, maxSteps) nsCovConfig := nsConfig.Coverage if err := createScriptJob( ctx, diff --git a/dashboard/app/cron.yaml b/dashboard/app/cron.yaml index aece28370..a34d9af9e 100644 --- a/dashboard/app/cron.yaml +++ b/dashboard/app/cron.yaml @@ -19,5 +19,9 @@ cron: - url: /_ah/datastore_admin/backup.create?name=backup&filesystem=gs&gs_bucket_name=syzkaller-backups&kind=Bug&kind=Build&kind=Crash&kind=CrashLog&kind=CrashReport&kind=Error&kind=Job&kind=KernelConfig&kind=Manager&kind=ManagerStats&kind=Patch&kind=ReportingState&kind=ReproC&kind=ReproSyz schedule: every monday 00:00 target: ah-builtin-python-bundle -- url: /cron/batch_coverage +# Update quarter coverage numbers every week. +- url: /cron/batch_coverage?quarters=true&steps=2 + schedule: every sunday +# Update other coverage numbers every day. +- url: /cron/batch_coverage?days=true&months=true&steps=10 schedule: every 24 hours |
