Break down the build stats by build server

This commit is contained in:
Christopher Baines 2019-12-14 20:17:53 +00:00
parent 6e9b07bc4a
commit 633e757fe8
3 changed files with 39 additions and 10 deletions

View file

@ -11,10 +11,11 @@
insert-build insert-build
ensure-build-exists)) ensure-build-exists))
(define (select-build-stats conn) (define (select-build-stats conn build-servers)
(define query (define query
" (string-append
SELECT latest_build_status.status AS build_status, COUNT(*) "
SELECT latest_build_status.status AS build_status, builds.build_server_id, COUNT(*)
FROM derivation_output_details_sets FROM derivation_output_details_sets
LEFT JOIN builds LEFT JOIN builds
ON builds.derivation_output_details_set_id = ON builds.derivation_output_details_set_id =
@ -26,10 +27,27 @@ LEFT JOIN
ORDER BY build_id, timestamp DESC ORDER BY build_id, timestamp DESC
) AS latest_build_status ) AS latest_build_status
ON builds.id = latest_build_status.build_id ON builds.id = latest_build_status.build_id
GROUP BY latest_build_status.status "
ORDER BY status") (if build-servers
(string-append
"WHERE builds.build_server_id IN ("
(string-join (map number->string build-servers)
", ")
")")
"")
"
GROUP BY latest_build_status.status, builds.build_server_id
ORDER BY status"))
(exec-query conn query)) (map (match-lambda
(((build-status) . data)
(list build-status
(map (match-lambda
((build-server-id count)
(cons (string->number build-server-id)
(string->number count))))
data))))
(group-list-by-first-n-fields 1 (exec-query conn query))))
(define (select-builds-with-context conn build-statuses build-server-ids) (define (select-builds-with-context conn build-statuses build-server-ids)
(define where-conditions (define where-conditions

View file

@ -80,7 +80,10 @@
((id url lookup-all-derivations) ((id url lookup-all-derivations)
(cons url id))) (cons url id)))
(select-build-servers conn)) (select-build-servers conn))
(select-build-stats conn) (select-build-stats
conn
(assq-ref parsed-query-parameters
'build_server))
(select-builds-with-context (select-builds-with-context
conn conn
(assq-ref parsed-query-parameters (assq-ref parsed-query-parameters

View file

@ -42,14 +42,22 @@
(thead (thead
(tr (tr
(th (@ (class "col-md-2")) "Status") (th (@ (class "col-md-2")) "Status")
(th (@ (class "col-md-2")) "Count"))) ,@(map (match-lambda
((url . id)
`(th (@ (class "col-md-2"))
,url)))
build-server-options)))
(tbody (tbody
,@(map ,@(map
(match-lambda (match-lambda
((status count) ((status counts-by-build-server-id)
`(tr `(tr
(td ,(build-status-span status)) (td ,(build-status-span status))
(td ,count)))) ,@(map (lambda (id)
`(td ,(or (assq-ref counts-by-build-server-id
id)
0)))
(map cdr build-server-options)))))
stats))))) stats)))))
(div (div
(@ (class "row")) (@ (class "row"))