Changeset 114460 in webkit


Ignore:
Timestamp:
Apr 17, 2012, 4:08:05 PM (13 years ago)
Author:
ojan@chromium.org
Message:

Add caching to the flakiness dashboard json files
https://bugs.webkit.org/show_bug.cgi?id=84198

Reviewed by Dirk Pranke.

  • TestResultServer/handlers/testfilehandler.py:

(GetFile._get_file_list):
(GetFile._get_file_content):
(GetFile._get_file_content_from_key):
(GetFile._get_test_list_json):
(GetFile._serve_json):
Add a Last-Modified header and handle If-Modified-Since headers.
(GetFile.get):

Location:
trunk/Tools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r114451 r114460  
     12012-04-17  Ojan Vafai  <ojan@chromium.org>
     2
     3        Add caching to the flakiness dashboard json files
     4        https://bugs.webkit.org/show_bug.cgi?id=84198
     5
     6        Reviewed by Dirk Pranke.
     7
     8        * TestResultServer/handlers/testfilehandler.py:
     9        (GetFile._get_file_list):
     10        (GetFile._get_file_content):
     11        (GetFile._get_file_content_from_key):
     12        (GetFile._get_test_list_json):
     13        (GetFile._serve_json):
     14        Add a Last-Modified header and handle If-Modified-Since headers.
     15        (GetFile.get):
     16
    1172012-04-17  Anders Carlsson  <andersca@apple.com>
    218
  • trunk/Tools/TestResultServer/handlers/testfilehandler.py

    r100865 r114460  
    2727# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    2828
     29import time
    2930import logging
    3031import re
     
    111112        if callback_name:
    112113            json = template.render("templates/showfilelist.jsonp", template_values)
    113             self._serve_json(_replace_jsonp_callback(json, callback_name))
     114            self._serve_json(_replace_jsonp_callback(json, callback_name), files[0].date)
    114115            return
    115116        self.response.out.write(template.render("templates/showfilelist.html",
     
    130131            logging.info("File not found, master %s, builder: %s, test_type: %s, name: %s.",
    131132                         master, builder, test_type, name)
    132             return None
    133 
    134         return files[0].data
     133            return None, None
     134
     135        return files[0].data, files[0].date
    135136
    136137    def _get_file_content_from_key(self, key):
     
    142143
    143144        file.load_data()
    144         return file.data
     145        return file.data, file.date
    145146
    146147    def _get_test_list_json(self, master, builder, test_type):
     
    153154        """
    154155
    155         json = self._get_file_content(master, builder, test_type, "results.json")
     156        json, date = self._get_file_content(master, builder, test_type, "results.json")
    156157        if not json:
    157158            return None
    158159
    159         return JsonResults.get_test_list(builder, json)
    160 
    161     def _serve_json(self, json):
     160        return JsonResults.get_test_list(builder, json), date
     161
     162    def _serve_json(self, json, modified_date):
    162163        if json:
     164            if "If-Modified-Since" in self.request.headers:
     165                old_date = self.request.headers["If-Modified-Since"]
     166                if time.strptime(old_date, '%a, %d %b %Y %H:%M:%S %Z') == modified_date.utctimetuple():
     167                    self.response.set_status(304)
     168                    return
     169
     170            # The appengine datetime objects are naive, so they lack a timezone.
     171            # In practice, appengine seems to use GMT.
     172            self.response.headers["Last-Modified"] = modified_date.strftime('%a, %d %b %Y %H:%M:%S') + ' GMT'
    163173            self.response.headers["Content-Type"] = "application/json"
    164174            self.response.out.write(json)
     
    188198
    189199        if key:
    190             json = self._get_file_content_from_key(key)
     200            json, date = self._get_file_content_from_key(key)
    191201        elif name == "results.json" and test_list_json:
    192             json = self._get_test_list_json(master, builder, test_type)
     202            json, date = self._get_test_list_json(master, builder, test_type)
    193203        else:
    194             json = self._get_file_content(master, builder, test_type, name)
    195 
    196         self._serve_json(_replace_jsonp_callback(json, callback_name))
     204            json, date = self._get_file_content(master, builder, test_type, name)
     205
     206        self._serve_json(_replace_jsonp_callback(json, callback_name), date)
    197207
    198208
Note: See TracChangeset for help on using the changeset viewer.