aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dashboard/app/coverage_batch.go31
-rw-r--r--dashboard/app/cron.yaml6
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