diff options
author | Mathieu Othacehe <othacehe@gnu.org> | 2020-09-15 11:13:09 +0200 |
---|---|---|
committer | Mathieu Othacehe <othacehe@gnu.org> | 2020-09-15 11:13:09 +0200 |
commit | 97ec7a2da52e093234576b0e65b18c6db4411bde (patch) | |
tree | b2dda1c4c256077dcbb1cfad5dc816bbf98f5dcf /src | |
parent | d0a2235ec7258fc363faf4e4bcef55f744e43c76 (diff) | |
download | cuirass-97ec7a2da52e093234576b0e65b18c6db4411bde.tar cuirass-97ec7a2da52e093234576b0e65b18c6db4411bde.tar.gz |
metrics: Add 'new-derivations-per-day support.
* src/cuirass/metrics.scm (db-new-derivations-previous-day): New procedure.
(%metrics): Add 'new-derivations-per-day.
(db-update-metrics): Add it.
* src/cuirass/templates.scm (make-line-chart): Add support for multiple
datasets. Also add "interpolation?" and "legend?" options.
(global-metrics-content): Add "new-derivations-per-day" argument. Adapt
"Builds per day" chart so that it uses two datasets from
'new-derivations-per-day and 'builds-per-day metrics.
* src/cuirass/templates.scm (url-handler): Adapt accordingly.
Diffstat (limited to 'src')
-rw-r--r-- | src/cuirass/http.scm | 4 | ||||
-rw-r--r-- | src/cuirass/metrics.scm | 15 | ||||
-rw-r--r-- | src/cuirass/templates.scm | 38 |
3 files changed, 46 insertions, 11 deletions
diff --git a/src/cuirass/http.scm b/src/cuirass/http.scm index 6b20a2b..b9f1eb6 100644 --- a/src/cuirass/http.scm +++ b/src/cuirass/http.scm @@ -613,6 +613,9 @@ Hydra format." (let ((builds-per-day (db-get-metrics-with-id 'builds-per-day #:limit 10)) + (new-derivations-per-day + (db-get-metrics-with-id 'new-derivations-per-day + #:limit 10)) (pending-builds (db-get-metrics-with-id 'pending-builds #:limit 10)) @@ -627,6 +630,7 @@ Hydra format." (global-metrics-content #:avg-eval-durations avg-eval-durations #:builds-per-day builds-per-day + #:new-derivations-per-day new-derivations-per-day #:pending-builds pending-builds)) '()))) diff --git a/src/cuirass/metrics.scm b/src/cuirass/metrics.scm index cd4e901..f6fcd7f 100644 --- a/src/cuirass/metrics.scm +++ b/src/cuirass/metrics.scm @@ -69,6 +69,12 @@ FROM Evaluations WHERE specification = " spec WHERE date(timestamp, 'unixepoch') = date('now', '-1 day') AND date(stoptime, 'unixepoch') = date('now', '-1 day');"))) (and=> (expect-one-row rows) (cut vector-ref <> 0))))) + +(define (db-new-derivations-previous-day _) + "Return the new derivations count of the previous day." + (with-db-worker-thread db + (let ((rows (sqlite-exec db "SELECT COUNT(*) from Builds +WHERE date(timestamp, 'unixepoch') = date('now', '-1 day');"))) (and=> (expect-one-row rows) (cut vector-ref <> 0))))) (define (db-pending-builds _) @@ -122,7 +128,13 @@ date('now'));"))) (metric (id 'pending-builds) (compute-proc db-pending-builds) - (field-proc db-current-day-timestamp)))) + (field-proc db-current-day-timestamp)) + + ;; New derivations per day. + (metric + (id 'new-derivations-per-day) + (compute-proc db-new-derivations-previous-day) + (field-proc db-previous-day-timestamp)))) (define (metric->type metric) "Return the index of the given METRIC in %metrics list. This index is used @@ -209,6 +221,7 @@ timestamp) VALUES (" (map (cut assq-ref <> #:name) (db-get-specifications))) (db-update-metric 'builds-per-day) + (db-update-metric 'new-derivations-per-day) (db-update-metric 'pending-builds) ;; Update specification related metrics. diff --git a/src/cuirass/templates.scm b/src/cuirass/templates.scm index 4f1a278..3491d3b 100644 --- a/src/cuirass/templates.scm +++ b/src/cuirass/templates.scm @@ -826,10 +826,13 @@ and BUILD-MAX are global minimal and maximal row identifiers." (tbody ,(map build-row builds))))))) -(define* (make-line-chart id data +(define* (make-line-chart id datasets #:key + (interpolation? #t) + (legend? #f) title - color) + labels + colors) (let* ((scales `((xAxes . ,(vector '((type . "time") (time . ((unit . "day"))) @@ -844,12 +847,20 @@ and BUILD-MAX are global minimal and maximal row identifiers." . ((display . #t) (labelString . "Builds")))))))) (chart `((type . "line") - (data . ((datasets . ,(vector `((fill . #f) - (borderColor . ,color) - (data . ,data)))))) + (data . ((datasets + . ,(apply vector + (map (lambda (dataset label color) + `((fill . #f) + (label . ,label) + ,@(if interpolation? + '() + '((lineTension . 0))) + (borderColor . ,color) + (data . ,dataset))) + datasets labels colors))))) (options . ((responsive . #t) (tooltips . ((enabled . #f))) - (legend . ((display . #f))) + (legend . ((display . ,legend?))) (title . ((display . #t) (text . ,title))) (scales . ,scales)))))) @@ -862,6 +873,7 @@ window.~a = new Chart\ (define* (global-metrics-content #:key avg-eval-durations builds-per-day + new-derivations-per-day pending-builds) (define (avg-eval-duration-row . eval-durations) (let ((spec (match eval-durations @@ -901,10 +913,16 @@ window.~a = new Chart\ ;; Scripts. (script (@ (src "/static/js/chart.js"))) ,@(make-line-chart builds-chart - (builds->json-scm builds-per-day) + (list (builds->json-scm new-derivations-per-day) + (builds->json-scm builds-per-day)) + #:interpolation? #f #:title "Builds per day" - #:color "#3e95cd") + #:legend? #t + #:labels '("New derivations" + "Builds completed") + #:colors (list "#f6dd27" "#3e95cd")) ,@(make-line-chart pending-builds-chart - (builds->json-scm pending-builds) + (list (builds->json-scm pending-builds)) #:title "Pending builds" - #:color "#3e95cd"))))) + #:labels '("Pending builds") + #:colors (list "#3e95cd")))))) |