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

Side by Side Diff: perf/server/perf.go

Issue 335833002: Start loading the BigQuery data and serving it to the UI. (Closed) Base URL: https://skia.googlesource.com/buildbot.git@master
Patch Set: Created 6 years, 6 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
« no previous file with comments | « perf/server/data.go ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be found
3 // in the LICENSE file.
4
1 package main 5 package main
2 6
3 import ( 7 import (
4 "database/sql" 8 "database/sql"
5 "flag" 9 "flag"
6 "fmt" 10 "fmt"
7 "html/template" 11 "html/template"
8 "io/ioutil" 12 "io/ioutil"
9 "log" 13 "log"
10 "math/rand" 14 "math/rand"
(...skipping 12 matching lines...) Expand all
23 var ( 27 var (
24 // indexTemplate is the main index.html page we serve. 28 // indexTemplate is the main index.html page we serve.
25 indexTemplate *template.Template = nil 29 indexTemplate *template.Template = nil
26 30
27 // db is the database, nil if we don't have an SQL database to store dat a into. 31 // db is the database, nil if we don't have an SQL database to store dat a into.
28 db *sql.DB = nil 32 db *sql.DB = nil
29 ) 33 )
30 34
31 // flags 35 // flags
32 var ( 36 var (
33 » port = flag.String("port", ":8000", "HTTP service address (e.g., ':8000' )") 37 » port = flag.String("port", ":8000", "HTTP service address (e.g., ' :8000')")
38 » doOauth = flag.Bool("oauth", true, "Run through the OAuth 2.0 flow on startup.")
39 » gitRepoDir = flag.String("git_repo_dir", "../../../skia", "Directory loc ation for the Skia repo.")
40 )
41
42 var (
43 » data *Data
34 ) 44 )
35 45
36 func init() { 46 func init() {
37 rand.Seed(time.Now().UnixNano()) 47 rand.Seed(time.Now().UnixNano())
38 48
39 // Change the current working directory to the directory of the executab le. 49 // Change the current working directory to the directory of the executab le.
40 var err error 50 var err error
41 cwd, err := filepath.Abs(filepath.Dir(os.Args[0])) 51 cwd, err := filepath.Abs(filepath.Dir(os.Args[0]))
42 if err != nil { 52 if err != nil {
43 log.Fatalln(err) 53 log.Fatalln(err)
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 }() 99 }()
90 } 100 }
91 101
92 // reportError formats an HTTP error response and also logs the detailed error m essage. 102 // reportError formats an HTTP error response and also logs the detailed error m essage.
93 func reportError(w http.ResponseWriter, r *http.Request, err error, message stri ng) { 103 func reportError(w http.ResponseWriter, r *http.Request, err error, message stri ng) {
94 log.Println("Error:", message, err) 104 log.Println("Error:", message, err)
95 w.Header().Set("Content-Type", "text/plain") 105 w.Header().Set("Content-Type", "text/plain")
96 http.Error(w, message, 500) 106 http.Error(w, message, 500)
97 } 107 }
98 108
109 // jsonHandler handles the GET for the JSON requests.
110 func jsonHandler(w http.ResponseWriter, r *http.Request) {
111 log.Printf("JSON Handler: %q\n", r.URL.Path)
112 if r.Method == "GET" {
113 w.Header().Set("Content-Type", "application/json")
114 data.AsJSON(w)
115 }
116 }
117
99 // mainHandler handles the GET and POST of the main page. 118 // mainHandler handles the GET and POST of the main page.
100 func mainHandler(w http.ResponseWriter, r *http.Request) { 119 func mainHandler(w http.ResponseWriter, r *http.Request) {
101 log.Printf("Main Handler: %q\n", r.URL.Path) 120 log.Printf("Main Handler: %q\n", r.URL.Path)
102 if r.Method == "GET" { 121 if r.Method == "GET" {
103 w.Header().Set("Content-Type", "text/html") 122 w.Header().Set("Content-Type", "text/html")
104 if err := indexTemplate.Execute(w, struct{}{}); err != nil { 123 if err := indexTemplate.Execute(w, struct{}{}); err != nil {
105 log.Println("ERROR: Failed to expand template:", err) 124 log.Println("ERROR: Failed to expand template:", err)
106 } 125 }
107 } 126 }
108 } 127 }
109 128
110 func main() { 129 func main() {
111 flag.Parse() 130 flag.Parse()
131
132 log.Println("Begin loading data.")
133 var err error
134 data, err = NewData(*doOauth, *gitRepoDir)
135 if err != nil {
136 log.Fatalln("Failed initial load of data from BigQuery: ", err)
137 }
138
112 // Resources are served directly. 139 // Resources are served directly.
113 http.Handle("/res/", autogzip.Handle(http.FileServer(http.Dir("./")))) 140 http.Handle("/res/", autogzip.Handle(http.FileServer(http.Dir("./"))))
114 141
115 http.HandleFunc("/", autogzip.HandleFunc(mainHandler)) 142 http.HandleFunc("/", autogzip.HandleFunc(mainHandler))
143 http.HandleFunc("/json/", autogzip.HandleFunc(jsonHandler))
144
145 log.Println("Ready to serve.")
116 log.Fatal(http.ListenAndServe(*port, nil)) 146 log.Fatal(http.ListenAndServe(*port, nil))
117 } 147 }
OLDNEW
« no previous file with comments | « perf/server/data.go ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698