Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(275)

Side by Side Diff: go/src/infra/appengine/test-results/frontend/builderstate.go

Issue 2251613002: test-results: builders and builderstate: bug fixes, tests (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@cl-ing_upload
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 package frontend 1 package frontend
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
5 "io" 5 "io"
6 "net/http" 6 "net/http"
7 "time" 7 "time"
8 8
9 "github.com/luci/gae/service/memcache" 9 "github.com/luci/gae/service/memcache"
10 "github.com/luci/luci-go/common/logging" 10 "github.com/luci/luci-go/common/logging"
11 "github.com/luci/luci-go/server/router" 11 "github.com/luci/luci-go/server/router"
12 12
13 "infra/appengine/test-results/builderstate" 13 "infra/appengine/test-results/builderstate"
14 ) 14 )
15 15
16 // refreshFunc is the function that is called to update cached data 16 // refreshFunc is the function that is called to update cached data
17 // or on cache miss. 17 // or on cache miss.
18 // It is global to allow mocking in tests. 18 // It is global to allow mocking in tests.
19 var refreshFunc = builderstate.RefreshCache 19 var refreshFunc = builderstate.RefreshCache
20 20
21 // GetBuilderState gets data from the builder state memcache 21 // getBuilderStateHandler gets data from the builder state memcache
22 // and serves it as JSON. 22 // and serves it as JSON.
23 func GetBuilderState(ctx *router.Context) { 23 func getBuilderStateHandler(ctx *router.Context) {
24 c, w := ctx.Context, ctx.Writer 24 c, w := ctx.Context, ctx.Writer
25 25
26 item, err := memcache.Get(c).Get(builderstate.MemcacheKey) 26 item, err := memcache.Get(c).Get(builderstate.MemcacheKey)
27 27
28 if err != nil { 28 if err != nil {
29 item, err = refreshFunc(c) 29 item, err = refreshFunc(c)
30 if err != nil { 30 if err != nil {
31 if err == memcache.ErrCacheMiss { 31 if err == memcache.ErrCacheMiss {
32 err = fmt.Errorf("builderstate: builder data not generated: %v", err) 32 err = fmt.Errorf("builderstate: builder data not generated: %v", err)
33 } 33 }
34 logging.Errorf(c, err.Error()) 34 logging.Errorf(c, err.Error())
35 http.Error(w, err.Error(), http.StatusInternalServerErro r) 35 http.Error(w, err.Error(), http.StatusInternalServerErro r)
36 return 36 return
37 } 37 }
38 } 38 }
39 39
40 start := time.Now() 40 start := time.Now()
41 41
42 w.Header().Set("Content-Type", "application/json") 42 w.Header().Set("Content-Type", "application/json")
43 w.Header().Set("Access-Control-Allow-Origin", "*") 43 w.Header().Set("Access-Control-Allow-Origin", "*")
44 n, err := w.Write(item.Value()) 44 n, err := w.Write(item.Value())
45 45
46 if err != nil { 46 if err != nil {
47 logging.Errorf(c, "error writing response: wrote %d bytes of %s, %s", n, item.Value(), err) 47 logging.Errorf(c, "error writing response: wrote %d bytes of %s, %s", n, item.Value(), err)
48 } 48 }
49 49
50 logging.Debugf(c, "took %s to write response", time.Since(start)) 50 logging.Debugf(c, "took %s to write response", time.Since(start))
51 } 51 }
52 52
53 // UpdateBuilderState refreshes data in the builder state 53 // updateBuilderStateHandler refreshes data in the builder state
54 // memcache. 54 // memcache.
55 func UpdateBuilderState(ctx *router.Context) { 55 func updateBuilderStateHandler(ctx *router.Context) {
56 c, w := ctx.Context, ctx.Writer 56 c, w := ctx.Context, ctx.Writer
57 _, err := refreshFunc(c) 57 _, err := refreshFunc(c)
58 58
59 if err != nil { 59 if err != nil {
60 logging.Errorf(c, err.Error()) 60 logging.Errorf(c, err.Error())
61 w.WriteHeader(http.StatusInternalServerError) 61 w.WriteHeader(http.StatusInternalServerError)
62 io.WriteString(w, err.Error()) 62 io.WriteString(w, err.Error())
63 return 63 return
64 } 64 }
65 65
66 n, err := io.WriteString(w, "OK") 66 n, err := io.WriteString(w, "OK")
67 67
68 if err != nil { 68 if err != nil {
69 logging.Errorf(c, "error writing response: wrote %d bytes of %s, %s", n, "OK", err) 69 logging.Errorf(c, "error writing response: wrote %d bytes of %s, %s", n, "OK", err)
70 } 70 }
71 } 71 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698