dashboard/app: add machine-readable list of recent failures

Change-Id: I90be865aaab01701d10af57bdf1e0bee5533d3e5
Reviewed-on: https://go-review.googlesource.com/1562
Reviewed-by: Andrew Gerrand <adg@golang.org>
This commit is contained in:
Brad Fitzpatrick 2014-12-15 13:40:39 +11:00 committed by Brad Fitzpatrick
parent 40817d5f2c
commit 8d0ad68ce2
1 changed files with 23 additions and 0 deletions

View File

@ -95,6 +95,11 @@ func uiHandler(w http.ResponseWriter, r *http.Request) {
}
data := &uiTemplateData{d, pkg, commits, builders, tipState, p, branch}
if r.FormValue("mode") == "failures" {
failuresHandler(w, r, data)
return
}
var buf bytes.Buffer
if err := uiTemplate.Execute(&buf, data); err != nil {
logErr(w, r, err)
@ -106,6 +111,24 @@ func uiHandler(w http.ResponseWriter, r *http.Request) {
buf.WriteTo(w)
}
// failuresHandler is https://build.golang.org/?mode=failures , where it outputs
// one line per failure on the front page, in the form:
// hash builder failure-url
func failuresHandler(w http.ResponseWriter, r *http.Request, data *uiTemplateData) {
w.Header().Set("Content-Type", "text/plain")
d := dashboardForRequest(r)
for _, c := range data.Commits {
for _, b := range data.Builders {
res := c.Result(b, "")
if res == nil || res.OK || res.LogHash == "" {
continue
}
url := fmt.Sprintf("https://%v%v/log/%v", r.Host, d.Prefix, res.LogHash)
fmt.Fprintln(w, c.Hash, b, url)
}
}
}
type Pagination struct {
Next, Prev int
HasPrev bool