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

Unified Diff: golden/go/skiacorrectness/main.go

Issue 884943003: Ignore traces (Closed) Base URL: https://skia.googlesource.com/buildbot@master
Patch Set: Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « golden/go/filediffstore/filediffstore.go ('k') | golden/go/types/ignorestore.go » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: golden/go/skiacorrectness/main.go
diff --git a/golden/go/skiacorrectness/main.go b/golden/go/skiacorrectness/main.go
index dbe04e60e21c2a1f25a025035b9c6177f56ecbc8..fcb41bbc4fff8cf06700c104ae65445e241c77cf 100644
--- a/golden/go/skiacorrectness/main.go
+++ b/golden/go/skiacorrectness/main.go
@@ -70,7 +70,10 @@ type ResponseEnvelope struct {
Status int `json:"status"`
}
-var analyzer *analysis.Analyzer = nil
+var (
+ analyzer *analysis.Analyzer = nil
+ ignoreStore types.IgnoreStore
+)
// *****************************************************************************
// *****************************************************************************
@@ -135,60 +138,15 @@ func polyListTestsHandler(w http.ResponseWriter, r *http.Request) {
}
}
-// IgnoreRule is the GUI struct for dealing with Ignore rules.
-type IgnoreRule struct {
- ID string `json:"id"`
- Name string `json:"name"`
- Expires time.Time `json:"expires"`
- Query string `json:"query"`
- Note string `json:"note"`
- Count int `json:"count"`
-}
-
-// ignores is an in memory database of ignore rules.
-//
-// TODO replace with a database.
-var ignores = []*IgnoreRule{
- &IgnoreRule{
- ID: "1",
- Name: "jcgregorio@google.com",
- Expires: time.Now().Add(time.Hour),
- Query: "config=gpu",
- Note: "Because",
- Count: 354,
- },
- &IgnoreRule{
- ID: "2",
- Name: "jcgregorio@google.com",
- Expires: time.Now().Add(2 * time.Hour * 24),
- Query: "arch=x86&bench_type=playback&config=8888&extra_config=GDI&os=Android",
- Note: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod",
- Count: 12,
- },
-}
-
-// deleteIgnoreRule deletes an Ignore rule.
-//
-// TODO replace with database action.
-func deleteIgnoreRule(id string) {
- for i, r := range ignores {
- if r.ID == id {
- ignores = append(ignores[:i], ignores[i+1:]...)
- break
- }
- }
-}
-
-// addIgnoreRule adds the IgnoreRule to the database.
-//
-// TODO replace with database action.
-func addIgnoreRule(ig *IgnoreRule) {
- ignores = append(ignores, ig)
-}
-
// polyIgnoresJSONHandler returns the current ignore rules in JSON format.
func polyIgnoresJSONHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
+ ignores, err := analyzer.ListIgnoreRules()
+ if err != nil {
+ util.ReportError(w, r, err, "Failed to retrieve ignored traces.")
+ }
+
+ // TODO(stephana): Wrap in response envelope if it makes sense !
enc := json.NewEncoder(w)
if err := enc.Encode(ignores); err != nil {
util.ReportError(w, r, err, "Failed to encode result")
@@ -201,16 +159,21 @@ func polyIgnoresDeleteHandler(w http.ResponseWriter, r *http.Request) {
util.ReportError(w, r, fmt.Errorf("Not logged in."), "You must be logged in to add an ignore rule.")
return
}
- id := mux.Vars(r)["id"]
- deleteIgnoreRule(id)
- w.Header().Set("Content-Type", "application/json")
- enc := json.NewEncoder(w)
- if err := enc.Encode(ignores); err != nil {
- util.ReportError(w, r, err, "Failed to encode result")
+ id, err := strconv.ParseInt(mux.Vars(r)["id"], 10, 0)
+ if err != nil {
+ util.ReportError(w, r, err, "ID must be valid integer.")
+ return
+ }
+
+ if err := analyzer.DeleteIgnoreRule(int(id), user); err != nil {
+ util.ReportError(w, r, err, "Unable to delete ignore rule.")
+ } else {
+ // If delete worked just list the current ignores and return them.
+ polyIgnoresJSONHandler(w, r)
}
}
-type IngoresAddRequest struct {
+type IgnoresAddRequest struct {
Duration string `json:"duration"`
Filter string `json:"filter"`
Note string `json:"note"`
@@ -225,9 +188,9 @@ func polyIgnoresAddHandler(w http.ResponseWriter, r *http.Request) {
util.ReportError(w, r, fmt.Errorf("Not logged in."), "You must be logged in to add an ignore rule.")
return
}
- req := &IngoresAddRequest{}
+ req := &IgnoresAddRequest{}
if err := parseJson(r, req); err != nil {
- util.ReportError(w, r, err, "Failed to decode result")
+ util.ReportError(w, r, err, "Failed to parse submitted data.")
return
}
parsed := durationRe.FindStringSubmatch(req.Duration)
@@ -254,19 +217,18 @@ func polyIgnoresAddHandler(w http.ResponseWriter, r *http.Request) {
case 'w':
d = time.Duration(n) * 7 * 24 * time.Hour
}
- ig := &IgnoreRule{
- ID: "foo",
- Name: user,
- Expires: time.Now().Add(d),
- Query: req.Filter,
- Note: req.Note,
+ ignoreRule := types.NewIgnoreRule(user, time.Now().Add(d), req.Filter, req.Note)
+ if err != nil {
+ util.ReportError(w, r, err, "Failed to create ignore rule.")
+ return
}
- addIgnoreRule(ig)
- w.Header().Set("Content-Type", "application/json")
- enc := json.NewEncoder(w)
- if err := enc.Encode(ignores); err != nil {
- util.ReportError(w, r, err, "Failed to encode result")
+
+ if err := analyzer.AddIgnoreRule(ignoreRule); err != nil {
+ util.ReportError(w, r, err, "Failed to create ignore rule.")
+ return
}
+
+ polyIgnoresJSONHandler(w, r)
}
// polyIgnoresHandler is for setting up ignores rules.
@@ -554,11 +516,12 @@ func main() {
}
vdb := database.NewVersionedDB(conf)
expStore := expstorage.NewCachingExpectationStore(expstorage.NewSQLExpectationStore(vdb))
+ ignoreStore = types.NewSQLIgnoreStore(vdb)
tileStore := filetilestore.NewFileTileStore(*tileStoreDir, "golden", -1)
// Initialize the Analyzer
imgFS := NewURLAwareFileServer(*imageDir, IMAGE_URL_PREFIX)
- analyzer = analysis.NewAnalyzer(expStore, tileStore, diffStore, imgFS.GetURL, 10*time.Minute)
+ analyzer = analysis.NewAnalyzer(expStore, tileStore, diffStore, ignoreStore, imgFS.GetURL, 10*time.Minute)
router := mux.NewRouter()
« no previous file with comments | « golden/go/filediffstore/filediffstore.go ('k') | golden/go/types/ignorestore.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698