Changeset 56635 in webkit
- Timestamp:
- Mar 26, 2010 11:14:42 AM (14 years ago)
- Location:
- trunk/WebKitTools
- Files:
-
- 4 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebKitTools/ChangeLog
r56632 r56635 1 2010-03-26 Victor Wang <victorw@chromium.org> 2 3 Reviewed by Adam Barth. 4 5 Host layout test flakiness dashboard in TestResultServer appengine. 6 7 Flakiness dashboard is a tool to monitor layout test status and 8 help layout test regression diagnostics. 9 10 https://bugs.webkit.org/show_bug.cgi?id=36195 11 12 * TestResultServer/handlers/dashboardhandler.py: Added. 13 - New handler to handle dashboard request 14 * TestResultServer/handlers/menu.py: 15 - Add new dashboard links 16 * TestResultServer/handlers/testfilehandler.py: 17 - Request routes refactory 18 * TestResultServer/index.yaml: 19 * TestResultServer/main.py: 20 - Add new dashboard request routes and refactor test result file rountes. 21 * TestResultServer/model/dashboardfile.py: Added. 22 - Model to access datastore for dashboard files 23 * TestResultServer/model/testfile.py: 24 * TestResultServer/stylesheets/dashboardfile.css: Added. 25 * TestResultServer/templates/dashboardfilelist.html: Added. 26 * TestResultServer/templates/showfilelist.html: 27 1 28 2010-03-26 Adam Barth <abarth@webkit.org> 2 29 -
trunk/WebKitTools/TestResultServer/app.yaml
r55960 r56635 8 8 static_dir: stylesheets 9 9 10 - url: /testfile/delete 11 script: main.py 12 login: admin 13 14 - url: /dashboards/delete 15 script: main.py 16 login: admin 17 10 18 - url: /.* 11 19 script: main.py -
trunk/WebKitTools/TestResultServer/handlers/menu.py
r55960 r56635 31 31 32 32 menu = [ 33 ["List of files", "/getfile"], 34 ["List of results.json files", "/getfile?name=results.json"], 35 ["List of expectations.json files", "/getfile?name=expectations.json"], 36 ["Upload file", "/uploadform"], 33 ["List of test files", "/testfile"], 34 ["List of results.json files", "/testfile?name=results.json"], 35 ["List of expectations.json files", "/testfile?name=expectations.json"], 36 ["Upload test file", "/testfile/uploadform"], 37 ["List of dashboard files", "/dashboards/"], 38 ["Update dashboard files", "/dashboards/update"], 37 39 ] 38 40 -
trunk/WebKitTools/TestResultServer/handlers/testfilehandler.py
r55960 r56635 30 30 import urllib 31 31 32 from google.appengine.api import users 32 33 from google.appengine.ext import blobstore 33 34 from google.appengine.ext import webapp … … 61 62 62 63 # Display file list after deleting the file. 63 self.redirect("/ getfile?builder=%s&testtype=%s&name=%s"64 self.redirect("/testfile?builder=%s&testtype=%s&name=%s" 64 65 % (builder, test_type, name)) 65 66 … … 68 69 """Get file content or list of files for given builder and name.""" 69 70 70 def get_file_list(self, builder, test_type, name):71 def _get_file_list(self, builder, test_type, name): 71 72 """Get and display a list of files that matches builder and file name. 72 73 … … 85 86 86 87 template_values = { 88 "admin": users.is_current_user_admin(), 87 89 "builder": builder, 88 90 "test_type": test_type, … … 93 95 template_values)) 94 96 95 def get_file_content(self, builder, test_type, name):97 def _get_file_content(self, builder, test_type, name): 96 98 """Return content of the file that matches builder and file name. 97 99 … … 127 129 # file content. 128 130 if dir or not builder or not name: 129 return self. get_file_list(builder, test_type, name)131 return self._get_file_list(builder, test_type, name) 130 132 else: 131 return self. get_file_content(builder, test_type, name)133 return self._get_file_content(builder, test_type, name) 132 134 133 135 … … 136 138 137 139 def get(self): 138 upload_url = blobstore.create_upload_url("/ upload")140 upload_url = blobstore.create_upload_url("/testfile/upload") 139 141 logging.info("Getting upload url: %s.", upload_url) 140 142 self.response.out.write(upload_url) … … 195 197 196 198 def get(self): 197 upload_url = blobstore.create_upload_url("/ upload")199 upload_url = blobstore.create_upload_url("/testfile/upload") 198 200 template_values = { 199 201 "upload_url": upload_url, … … 206 208 207 209 def get(self): 210 logging.debug("Update status") 211 208 212 if self.request.path == "/uploadsuccess": 209 213 self.response.set_status(200) … … 212 216 errors = self.request.params.getall("error") 213 217 if errors: 214 messages = "FAIL: " + " \n".join(errors)218 messages = "FAIL: " + "; ".join(errors) 215 219 logging.warning(messages) 216 self.response. out.write(messages)217 self.response. set_status(500)220 self.response.set_status(500, messages) 221 self.response.out.write("FAIL") -
trunk/WebKitTools/TestResultServer/index.yaml
r55960 r56635 10 10 # automatically uploaded to the admin console when you next deploy 11 11 # your application using appcfg.py. 12 13 - kind: DashboardFile 14 properties: 15 - name: name 16 - name: date 17 direction: desc 12 18 13 19 - kind: TestFile … … 34 40 - kind: TestFile 35 41 properties: 36 - name: builder=37 - name: name=38 - name: date39 direction: desc40 41 - kind: TestFile42 properties:43 42 - name: name 44 43 - name: date -
trunk/WebKitTools/TestResultServer/main.py
r55960 r56635 34 34 from google.appengine.ext.webapp.util import run_wsgi_app 35 35 36 from handlers.menu import Menu 37 from handlers.testfilehandler import DeleteFile 38 from handlers.testfilehandler import GetFile 39 from handlers.testfilehandler import GetUploadUrl 40 from handlers.testfilehandler import Upload 41 from handlers.testfilehandler import UploadForm 42 from handlers.testfilehandler import UploadStatus 36 from handlers import dashboardhandler 37 from handlers import menu 38 from handlers import testfilehandler 43 39 44 40 routes = [ 45 ('/deletefile', DeleteFile), 46 ('/getfile', GetFile), 47 ('/getuploadurl', GetUploadUrl), 48 ('/upload', Upload), 49 ('/uploadfail', UploadStatus), 50 ('/uploadform', UploadForm), 51 ('/uploadsuccess', UploadStatus), 52 ('/*|/menu', Menu), 41 ('/dashboards/delete', dashboardhandler.DeleteDashboardFile), 42 ('/dashboards/update', dashboardhandler.UpdateDashboardFile), 43 ('/dashboards/([^?]+)?', dashboardhandler.GetDashboardFile), 44 ('/testfile/delete', testfilehandler.DeleteFile), 45 ('/testfile/uploadurl', testfilehandler.GetUploadUrl), 46 ('/testfile/upload', testfilehandler.Upload), 47 ('/testfile/uploadform', testfilehandler.UploadForm), 48 ('/testfile/?', testfilehandler.GetFile), 49 ('/uploadfail', testfilehandler.UploadStatus), 50 ('/uploadsuccess', testfilehandler.UploadStatus), 51 ('/*|/menu', menu.Menu), 53 52 ] 54 53 -
trunk/WebKitTools/TestResultServer/model/testfile.py
r55960 r56635 86 86 logging.info( 87 87 "File saved, builder: %s, test_type: %s, name: %s, blob key: %s.", 88 builder, file.name, file.blob_key)88 builder, test_type, file.name, file.blob_key) 89 89 90 90 return file -
trunk/WebKitTools/TestResultServer/templates/showfilelist.html
r55960 r56635 18 18 <th>File</th> 19 19 <th>Date</th> 20 {% if admin %} 20 21 <th></th> 22 {% endif %} 21 23 {% for file in files %} 22 24 <tr>{% if file.builder and file.name %} 23 <td><a href="/ getfile?builder={{ file.builder }}" >25 <td><a href="/testfile?builder={{ file.builder }}" > 24 26 {{ file.builder }} 25 27 </a> 26 28 </td> 27 29 <td>{% if file.test_type %} 28 <a href="/ getfile?testtype={{ file.test_type }}" >30 <a href="/testfile?testtype={{ file.test_type }}" > 29 31 {{ file.test_type }} 30 32 </a> 31 33 {% endif %} 32 34 </td> 33 <td><a href="/ getfile?builder={{ file.builder }}&name={{ file.name }}" >35 <td><a href="/testfile?builder={{ file.builder }}&name={{ file.name }}" > 34 36 {{ file.name }} 35 37 </a> … … 37 39 <td>{{ file.date|date:"d-M-Y H:i:s" }} 38 40 </td> 39 <td><a href="/deletefile?key={{ file.key }}&builder={{ builder }}&name={{ name }}" > 41 {% if admin %} 42 <td><a href="/testfile/delete?key={{ file.key }}&builder={{ builder }}&name={{ name }}" > 40 43 Delete 41 44 </a> 42 45 </td> 46 {% endif %} 43 47 {% endif %} 44 48 </tr> -
trunk/WebKitTools/TestResultServer/templates/uploadform.html
r55960 r56635 7 7 <body> 8 8 <h1>Upload Test Result File</h1> 9 <form accept="text/html" action="{{ upload_url }}" enctype="multipart/form-data" method="post">9 <form id="uploadForm" name="test_result_upload" accept="text/html" action="{{ upload_url }}" enctype="multipart/form-data" method="post"> 10 10 <br> 11 11 <table> … … 19 19 </tr> 20 20 </table> 21 <div><input class=button type="file" name="file" ></div>21 <div><input class=button type="file" name="file" multiple></div> 22 22 <br> 23 23 <div><input class=button type="submit" value="Upload"></div>
Note: See TracChangeset
for help on using the changeset viewer.