summaryrefslogtreecommitdiff
path: root/chromium/third_party/WebKit/Tools/RebaselineLogServer/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Tools/RebaselineLogServer/main.py')
-rw-r--r--chromium/third_party/WebKit/Tools/RebaselineLogServer/main.py143
1 files changed, 0 insertions, 143 deletions
diff --git a/chromium/third_party/WebKit/Tools/RebaselineLogServer/main.py b/chromium/third_party/WebKit/Tools/RebaselineLogServer/main.py
deleted file mode 100644
index 9211df34f97..00000000000
--- a/chromium/third_party/WebKit/Tools/RebaselineLogServer/main.py
+++ /dev/null
@@ -1,143 +0,0 @@
-# Copyright (C) 2013 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import datetime
-import logging
-import webapp2
-
-from google.appengine.ext import ndb
-from google.appengine.ext.webapp import template
-
-# A simple log server for rebaseline-o-matic.
-#
-# Accepts updates to the same log entry and shows a simple status page.
-# Has a special state for the case where there are no NeedsRebaseline
-# lines in TestExpectations to avoid cluttering the log with useless
-# entries every 30 seconds.
-#
-# Other than that, new updatelog calls append to the most recent log
-# entry until they have the newentry parameter, in which case, it
-# starts a new log entry.
-
-LOG_PARAM = "log"
-NEW_ENTRY_PARAM = "newentry"
-NO_NEEDS_REBASELINE_PARAM = "noneedsrebaseline"
-NUM_LOGS_PARAM = "numlogs"
-BEFORE_PARAM = "before"
-
-
-class LogEntry(ndb.Model):
- content = ndb.TextProperty()
- date = ndb.DateTimeProperty(auto_now_add=True)
- is_no_needs_rebaseline = ndb.BooleanProperty()
-
-
-def logs_query():
- return LogEntry.query().order(-LogEntry.date)
-
-
-class UpdateLog(webapp2.RequestHandler):
- def post(self):
- new_log_data = self.request.POST.get(LOG_PARAM)
- # This entry is set to on whenever a new auto-rebaseline run is going to
- # start logging entries. If this is not on, then the log will get appended
- # to the most recent log entry.
- new_entry = self.request.POST.get(NEW_ENTRY_PARAM) == "on"
- # The case of no NeedsRebaseline lines in TestExpectations is special-cased
- # to always overwrite the previous noneedsrebaseline entry in the log to
- # avoid cluttering the log with useless empty posts. It just updates the
- # date of the entry so that users can see that rebaseline-o-matic is still
- # running.
- no_needs_rebaseline = self.request.POST.get(NO_NEEDS_REBASELINE_PARAM) == "on"
-
- out = "Wrote new log entry."
- if not new_entry or no_needs_rebaseline:
- log_entries = logs_query().fetch(1)
- if log_entries:
- log_entry = log_entries[0]
- log_entry.date = datetime.datetime.now()
- if no_needs_rebaseline:
- # Don't write out a new log entry for repeated no_needs_rebaseline cases.
- # The repeated entries just add noise to the logs.
- if log_entry.is_no_needs_rebaseline:
- out = "Overwrote existing no needs rebaseline log."
- else:
- out = "Wrote new no needs rebaseline log."
- new_entry = True
- new_log_data = ""
- elif log_entry.is_no_needs_rebaseline:
- out = "Previous entry was a no need rebaseline log. Writing a new log."
- new_entry = True
- else:
- out = "Added to existing log entry."
- log_entry.content = log_entry.content + "\n" + new_log_data
-
- if new_entry or not log_entries:
- log_entry = LogEntry(content=new_log_data, is_no_needs_rebaseline=no_needs_rebaseline)
-
- log_entry.put()
- self.response.out.write(out)
-
-
-class UploadForm(webapp2.RequestHandler):
- def get(self):
- self.response.out.write(template.render("uploadform.html", {
- "update_log_url": "/updatelog",
- "set_no_needs_rebaseline_url": "/noneedsrebaselines",
- "log_param": LOG_PARAM,
- "new_entry_param": NEW_ENTRY_PARAM,
- "no_needs_rebaseline_param": NO_NEEDS_REBASELINE_PARAM,
- }))
-
-
-class ShowLatest(webapp2.RequestHandler):
- def get(self):
- query = logs_query()
-
- before = self.request.get(BEFORE_PARAM)
- if before:
- date = datetime.datetime.strptime(before, "%Y-%m-%dT%H:%M:%SZ")
- query = query.filter(LogEntry.date < date)
-
- num_logs = self.request.get(NUM_LOGS_PARAM)
- logs = query.fetch(int(num_logs) if num_logs else 3)
-
- self.response.out.write(template.render("logs.html", {
- "logs": logs,
- "num_logs_param": NUM_LOGS_PARAM,
- "before_param": BEFORE_PARAM,
- }))
-
-
-routes = [
- ('/uploadform', UploadForm),
- ('/updatelog', UpdateLog),
- ('/', ShowLatest),
-]
-
-app = webapp2.WSGIApplication(routes, debug=True)