| Index: perf/go/skiaperf/main.go
|
| diff --git a/perf/go/skiaperf/main.go b/perf/go/skiaperf/main.go
|
| index 3bc30059ccb0dec945a75415fe4e4d984eeda666..a9db55032d9bcb8bcb5e25ab7a2e51c57961bd7a 100644
|
| --- a/perf/go/skiaperf/main.go
|
| +++ b/perf/go/skiaperf/main.go
|
| @@ -19,19 +19,19 @@ import (
|
| "github.com/gorilla/mux"
|
| "github.com/skia-dev/glog"
|
| "go.skia.org/infra/go/common"
|
| - "go.skia.org/infra/go/filetilestore"
|
| "go.skia.org/infra/go/gitinfo"
|
| "go.skia.org/infra/go/human"
|
| "go.skia.org/infra/go/ingester"
|
| "go.skia.org/infra/go/login"
|
| "go.skia.org/infra/go/tiling"
|
| + "go.skia.org/infra/go/trace/db"
|
| "go.skia.org/infra/go/util"
|
| "go.skia.org/infra/perf/go/activitylog"
|
| "go.skia.org/infra/perf/go/alerting"
|
| "go.skia.org/infra/perf/go/annotate"
|
| "go.skia.org/infra/perf/go/clustering"
|
| "go.skia.org/infra/perf/go/config"
|
| - "go.skia.org/infra/perf/go/db"
|
| + idb "go.skia.org/infra/perf/go/db"
|
| "go.skia.org/infra/perf/go/parser"
|
| "go.skia.org/infra/perf/go/shortcut"
|
| "go.skia.org/infra/perf/go/stats"
|
| @@ -85,15 +85,15 @@ var (
|
| port = flag.String("port", ":8000", "HTTP service address (e.g., ':8000')")
|
| local = flag.Bool("local", false, "Running locally if true. As opposed to in production.")
|
| gitRepoDir = flag.String("git_repo_dir", "../../../skia", "Directory location for the Skia repo.")
|
| - tileStoreDir = flag.String("tile_store_dir", "/tmp/tileStore", "What directory to look for tiles in.")
|
| graphiteServer = flag.String("graphite_server", "skia-monitoring:2003", "Where is Graphite metrics ingestion server running.")
|
| apikey = flag.String("apikey", "", "The API Key used to make issue tracker requests. Only for local testing.")
|
| gitRepoURL = flag.String("git_repo_url", "https://skia.googlesource.com/skia", "The URL to pass to git clone for the source repository.")
|
| resourcesDir = flag.String("resources_dir", "", "The directory to find templates, JS, and CSS files. If blank the current directory will be used.")
|
| + traceservice = flag.String("trace_service", "localhost:9090", "The address of the traceservice endpoint.")
|
| )
|
|
|
| var (
|
| - nanoTileStore tiling.TileStore
|
| + nanoTileStore *db.Builder
|
|
|
| templates *template.Template
|
| )
|
| @@ -135,13 +135,15 @@ func Init() {
|
|
|
| loadTemplates()
|
|
|
| - nanoTileStore = filetilestore.NewFileTileStore(*tileStoreDir, config.DATASET_NANO, 2*time.Minute)
|
| -
|
| var err error
|
| git, err = gitinfo.CloneOrUpdate(*gitRepoURL, *gitRepoDir, false)
|
| if err != nil {
|
| glog.Fatal(err)
|
| }
|
| + nanoTileStore, err = db.NewBuilder(git, *traceservice, config.INITIAL_TILE_SIZE, types.PerfTraceBuilder)
|
| + if err != nil {
|
| + glog.Fatalf("Failed to build trace/db.DB: %s", err)
|
| + }
|
| }
|
|
|
| // showcutHandler handles the POST requests of the shortcut page.
|
| @@ -211,12 +213,7 @@ func trybotHandler(w http.ResponseWriter, r *http.Request) {
|
| func alertingHandler(w http.ResponseWriter, r *http.Request) {
|
| glog.Infof("Alerting Handler: %q\n", r.URL.Path)
|
| w.Header().Set("Content-Type", "application/json")
|
| - tile, err := nanoTileStore.Get(0, -1)
|
| - if err != nil {
|
| - util.ReportError(w, r, err, fmt.Sprintf("Failed to load tile."))
|
| - return
|
| - }
|
| -
|
| + tile := nanoTileStore.GetTile()
|
| alerts, err := alerting.ListFrom(tile.Commits[0].CommitTime)
|
| if err != nil {
|
| util.ReportError(w, r, err, "Error retrieving cluster summaries.")
|
| @@ -352,11 +349,7 @@ func writeClusterSummaries(summary *clustering.ClusterSummaries, w http.Response
|
| func kernelJSONHandler(w http.ResponseWriter, r *http.Request) {
|
| // TODO(jcgregorio) Determine the tile(s) to load based on the commit hashes,
|
| // possibly loading two different tiles, one for each hash.
|
| - tile, err := nanoTileStore.Get(0, -1)
|
| - if err != nil {
|
| - util.ReportError(w, r, err, fmt.Sprintf("Failed to load tile."))
|
| - return
|
| - }
|
| + tile := nanoTileStore.GetTile()
|
| commit1 := r.FormValue("commit1")
|
| commit2 := r.FormValue("commit2")
|
|
|
| @@ -375,7 +368,7 @@ func kernelJSONHandler(w http.ResponseWriter, r *http.Request) {
|
| }
|
| if commit1Index == -1 || commit2Index == -1 {
|
| glog.Warningf("Commits %s[%d] %s[%d]", commit1, commit1Index, commit2, commit2Index)
|
| - util.ReportError(w, r, err, fmt.Sprintf("Failed to find commits in tile."))
|
| + util.ReportError(w, r, fmt.Errorf("Failed to find commits in tile."), fmt.Sprintf("Failed to find commits in tile."))
|
| return
|
| }
|
| w.Header().Set("Content-Type", "application/json")
|
| @@ -450,11 +443,7 @@ func kernelJSONHandler(w http.ResponseWriter, r *http.Request) {
|
| // sk.Query.selectionsAsQuery().
|
| func clusteringHandler(w http.ResponseWriter, r *http.Request) {
|
| glog.Infof("Clustering Handler: %q\n", r.URL.Path)
|
| - tile, err := nanoTileStore.Get(0, -1)
|
| - if err != nil {
|
| - util.ReportError(w, r, err, fmt.Sprintf("Failed to load tile."))
|
| - return
|
| - }
|
| + tile := nanoTileStore.GetTile()
|
| w.Header().Set("Content-Type", "application/json")
|
| // If there are no query parameters just return with an empty set of ClusterSummaries.
|
| if r.FormValue("_k") == "" || r.FormValue("_stddev") == "" {
|
| @@ -513,17 +502,6 @@ func clusteringHandler(w http.ResponseWriter, r *http.Request) {
|
| writeClusterSummaries(summary, w, r)
|
| }
|
|
|
| -// getTile retrieves a tile from the disk
|
| -func getTile(tileScale, tileNumber int) (*tiling.Tile, error) {
|
| - start := time.Now()
|
| - tile, err := nanoTileStore.Get(int(tileScale), int(tileNumber))
|
| - glog.Infoln("Time for tile load: ", time.Since(start).Nanoseconds())
|
| - if err != nil || tile == nil {
|
| - return nil, fmt.Errorf("Unable to get tile from tilestore: %s", err)
|
| - }
|
| - return tile, nil
|
| -}
|
| -
|
| // tileHandler accepts URIs like /tiles/0/1
|
| // where the URI format is /tiles/<tile-scale>/<tile-number>
|
| //
|
| @@ -575,12 +553,7 @@ func tileHandler(w http.ResponseWriter, r *http.Request) {
|
| return
|
| }
|
| glog.Infof("tile: %d %d", tileScale, tileNumber)
|
| - tile, err := getTile(int(tileScale), int(tileNumber))
|
| - if err != nil {
|
| - util.ReportError(w, r, err, "Failed retrieving tile.")
|
| - return
|
| - }
|
| -
|
| + tile := nanoTileStore.GetTile()
|
| guiTile := tiling.NewTileGUI(tile.Scale, tile.TileIndex)
|
| guiTile.Commits = tile.Commits
|
| guiTile.ParamSet = tile.ParamSet
|
| @@ -714,11 +687,7 @@ func queryHandler(w http.ResponseWriter, r *http.Request) {
|
| return
|
| }
|
| glog.Infof("tile: %d %d", tileScale, tileNumber)
|
| - tile, err := getTile(int(tileScale), int(tileNumber))
|
| - if err != nil {
|
| - util.ReportError(w, r, err, "Failed retrieving tile.")
|
| - return
|
| - }
|
| + tile := nanoTileStore.GetTile()
|
| w.Header().Set("Content-Type", "application/json")
|
| ret := &QueryResponse{
|
| Traces: []*tiling.TraceGUI{},
|
| @@ -837,11 +806,7 @@ func singleHandler(w http.ResponseWriter, r *http.Request) {
|
| idx = -1
|
| }
|
| glog.Infof("Hash: %s tileNum: %d, idx: %d\n", hash, tileNum, idx)
|
| - tile, err := getTile(0, tileNum)
|
| - if err != nil {
|
| - util.ReportError(w, r, err, "Failed retrieving tile.")
|
| - return
|
| - }
|
| + tile := nanoTileStore.GetTile()
|
|
|
| if idx < 0 {
|
| idx = len(tile.Commits) - 1 // Defaults to the last slice element.
|
| @@ -944,11 +909,7 @@ func addFlatCalculatedTraces(qr *FlatQueryResponse, tile *tiling.Tile, formula s
|
| func calcHandler(w http.ResponseWriter, r *http.Request) {
|
| glog.Infof("Calc Handler: %q\n", r.URL.Path)
|
| w.Header().Set("Content-Type", "application/json")
|
| - tile, err := nanoTileStore.Get(0, -1)
|
| - if err != nil {
|
| - util.ReportError(w, r, err, fmt.Sprintf("Failed to load tile."))
|
| - return
|
| - }
|
| + tile := nanoTileStore.GetTile()
|
| formula := r.FormValue("formula")
|
|
|
| var data interface{} = nil
|
| @@ -1106,7 +1067,7 @@ func makeResourceHandler() func(http.ResponseWriter, *http.Request) {
|
| func main() {
|
| defer common.LogPanic()
|
| // Setup DB flags.
|
| - dbConf := db.DBConfigFromFlags()
|
| + dbConf := idb.DBConfigFromFlags()
|
|
|
| common.InitWithMetrics("skiaperf", graphiteServer)
|
| Init()
|
|
|