Merge from Chromium at DEPS revision r205460
This commit was generated by merge_to_master.py.
Change-Id: Id50fcfa40590db3bd322348190cb5192c432eadf
diff --git a/Tools/TestResultServer/app.yaml b/Tools/TestResultServer/app.yaml
index e5a2b31..cac2232 100644
--- a/Tools/TestResultServer/app.yaml
+++ b/Tools/TestResultServer/app.yaml
@@ -1,9 +1,14 @@
-application: test-results
+application: test-results-hrd
version: 1
-runtime: python
+runtime: python27
api_version: 1
+threadsafe: true
handlers:
+- url: /robots.txt
+ static_files: robots.txt
+ upload: robots.txt
+
- url: /stylesheets
static_dir: stylesheets
@@ -11,8 +16,8 @@
static_dir: static-dashboards
- url: /testfile/delete
- script: main.py
+ script: main.app
login: admin
- url: /.*
- script: main.py
+ script: main.app
diff --git a/Tools/TestResultServer/generate_builders_json.py b/Tools/TestResultServer/generate_builders_json.py
index fb5342a..0b666f8 100644
--- a/Tools/TestResultServer/generate_builders_json.py
+++ b/Tools/TestResultServer/generate_builders_json.py
@@ -65,28 +65,31 @@
cached_builds = build_data['cachedBuilds']
current_builds = build_data['currentBuilds']
+ if len(cached_builds) == 0:
+ print 'warning: empty list of cached builds for', builder
+ continue
+
latest_cached_build = cached_builds.pop()
while latest_cached_build in current_builds and len(cached_builds):
latest_cached_build = cached_builds.pop()
for step in fetch_json(cached_build_json_url(master_url, builder, latest_cached_build))['steps']:
step_name = step['name']
-
- # The chromium bots call this step webkit-tests, the webkit.org bots call it layout-test. :(
- # The files stored at test-results.appspot.com use layout-tests as the test suite name, so normalize to that.
- if step_name in ['layout-test', 'webkit_tests']:
- step_name = 'layout-tests'
-
- is_test = step_name == 'layout-tests' if master['name'] == 'webkit.org' else 'test' in step_name and 'archive' not in step_name
- if not is_test:
+ is_test_step = 'test' in step_name and 'archive' not in step_name
+ if not is_test_step:
continue
+ # The chromium bots call this step webkit-tests, but the files stored at
+ # test-results.appspot.com use layout-tests as the test suite name, so normalize to that.
+ if step_name == 'webkit_tests':
+ step_name = 'layout-tests'
+
if step_name not in tests_object:
tests_object[step_name] = {'builders': []}
tests_object[step_name]['builders'].append(builder)
- for step_name in tests_object:
- tests_object[step_name]['builders'].sort()
+ for step_name in tests_object:
+ tests_object[step_name]['builders'].sort()
def main():
@@ -97,16 +100,15 @@
logging.getLogger().setLevel(logging.DEBUG if options.verbose else logging.INFO)
masters = [
- {'name': 'ChromiumWin', 'url': 'http://build.chromium.org/p/chromium.win'},
- {'name': 'ChromiumMac', 'url': 'http://build.chromium.org/p/chromium.mac'},
- {'name': 'ChromiumLinux', 'url': 'http://build.chromium.org/p/chromium.linux'},
- {'name': 'ChromiumChromiumOS', 'url': 'http://build.chromium.org/p/chromium.chromiumos'},
- {'name': 'ChromiumGPU', 'url': 'http://build.chromium.org/p/chromium.gpu'},
- {'name': 'ChromiumGPUFYI', 'url': 'http://build.chromium.org/p/chromium.gpu.fyi'},
- {'name': 'ChromiumPerfAv', 'url': 'http://build.chromium.org/p/chromium.perf_av'},
- {'name': 'ChromiumWebkit', 'url': 'http://build.chromium.org/p/chromium.webkit'},
- {'name': 'ChromiumFYI', 'url': 'http://build.chromium.org/p/chromium.fyi'},
- {'name': 'webkit.org', 'url': 'http://build.webkit.org'},
+ {'name': 'ChromiumWin', 'url': 'http://build.chromium.org/p/chromium.win', 'groups': ['@ToT Chromium']},
+ {'name': 'ChromiumMac', 'url': 'http://build.chromium.org/p/chromium.mac', 'groups': ['@ToT Chromium']},
+ {'name': 'ChromiumLinux', 'url': 'http://build.chromium.org/p/chromium.linux', 'groups': ['@ToT Chromium']},
+ {'name': 'ChromiumChromiumOS', 'url': 'http://build.chromium.org/p/chromium.chromiumos', 'groups': ['@ToT ChromeOS']},
+ {'name': 'ChromiumGPU', 'url': 'http://build.chromium.org/p/chromium.gpu', 'groups': ['@ToT Chromium']},
+ {'name': 'ChromiumGPUFYI', 'url': 'http://build.chromium.org/p/chromium.gpu.fyi', 'groups': ['@ToT Chromium FYI']},
+ {'name': 'ChromiumPerfAv', 'url': 'http://build.chromium.org/p/chromium.perf_av', 'groups': ['@ToT Chromium']},
+ {'name': 'ChromiumWebkit', 'url': 'http://build.chromium.org/p/chromium.webkit', 'groups': ['@ToT Chromium', '@ToT Blink']},
+ {'name': 'ChromiumFYI', 'url': 'http://build.chromium.org/p/chromium.fyi', 'groups': ['@ToT Chromium FYI']},
]
insert_builder_and_test_data(masters)
@@ -116,8 +118,10 @@
'LOAD_BUILDBOT_DATA(')
json_file_suffix = ');\n';
+ output_data = {'masters': masters}
+
json_file = open(os.path.join('static-dashboards', 'builders.jsonp'), 'w')
- json_file.write(json_file_prefix + json.dumps(masters, separators=(', ', ': '), indent=4, sort_keys=True) + json_file_suffix)
+ json_file.write(json_file_prefix + json.dumps(output_data, separators=(', ', ': '), indent=4, sort_keys=True) + json_file_suffix)
if __name__ == "__main__":
diff --git a/Tools/TestResultServer/generate_builders_json_unittest.py b/Tools/TestResultServer/generate_builders_json_unittest.py
index 588c939..e9c8345 100644
--- a/Tools/TestResultServer/generate_builders_json_unittest.py
+++ b/Tools/TestResultServer/generate_builders_json_unittest.py
@@ -56,8 +56,6 @@
if url == 'http://build.chromium.org/p/chromium.webkit/json/builders':
return {'WebKit Win': None, 'WebKit Linux': None, 'WebKit Mac': None}
- if url == 'http://build.webkit.org/json/builders':
- return {'Apple Mac SnowLeopard Tests': None, 'Chromium Mac Builder': None, 'GTK': None}
if url == 'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Linux':
return {'cachedBuilds': [1, 2], 'currentBuilds': []}
@@ -65,12 +63,6 @@
return {'cachedBuilds': [1, 2], 'currentBuilds': []}
if url == 'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Mac':
return {'cachedBuilds': [1, 2], 'currentBuilds': []}
- if url == 'http://build.webkit.org/json/builders/Apple%20Mac%20SnowLeopard%20Tests':
- return {'cachedBuilds': [1, 2], 'currentBuilds': []}
- if url == 'http://build.webkit.org/json/builders/Chromium%20Mac%20Builder':
- return {'cachedBuilds': [1, 2, 3], 'currentBuilds': [3]}
- if url == 'http://build.webkit.org/json/builders/GTK':
- return {'cachedBuilds': [2], 'currentBuilds': []}
if url == 'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Linux/builds/2':
return {'steps': [{'name': 'webkit_tests'}, {'name': 'browser_tests'}, {'name': 'mini_installer_test'}, {'name': 'archive_test_results'}, {'name': 'compile'}]}
@@ -78,12 +70,6 @@
return {'steps': [{'name': 'webkit_tests'}, {'name': 'mini_installer_test'}, {'name': 'archive_test_results'}, {'name': 'compile'}]}
if url == 'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Mac/builds/2':
return {'steps': [{'name': 'browser_tests'}, {'name': 'mini_installer_test'}, {'name': 'archive_test_results'}, {'name': 'compile'}]}
- if url == 'http://build.webkit.org/json/builders/Apple%20Mac%20SnowLeopard%20Tests/builds/2':
- return {'steps': [{'name': 'layout-test'}, {'name': 'archive_test_results'}, {'name': 'compile'}]}
- if url == 'http://build.webkit.org/json/builders/Chromium%20Mac%20Builder/builds/2':
- return {'steps': [{'name': 'compile'}]}
- if url == 'http://build.webkit.org/json/builders/GTK/builds/2':
- return {'steps': [{'name': 'layout-test'}, {'name': 'archive_test_results'}, {'name': 'compile'}]}
logging.error('Cannot fetch fake url: %s' % url)
@@ -91,7 +77,6 @@
masters = [
{'name': 'ChromiumWebkit', 'url': 'http://build.chromium.org/p/chromium.webkit'},
- {'name': 'webkit.org', 'url': 'http://build.webkit.org'},
]
generate_builders_json.insert_builder_and_test_data(masters)
@@ -104,13 +89,7 @@
'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Mac/builds/2',
'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Win',
'http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Win/builds/2',
- 'http://build.webkit.org/json/builders',
- 'http://build.webkit.org/json/builders/Apple%20Mac%20SnowLeopard%20Tests',
- 'http://build.webkit.org/json/builders/Apple%20Mac%20SnowLeopard%20Tests/builds/2',
- 'http://build.webkit.org/json/builders/GTK',
- 'http://build.webkit.org/json/builders/GTK/builds/2',
- 'http://build.webkit.org/json/builders/Chromium%20Mac%20Builder',
- 'http://build.webkit.org/json/builders/Chromium%20Mac%20Builder/builds/2']
+ ]
self.assertEqual(fetched_urls, expected_fetched_urls)
expected_masters = [
@@ -120,12 +99,8 @@
'browser_tests': {'builders': ['WebKit Linux', 'WebKit Mac']},
'mini_installer_test': {'builders': ['WebKit Linux', 'WebKit Mac', 'WebKit Win']},
'layout-tests': {'builders': ['WebKit Linux', 'WebKit Win']}},
- 'name': 'ChromiumWebkit'},
- {
- 'url': 'http://build.webkit.org',
- 'tests': {
- 'layout-tests': {'builders': ['Apple Mac SnowLeopard Tests', 'GTK']}},
- 'name': 'webkit.org'}]
+ 'name': 'ChromiumWebkit'}
+ ]
self.assertEqual(masters, expected_masters)
finally:
diff --git a/Tools/TestResultServer/handlers/menu.py b/Tools/TestResultServer/handlers/menu.py
index f15e53c..7b5403a 100644
--- a/Tools/TestResultServer/handlers/menu.py
+++ b/Tools/TestResultServer/handlers/menu.py
@@ -26,8 +26,9 @@
# (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 webapp2
+
from google.appengine.api import users
-from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
dashboards = [
@@ -44,7 +45,7 @@
]
-class Menu(webapp.RequestHandler):
+class Menu(webapp2.RequestHandler):
def get(self):
user = users.get_current_user()
if user:
diff --git a/Tools/TestResultServer/handlers/testfilehandler.py b/Tools/TestResultServer/handlers/testfilehandler.py
index 0f18abb..0d8b37e 100644
--- a/Tools/TestResultServer/handlers/testfilehandler.py
+++ b/Tools/TestResultServer/handlers/testfilehandler.py
@@ -30,9 +30,9 @@
import logging
import re
import urllib
+import webapp2
from google.appengine.api import users
-from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.ext import db
@@ -44,6 +44,8 @@
PARAM_DIR = "dir"
PARAM_FILE = "file"
PARAM_NAME = "name"
+PARAM_BEFORE = "before"
+PARAM_NUM_FILES = "numfiles"
PARAM_KEY = "key"
PARAM_TEST_TYPE = "testtype"
PARAM_TEST_LIST_JSON = "testlistjson"
@@ -59,7 +61,7 @@
return json
-class DeleteFile(webapp.RequestHandler):
+class DeleteFile(webapp2.RequestHandler):
"""Delete test file for a given builder and name from datastore."""
def get(self):
@@ -68,22 +70,24 @@
builder = self.request.get(PARAM_BUILDER)
test_type = self.request.get(PARAM_TEST_TYPE)
name = self.request.get(PARAM_NAME)
+ num_files = self.request.get(PARAM_NUM_FILES)
+ before = self.request.get(PARAM_BEFORE)
logging.debug(
- "Deleting File, master: %s, builder: %s, test_type: %s, name: %s, key: %s.",
- master, builder, test_type, name, key)
+ "Deleting File, master: %s, builder: %s, test_type: %s, name: %s, before: %s, key: %s.",
+ master, builder, test_type, name, before, key)
- TestFile.delete_file(key, master, builder, test_type, name, 100)
+ limit = int(num_files) if num_files else 1
+ num_deleted = TestFile.delete_file(key, master, builder, test_type, name, before, limit)
- # Display file list after deleting the file.
- self.redirect("/testfile?master=%s&builder=%s&testtype=%s&name=%s"
- % (master, builder, test_type, name))
+ self.response.set_status(200)
+ self.response.out.write("Deleted %d files." % num_deleted)
-class GetFile(webapp.RequestHandler):
+class GetFile(webapp2.RequestHandler):
"""Get file content or list of files for given builder and name."""
- def _get_file_list(self, master, builder, test_type, name, callback_name=None):
+ def _get_file_list(self, master, builder, test_type, name, before, limit, callback_name=None):
"""Get and display a list of files that matches builder and file name.
Args:
@@ -93,7 +97,7 @@
"""
files = TestFile.get_files(
- master, builder, test_type, name, load_data=False, limit=100)
+ master, builder, test_type, name, before, load_data=False, limit=limit)
if not files:
logging.info("File not found, master: %s, builder: %s, test_type: %s, name: %s.",
master, builder, test_type, name)
@@ -181,25 +185,23 @@
builder = self.request.get(PARAM_BUILDER)
test_type = self.request.get(PARAM_TEST_TYPE)
name = self.request.get(PARAM_NAME)
- dir = self.request.get(PARAM_DIR)
+ before = self.request.get(PARAM_BEFORE)
+ num_files = self.request.get(PARAM_NUM_FILES)
test_list_json = self.request.get(PARAM_TEST_LIST_JSON)
callback_name = self.request.get(PARAM_CALLBACK)
logging.debug(
- "Getting files, master %s, builder: %s, test_type: %s, name: %s.",
- master, builder, test_type, name)
-
- if not key:
- # If parameter "dir" is specified or there is no builder or filename
- # specified in the request, return list of files, otherwise, return
- # file content.
- if dir or not builder or not name:
- return self._get_file_list(master, builder, test_type, name, callback_name)
+ "Getting files, master %s, builder: %s, test_type: %s, name: %s, before: %s.",
+ master, builder, test_type, name, before)
if key:
json, date = self._get_file_content_from_key(key)
- elif name == "results.json" and test_list_json:
+ elif test_list_json:
json, date = self._get_test_list_json(master, builder, test_type)
+ elif num_files or not master or not builder or not test_type or not name:
+ limit = int(num_files) if num_files else 100
+ self._get_file_list(master, builder, test_type, name, before, limit, callback_name)
+ return
else:
json, date = self._get_file_content(master, builder, test_type, name)
@@ -209,7 +211,7 @@
self._serve_json(json, date)
-class Upload(webapp.RequestHandler):
+class Upload(webapp2.RequestHandler):
"""Upload test results file to datastore."""
def post(self):
@@ -241,36 +243,37 @@
files.extend(item)
errors = []
+ final_status_code = 200
for file in files:
if file.filename == "incremental_results.json":
- # FIXME: Remove this check once we stop uploading incremental_results.json files for layout tests.
- if test_type == "layout-tests":
- update_succeeded = True
- else:
- update_succeeded = JsonResults.update(master, builder, test_type, file.value, is_full_results_format=False)
+ status_string, status_code = JsonResults.update(master, builder, test_type, file.value, is_full_results_format=False)
+ elif file.filename == "times_ms.json":
+ # We never look at historical times_ms.json files, so we can overwrite the existing one if it exists.
+ status_string, status_code = TestFile.overwrite_or_add_file(master, builder, test_type, file.filename, file.value)
else:
- update_succeeded = bool(TestFile.add_file(master, builder, test_type, file.filename, file.value))
+ status_string, status_code = TestFile.add_file(master, builder, test_type, file.filename, file.value)
# FIXME: Upload full_results.json files for non-layout tests as well and stop supporting the
# incremental_results.json file format.
- if file.filename == "full_results.json" and test_type == "layout-tests":
- update_succeeded |= JsonResults.update(master, builder, test_type, file.value, is_full_results_format=True)
+ if status_code == 200 and file.filename == "full_results.json":
+ status_string, status_code = JsonResults.update(master, builder, test_type, file.value, is_full_results_format=True)
- if not update_succeeded:
- errors.append(
- "Upload failed, master: %s, builder: %s, test_type: %s, name: %s." %
- (master, builder, test_type, file.filename))
+ if status_code == 200:
+ logging.info(status_string)
+ else:
+ logging.error(status_string)
+ errors.append(status_string)
+ final_status_code = status_code
if errors:
messages = "FAIL: " + "; ".join(errors)
- logging.warning(messages)
- self.response.set_status(500, messages)
- self.response.out.write("FAIL")
+ self.response.set_status(final_status_code, messages)
+ self.response.out.write(messages)
else:
self.response.set_status(200)
self.response.out.write("OK")
-class UploadForm(webapp.RequestHandler):
+class UploadForm(webapp2.RequestHandler):
"""Show a form so user can upload a file."""
def get(self):
diff --git a/Tools/TestResultServer/main.py b/Tools/TestResultServer/main.py
index a9b00cf..c8b6852 100644
--- a/Tools/TestResultServer/main.py
+++ b/Tools/TestResultServer/main.py
@@ -26,12 +26,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# Request a modern Django
-from google.appengine.dist import use_library
-use_library('django', '1.3')
-
-from google.appengine.ext import webapp
-from google.appengine.ext.webapp.util import run_wsgi_app
+import webapp2
from handlers import menu
from handlers import testfilehandler
@@ -41,14 +36,7 @@
('/testfile/upload', testfilehandler.Upload),
('/testfile/uploadform', testfilehandler.UploadForm),
('/testfile/?', testfilehandler.GetFile),
- ('/*|/menu', menu.Menu),
+ ('/', menu.Menu),
]
-application = webapp.WSGIApplication(routes, debug=True)
-
-
-def main():
- run_wsgi_app(application)
-
-if __name__ == "__main__":
- main()
+app = webapp2.WSGIApplication(routes, debug=True)
diff --git a/Tools/TestResultServer/model/datastorefile.py b/Tools/TestResultServer/model/datastorefile.py
index 84642b8..d3f89ef 100755
--- a/Tools/TestResultServer/model/datastorefile.py
+++ b/Tools/TestResultServer/model/datastorefile.py
@@ -26,7 +26,6 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from datetime import datetime
import logging
from google.appengine.ext import blobstore
diff --git a/Tools/TestResultServer/model/jsonresults.py b/Tools/TestResultServer/model/jsonresults.py
index 4b3ad73..aa8cc6f 100755
--- a/Tools/TestResultServer/model/jsonresults.py
+++ b/Tools/TestResultServer/model/jsonresults.py
@@ -26,17 +26,12 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from datetime import datetime
+import json
import logging
+import re
import sys
import traceback
-# FIXME: Once we're on python 2.7, just use json directly.
-try:
- from django.utils import simplejson
-except:
- import json as simplejson
-
from model.testfile import TestFile
JSON_RESULTS_FILE = "results.json"
@@ -52,6 +47,7 @@
BUG_KEY = "bugs"
BUILD_NUMBERS_KEY = "buildNumbers"
EXPECTED_KEY = "expected"
+ACTUAL_KEY = "actual"
FAILURE_MAP_KEY = "failure_map"
FAILURES_BY_TYPE_KEY = "num_failures_by_type"
FIXABLE_COUNTS_KEY = "fixableCounts"
@@ -118,8 +114,8 @@
return data
@classmethod
- def _generate_file_data(cls, json, sort_keys=False):
- return simplejson.dumps(json, separators=(',', ':'), sort_keys=sort_keys)
+ def _generate_file_data(cls, jsonObject, sort_keys=False):
+ return json.dumps(jsonObject, separators=(',', ':'), sort_keys=sort_keys)
@classmethod
def _load_json(cls, file_data):
@@ -129,7 +125,7 @@
return None
try:
- return simplejson.loads(json_results_str)
+ return json.loads(json_results_str)
except:
logging.debug(json_results_str)
logging.error("Failed to load json results: %s", traceback.print_exception(*sys.exc_info()))
@@ -240,11 +236,11 @@
aggregated_item.insert(0, item)
@classmethod
- def _normalize_results(cls, aggregated_json, num_runs):
+ def _normalize_results(cls, aggregated_json, num_runs, run_time_pruning_threshold):
names_to_delete = []
for test_name in aggregated_json:
if _is_directory(aggregated_json[test_name]):
- cls._normalize_results(aggregated_json[test_name], num_runs)
+ cls._normalize_results(aggregated_json[test_name], num_runs, run_time_pruning_threshold)
# If normalizing deletes all the children of this directory, also delete the directory.
if not aggregated_json[test_name]:
names_to_delete.append(test_name)
@@ -252,14 +248,14 @@
leaf = aggregated_json[test_name]
leaf[RESULTS_KEY] = cls._remove_items_over_max_number_of_builds(leaf[RESULTS_KEY], num_runs)
leaf[TIMES_KEY] = cls._remove_items_over_max_number_of_builds(leaf[TIMES_KEY], num_runs)
- if cls._should_delete_leaf(leaf):
+ if cls._should_delete_leaf(leaf, run_time_pruning_threshold):
names_to_delete.append(test_name)
for test_name in names_to_delete:
del aggregated_json[test_name]
@classmethod
- def _should_delete_leaf(cls, leaf):
+ def _should_delete_leaf(cls, leaf, run_time_pruning_threshold):
if leaf.get(EXPECTED_KEY, PASS_STRING) != PASS_STRING:
return False
@@ -272,7 +268,7 @@
return False
for time in leaf[TIMES_KEY]:
- if time[1] >= JSON_RESULTS_MIN_TIME:
+ if time[1] >= run_time_pruning_threshold:
return False
return True
@@ -293,6 +289,7 @@
def _convert_gtest_json_to_aggregate_results_format(cls, json):
# FIXME: Change gtests over to uploading the full results format like layout-tests
# so we don't have to do this normalizing.
+ # http://crbug.com/247192.
if FAILURES_BY_TYPE_KEY in json:
# This is already in the right format.
@@ -311,20 +308,31 @@
def _check_json(cls, builder, json):
version = json[VERSIONS_KEY]
if version > JSON_RESULTS_HIERARCHICAL_VERSION:
- logging.error("Results JSON version '%s' is not supported.", version)
- return False
+ return "Results JSON version '%s' is not supported." % version
if not builder in json:
- logging.error("Builder '%s' is not in json results.", builder)
- return False
+ return "Builder '%s' is not in json results." % builder
results_for_builder = json[builder]
if not BUILD_NUMBERS_KEY in results_for_builder:
- logging.error("Missing build number in json results.")
- return False
+ return "Missing build number in json results."
cls._convert_gtest_json_to_aggregate_results_format(json[builder])
- return True
+
+ # FIXME: Remove this once all the bots have cycled with this code.
+ # The failure map was moved from the top-level to being below the builder
+ # like everything else.
+ if FAILURE_MAP_KEY in json:
+ del json[FAILURE_MAP_KEY]
+
+ # FIXME: Remove this code once the gtests switch over to uploading the full_results.json format.
+ # Once the bots have cycled with this code, we can move this loop into _convert_gtest_json_to_aggregate_results_format.
+ KEYS_TO_DELETE = ["fixableCount", "fixableCounts", "allFixableCount"]
+ for key in KEYS_TO_DELETE:
+ if key in json[builder]:
+ del json[builder][key]
+
+ return ""
@classmethod
def _populate_tests_from_full_results(cls, full_results, new_results):
@@ -335,7 +343,7 @@
time = int(round(full_results[TIME_KEY])) if TIME_KEY in full_results else 0
new_results[TIMES_KEY] = [[1, time]]
- actual_failures = full_results['actual']
+ actual_failures = full_results[ACTUAL_KEY]
# Treat unexpected skips like NOTRUNs to avoid exploding the results JSON files
# when a bot exits early (e.g. due to too many crashes/timeouts).
if expected != SKIP_STRING and actual_failures == SKIP_STRING:
@@ -382,12 +390,9 @@
# FIXME: Use dict comprehensions once we update the server to python 2.7.
FAILURES_BY_TYPE_KEY: dict((key, [value]) for key, value in failures_by_type.items()),
TESTS_KEY: tests,
- # FIXME: Have the consumers of these use num_failures_by_type directly and stop include these counts.
- 'allFixableCount': [num_total_tests],
- 'fixableCount': [num_failing_tests],
- FIXABLE_COUNTS_KEY: [fixableCounts],
# FIXME: Have all the consumers of this switch over to the full_results_format keys
- # so we don't have to do this silly conversion.
+ # so we don't have to do this silly conversion. Or switch the full_results_format keys
+ # to be camel-case.
BUILD_NUMBERS_KEY: [full_results_format['build_number']],
'chromeRevision': [full_results_format['chromium_revision']],
'blinkRevision': [full_results_format['blink_revision']],
@@ -399,57 +404,62 @@
@classmethod
def _get_incremental_json(cls, builder, incremental_string, is_full_results_format):
if not incremental_string:
- logging.warning("Nothing to merge.")
- return None
+ return "No incremental JSON data to merge.", 403
logging.info("Loading incremental json.")
incremental_json = cls._load_json(incremental_string)
if not incremental_json:
- return None
+ return "Incremental JSON data is not valid JSON.", 403
if is_full_results_format:
logging.info("Converting full results format to aggregate.")
incremental_json = cls._convert_full_results_format_to_aggregate(incremental_json)
logging.info("Checking incremental json.")
- if not cls._check_json(builder, incremental_json):
- return None
- return incremental_json
+ check_json_error_string = cls._check_json(builder, incremental_json)
+ if check_json_error_string:
+ return check_json_error_string, 403
+ return incremental_json, 200
@classmethod
def _get_aggregated_json(cls, builder, aggregated_string):
logging.info("Loading existing aggregated json.")
aggregated_json = cls._load_json(aggregated_string)
if not aggregated_json:
- return None
+ return None, 200
logging.info("Checking existing aggregated json.")
- if not cls._check_json(builder, aggregated_json):
- return None
+ check_json_error_string = cls._check_json(builder, aggregated_json)
+ if check_json_error_string:
+ return check_json_error_string, 500
- return aggregated_json
+ return aggregated_json, 200
@classmethod
def merge(cls, builder, aggregated_string, incremental_json, num_runs, sort_keys=False):
- aggregated_json = cls._get_aggregated_json(builder, aggregated_string)
+ aggregated_json, status_code = cls._get_aggregated_json(builder, aggregated_string)
if not aggregated_json:
aggregated_json = incremental_json
+ elif status_code != 200:
+ return aggregated_json, status_code
else:
if aggregated_json[builder][BUILD_NUMBERS_KEY][0] == incremental_json[builder][BUILD_NUMBERS_KEY][0]:
- logging.error("Incremental JSON's build number is the latest build number in the aggregated JSON: %d." % aggregated_json[builder][BUILD_NUMBERS_KEY][0])
- return None
+ status_string = "Incremental JSON's build number %s is the latest build number in the aggregated JSON." % str(aggregated_json[builder][BUILD_NUMBERS_KEY][0])
+ return status_string, 409
logging.info("Merging json results.")
try:
cls._merge_json(aggregated_json[builder], incremental_json[builder], num_runs)
except:
- logging.error("Failed to merge json results: %s", traceback.print_exception(*sys.exc_info()))
- return None
+ return "Failed to merge json results: %s", traceback.print_exception(*sys.exc_info()), 500
aggregated_json[VERSIONS_KEY] = JSON_RESULTS_HIERARCHICAL_VERSION
aggregated_json[builder][FAILURE_MAP_KEY] = CHAR_TO_FAILURE
- cls._normalize_results(aggregated_json[builder][TESTS_KEY], num_runs)
- return cls._generate_file_data(aggregated_json, sort_keys)
+
+ is_debug_builder = re.search(r"(Debug|Dbg)", builder, re.I)
+ run_time_pruning_threshold = 2 * JSON_RESULTS_MIN_TIME if is_debug_builder else JSON_RESULTS_MIN_TIME
+ cls._normalize_results(aggregated_json[builder][TESTS_KEY], num_runs, run_time_pruning_threshold)
+ return cls._generate_file_data(aggregated_json, sort_keys), 200
@classmethod
def _get_file(cls, master, builder, test_type, filename):
@@ -474,24 +484,22 @@
@classmethod
def update_files(cls, builder, incremental_string, small_file, large_file, is_full_results_format):
- incremental_json = cls._get_incremental_json(builder, incremental_string, is_full_results_format)
- if not incremental_json:
- return False
+ incremental_json, status_code = cls._get_incremental_json(builder, incremental_string, is_full_results_format)
+ if status_code != 200:
+ return incremental_json, status_code
- small_file_updated = cls.update_file(builder, small_file, incremental_json, JSON_RESULTS_MAX_BUILDS_SMALL)
- if not small_file_updated:
- logging.info("Update for %s failed." % JSON_RESULTS_FILE_SMALL)
+ status_string, status_code = cls.update_file(builder, small_file, incremental_json, JSON_RESULTS_MAX_BUILDS_SMALL)
+ if status_code != 200:
+ return status_string, status_code
- large_file_updated = cls.update_file(builder, large_file, incremental_json, JSON_RESULTS_MAX_BUILDS)
- if not large_file_updated:
- logging.info("Update for %s failed." % JSON_RESULTS_FILE)
-
- return small_file_updated and large_file_updated
+ return cls.update_file(builder, large_file, incremental_json, JSON_RESULTS_MAX_BUILDS)
@classmethod
def update_file(cls, builder, file, incremental_json, num_runs):
- new_results = cls.merge(builder, file.data, incremental_json, num_runs)
- return new_results and file.save(new_results)
+ new_results, status_code = cls.merge(builder, file.data, incremental_json, num_runs)
+ if status_code != 200:
+ return new_results, status_code
+ return TestFile.save_file(file, new_results)
@classmethod
def _delete_results_and_times(cls, tests):
@@ -509,7 +517,9 @@
return None
logging.debug("Checking test results json...")
- if not cls._check_json(builder, json):
+
+ check_json_error_string = cls._check_json(builder, json)
+ if check_json_error_string:
return None
test_list_json = {}
diff --git a/Tools/TestResultServer/model/jsonresults_unittest.py b/Tools/TestResultServer/model/jsonresults_unittest.py
index d0e35c9..c9b167d 100755
--- a/Tools/TestResultServer/model/jsonresults_unittest.py
+++ b/Tools/TestResultServer/model/jsonresults_unittest.py
@@ -33,12 +33,7 @@
print "ERROR: Add the TestResultServer, google_appengine and yaml/lib directories to your PYTHONPATH"
raise
-# FIXME: Once we're on python 2.7, just use json directly.
-try:
- from django.utils import simplejson
-except:
- import json as simplejson
-
+import json
import unittest
FULL_RESULT_EXAMPLE = """ADD_RESULTS({
@@ -143,25 +138,22 @@
'"tests":{[TESTDATA_TESTS]}'
'},'
'"version":[VERSION]'
- '}') % simplejson.dumps(CHAR_TO_FAILURE)
+ '}') % json.dumps(CHAR_TO_FAILURE)
JSON_RESULTS_COUNTS = '{"' + '":[[TESTDATA_COUNT]],"'.join([char for char in CHAR_TO_FAILURE.values()]) + '":[[TESTDATA_COUNT]]}'
JSON_RESULTS_TEMPLATE = (
'{"[BUILDER_NAME]":{'
- '"allFixableCount":[[TESTDATA_COUNT]],'
'"blinkRevision":[[TESTDATA_WEBKITREVISION]],'
'"buildNumbers":[[TESTDATA_BUILDNUMBERS]],'
'"chromeRevision":[[TESTDATA_CHROMEREVISION]],'
'"failure_map": %s,'
- '"fixableCount":[[TESTDATA_COUNT]],'
- '"fixableCounts":[[TESTDATA_COUNTS]],'
'"num_failures_by_type":%s,'
'"secondsSinceEpoch":[[TESTDATA_TIMES]],'
'"tests":{[TESTDATA_TESTS]}'
'},'
'"version":[VERSION]'
- '}') % (simplejson.dumps(CHAR_TO_FAILURE), JSON_RESULTS_COUNTS)
+ '}') % (json.dumps(CHAR_TO_FAILURE), JSON_RESULTS_COUNTS)
JSON_RESULTS_COUNTS_TEMPLATE = '{"' + '":[TESTDATA],"'.join([char for char in CHAR_TO_FAILURE]) + '":[TESTDATA]}'
@@ -188,8 +180,8 @@
# Use this to get better error messages than just string compare gives.
def assert_json_equal(self, a, b):
self.maxDiff = None
- a = simplejson.loads(a) if isinstance(a, str) else a
- b = simplejson.loads(b) if isinstance(b, str) else b
+ a = json.loads(a) if isinstance(a, str) else a
+ b = json.loads(b) if isinstance(b, str) else b
self.assertEqual(a, b)
def test_strip_prefix_suffix(self):
@@ -228,23 +220,24 @@
version = str(test_data["version"]) if "version" in test_data else "4"
json_string = json_string.replace("[VERSION]", version)
- json_string = json_string.replace("{[TESTDATA_TESTS]}", simplejson.dumps(tests, separators=(',', ':'), sort_keys=True))
+ json_string = json_string.replace("{[TESTDATA_TESTS]}", json.dumps(tests, separators=(',', ':'), sort_keys=True))
return json_string
def _test_merge(self, aggregated_data, incremental_data, expected_data, max_builds=jsonresults.JSON_RESULTS_MAX_BUILDS):
- aggregated_results = self._make_test_json(aggregated_data)
- incremental_json = JsonResults._get_incremental_json(self._builder, self._make_test_json(incremental_data), is_full_results_format=False)
- merged_results = JsonResults.merge(self._builder, aggregated_results, incremental_json, num_runs=max_builds, sort_keys=True)
+ aggregated_results = self._make_test_json(aggregated_data, builder_name=self._builder)
+ incremental_json, _ = JsonResults._get_incremental_json(self._builder, self._make_test_json(incremental_data, builder_name=self._builder), is_full_results_format=False)
+ merged_results, status_code = JsonResults.merge(self._builder, aggregated_results, incremental_json, num_runs=max_builds, sort_keys=True)
if expected_data:
- expected_results = self._make_test_json(expected_data)
+ expected_results = self._make_test_json(expected_data, builder_name=self._builder)
self.assert_json_equal(merged_results, expected_results)
+ self.assertEqual(status_code, 200)
else:
- self.assertFalse(merged_results)
+ self.assertTrue(status_code != 200)
def _test_get_test_list(self, input_data, expected_data):
input_results = self._make_test_json(input_data)
- expected_results = JSON_RESULTS_TEST_LIST_TEMPLATE.replace("{[TESTDATA_TESTS]}", simplejson.dumps(expected_data, separators=(',', ':')))
+ expected_results = JSON_RESULTS_TEST_LIST_TEMPLATE.replace("{[TESTDATA_TESTS]}", json.dumps(expected_data, separators=(',', ':')))
actual_results = JsonResults.get_test_list(self._builder, input_results)
self.assert_json_equal(actual_results, expected_results)
@@ -286,7 +279,8 @@
incremental_string = ""
- self.assertFalse(JsonResults.update_files(small_file.builder, incremental_string, small_file, large_file, is_full_results_format=False))
+ self.assertEqual(JsonResults.update_files(small_file.builder, incremental_string, small_file, large_file, is_full_results_format=False),
+ ('No incremental JSON data to merge.', 403))
self.assert_json_equal(small_file.data, aggregated_string)
self.assert_json_equal(large_file.data, aggregated_string)
@@ -313,7 +307,8 @@
}
incremental_string = self._make_test_json(incremental_data, builder_name=small_file.builder)
- self.assertFalse(JsonResults.update_files(small_file.builder, incremental_string, small_file, large_file, is_full_results_format=False))
+ self.assertEqual(JsonResults.update_files(small_file.builder, incremental_string, small_file, large_file, is_full_results_format=False),
+ ('No incremental JSON data to merge.', 403))
self.assert_json_equal(small_file.data, aggregated_string)
self.assert_json_equal(large_file.data, aggregated_string)
@@ -327,9 +322,9 @@
}
}
}
- incremental_results = JsonResults._get_incremental_json(self._builder, self._make_test_json(incremental_data), is_full_results_format=False)
+ incremental_results, _ = JsonResults._get_incremental_json(self._builder, self._make_test_json(incremental_data), is_full_results_format=False)
aggregated_results = ""
- merged_results = JsonResults.merge(self._builder, aggregated_results, incremental_results, num_runs=jsonresults.JSON_RESULTS_MAX_BUILDS, sort_keys=True)
+ merged_results, _ = JsonResults.merge(self._builder, aggregated_results, incremental_results, num_runs=jsonresults.JSON_RESULTS_MAX_BUILDS, sort_keys=True)
self.assert_json_equal(merged_results, incremental_results)
def test_failures_by_type_added(self):
@@ -351,8 +346,8 @@
}
}
}, json_string=JSON_RESULTS_OLD_TEMPLATE)
- incremental_json = JsonResults._get_incremental_json(self._builder, incremental_results, is_full_results_format=False)
- merged_results = JsonResults.merge(self._builder, aggregated_results, incremental_json, num_runs=200, sort_keys=True)
+ incremental_json, _ = JsonResults._get_incremental_json(self._builder, incremental_results, is_full_results_format=False)
+ merged_results, _ = JsonResults.merge(self._builder, aggregated_results, incremental_json, num_runs=200, sort_keys=True)
self.assert_json_equal(merged_results, self._make_test_json({
"builds": ["3", "2", "1"],
"tests": {
@@ -366,13 +361,10 @@
def test_merge_full_results_format(self):
expected_incremental_results = {
"Webkit": {
- "allFixableCount": [35],
"blinkRevision": ["1234"],
"buildNumbers": ["3"],
"chromeRevision": ["5678"],
"failure_map": CHAR_TO_FAILURE,
- "fixableCount": [25],
- "fixableCounts": [{AUDIO: 0, CRASH: 3, TEXT: 3, IMAGE: 1, MISSING: 0, PASS: 10, TIMEOUT: 16, SKIP: 2, IMAGE_PLUS_TEXT: 0}],
"num_failures_by_type": {"AUDIO": [0], "CRASH": [3], "IMAGE": [1], "IMAGE+TEXT": [0], "MISSING": [0], "PASS": [10], "SKIP": [2], "TEXT": [3], "TIMEOUT": [16]},
"secondsSinceEpoch": [1368146629],
"tests": {
@@ -417,8 +409,8 @@
}
aggregated_results = ""
- incremental_json = JsonResults._get_incremental_json(self._builder, FULL_RESULT_EXAMPLE, is_full_results_format=True)
- merged_results = JsonResults.merge("Webkit", aggregated_results, incremental_json, num_runs=jsonresults.JSON_RESULTS_MAX_BUILDS, sort_keys=True)
+ incremental_json, _ = JsonResults._get_incremental_json(self._builder, FULL_RESULT_EXAMPLE, is_full_results_format=True)
+ merged_results, _ = JsonResults.merge("Webkit", aggregated_results, incremental_json, num_runs=jsonresults.JSON_RESULTS_MAX_BUILDS, sort_keys=True)
self.assert_json_equal(merged_results, expected_incremental_results)
def test_merge_empty_aggregated_results(self):
@@ -819,7 +811,6 @@
def test_merge_keep_test_with_all_pass_but_slow_time(self):
- # Do not remove test where all run pass but max running time >= 5 seconds
self._test_merge(
# Aggregated results
{"builds": ["2", "1"],
@@ -846,6 +837,37 @@
"results": [[1, PASS], [10, TEXT]],
"times": [[11, 0]]}}})
+ def test_merge_pruning_slow_tests_for_debug_builders(self):
+ self._builder = "MockBuilder(dbg)"
+ self._test_merge(
+ # Aggregated results
+ {"builds": ["2", "1"],
+ "tests": {"001.html": {
+ "results": [[200, PASS]],
+ "times": [[200, 2 * jsonresults.JSON_RESULTS_MIN_TIME]]},
+ "002.html": {
+ "results": [[10, TEXT]],
+ "times": [[10, 0]]}}},
+ # Incremental results
+ {"builds": ["3"],
+ "tests": {"001.html": {
+ "results": [[1, PASS]],
+ "times": [[1, 1]]},
+ "002.html": {
+ "results": [[1, PASS]],
+ "times": [[1, 0]]},
+ "003.html": {
+ "results": [[1, PASS]],
+ "times": [[1, jsonresults.JSON_RESULTS_MIN_TIME]]}}},
+ # Expected results
+ {"builds": ["3", "2", "1"],
+ "tests": {"001.html": {
+ "results": [[201, PASS]],
+ "times": [[1, 1], [200, 2 * jsonresults.JSON_RESULTS_MIN_TIME]]},
+ "002.html": {
+ "results": [[1, PASS], [10, TEXT]],
+ "times": [[11, 0]]}}})
+
def test_merge_prune_extra_results(self):
# Remove items from test results and times that exceed the max number
# of builds to track.
diff --git a/Tools/TestResultServer/model/testfile.py b/Tools/TestResultServer/model/testfile.py
index 9ab4227..bada12f 100644
--- a/Tools/TestResultServer/model/testfile.py
+++ b/Tools/TestResultServer/model/testfile.py
@@ -40,29 +40,30 @@
test_type = db.StringProperty()
@classmethod
- def delete_file(cls, key, master, builder, test_type, name, limit):
+ def delete_file(cls, key, master, builder, test_type, name, before, limit):
if key:
file = db.get(key)
if not file:
logging.warning("File not found, key: %s.", key)
- return False
+ return 0
file._delete_all()
- else:
- files = cls.get_files(master, builder, test_type, name, limit)
- if not files:
- logging.warning(
- "File not found, master: %s, builder: %s, test_type:%s, name: %s.",
- builder, test_type, name)
- return False
+ return 1
- for file in files:
- file._delete_all()
+ files = cls.get_files(master, builder, test_type, name, before, load_data=False, limit=limit)
+ if not files:
+ logging.warning(
+ "File not found, master: %s, builder: %s, test_type:%s, name: %s, before: %s.",
+ master, builder, test_type, name, before)
+ return 0
- return True
+ for file in files:
+ file._delete_all()
+
+ return len(files)
@classmethod
- def get_files(cls, master, builder, test_type, name, load_data=True, limit=1):
+ def get_files(cls, master, builder, test_type, name, before=None, load_data=True, limit=1):
query = TestFile.all()
if master:
query = query.filter("master =", master)
@@ -72,6 +73,9 @@
query = query.filter("test_type =", test_type)
if name:
query = query.filter("name =", name)
+ if before:
+ date = datetime.strptime(before, "%Y-%m-%dT%H:%M:%SZ")
+ query = query.filter("date <", date)
files = query.order("-date").fetch(limit)
if load_data:
@@ -81,21 +85,31 @@
return files
@classmethod
+ def save_file(cls, file, data):
+ file_information = "master: %s, builder: %s, test_type: %s, name: %s." % (file.master, file.builder, file.test_type, file.name)
+ if file.save(data):
+ status_string = "Saved file. %s" % file_information
+ status_code = 200
+ else:
+ status_string = "Couldn't save file. %s" % file_information
+ status_code = 500
+ return status_string, status_code
+
+ @classmethod
+ def overwrite_or_add_file(cls, master, builder, test_type, name, data):
+ files = TestFile.get_files(master, builder, test_type, name)
+ if not files:
+ return cls.add_file(master, builder, test_type, name, data)
+ return cls.save_file(files[0], data)
+
+ @classmethod
def add_file(cls, master, builder, test_type, name, data):
file = TestFile()
file.master = master
file.builder = builder
file.test_type = test_type
file.name = name
-
- if not file.save(data):
- return None
-
- logging.info(
- "File saved, master: %s, builder: %s, test_type: %s, name: %s, key: %s.",
- master, builder, test_type, file.name, str(file.data_keys))
-
- return file
+ return cls.save_file(file, data)
def save(self, data):
if not self.save_data(data):
diff --git a/Tools/TestResultServer/robots.txt b/Tools/TestResultServer/robots.txt
new file mode 100644
index 0000000..09e50a7
--- /dev/null
+++ b/Tools/TestResultServer/robots.txt
@@ -0,0 +1,4 @@
+# There's nothing useful to index here. No need to pay the server costs for getting it crawled.
+User-agent: *
+Disallow: /testfile
+
diff --git a/Tools/TestResultServer/static-dashboards/aggregate_results.html b/Tools/TestResultServer/static-dashboards/aggregate_results.html
index a949633..e24a40d 100644
--- a/Tools/TestResultServer/static-dashboards/aggregate_results.html
+++ b/Tools/TestResultServer/static-dashboards/aggregate_results.html
@@ -66,9 +66,12 @@
background-color: #e0eaf1;
}
</style>
-<script src="builders.js"></script>
-<script src="loader.js"></script>
+<script src="base.js"></script>
<script src="string.js"></script>
+<script src="builders.js"></script>
+<script src="builders.jsonp"></script>
+<script src="results.js"></script>
+<script src="loader.js"></script>
<script src="history.js"></script>
<script src="dashboard_base.js"></script>
<script src="ui.js"></script>
diff --git a/Tools/TestResultServer/static-dashboards/aggregate_results.js b/Tools/TestResultServer/static-dashboards/aggregate_results.js
index dd2535c..d5caac2 100644
--- a/Tools/TestResultServer/static-dashboards/aggregate_results.js
+++ b/Tools/TestResultServer/static-dashboards/aggregate_results.js
@@ -79,7 +79,7 @@
function totalFailureCountFor(builder)
{
if (!g_totalFailureCounts[builder])
- g_totalFailureCounts[builder] = getTotalTestCounts(g_resultsByBuilder[builder][FAILURES_BY_TYPE_KEY]);
+ g_totalFailureCounts[builder] = results.testCounts(g_resultsByBuilder[builder][results.NUM_FAILURES_BY_TYPE]);
return g_totalFailureCounts[builder];
}
@@ -99,21 +99,31 @@
function chartHTML(builder)
{
- var results = g_resultsByBuilder[builder];
+ var resultsForBuilder = g_resultsByBuilder[builder];
var totalFailingTests = totalFailureCountFor(builder).totalFailingTests;
- var shouldShowBlinkRevisions = isTipOfTreeWebKitBuilder();
- var revisionKey = shouldShowBlinkRevisions ? BLINK_REVISIONS_KEY : CHROME_REVISIONS_KEY;
- var startRevision = results[revisionKey][totalFailingTests.length - 1];
- var endRevision = results[revisionKey][0];
- var revisionLabel = shouldShowBlinkRevisions ? "Blink Revision" : "Chromium Revision";
- var html = chart("Total failing", {"": totalFailingTests}, revisionLabel, startRevision, endRevision);
+ // Some bots don't properly record revision numbers. Handle that gracefully.
+ var label, values;
+ if (currentBuilderGroup().isToTBlink && resultsForBuilder[results.BLINK_REVISIONS]) {
+ label = 'Blink Revision';
+ values = resultsForBuilder[results.BLINK_REVISIONS]
+ } else if (resultsForBuilder[results.CHROME_REVISIONS]) {
+ label = 'Chrome Revision';
+ values = resultsForBuilder[results.CHROME_REVISIONS];
+ } else {
+ label = 'Build Number';
+ values = resultsForBuilder[results.BUILD_NUMBERS];
+ }
- var values = results[FAILURES_BY_TYPE_KEY];
+ var start = values[totalFailingTests.length - 1];
+ var end = values[0];
+ var html = chart("Total failing", {"": totalFailingTests}, label, start, end);
+
+ var values = resultsForBuilder[results.NUM_FAILURES_BY_TYPE];
// Don't care about number of passes for the charts.
- delete(values[PASS]);
+ delete(values[results.PASS]);
- return html + chart("Detailed breakdown", values, revisionLabel, startRevision, endRevision);
+ return html + chart("Detailed breakdown", values, label, start, end);
}
var LABEL_COLORS = ['FF0000', '00FF00', '0000FF', '000000', 'FF6EB4', 'FFA812', '9B30FF', '00FFCC'];
@@ -180,10 +190,14 @@
return '<img src="' + url + '">';
}
-function htmlForRevisionRows(results, numColumns)
+function htmlForRevisionRows(resultsForBuilder, numColumns)
{
- return htmlForTableRow('Blink Revision', results[BLINK_REVISIONS_KEY].slice(0, numColumns)) +
- htmlForTableRow('Chrome Revision', results[CHROME_REVISIONS_KEY].slice(0, numColumns));
+ var html = '';
+ if (resultsForBuilder[results.BLINK_REVISIONS])
+ html += htmlForTableRow('Blink Revision', resultsForBuilder[results.BLINK_REVISIONS].slice(0, numColumns));
+ if (resultsForBuilder[results.CHROME_REVISIONS])
+ html += htmlForTableRow('Chrome Revision', resultsForBuilder[results.CHROME_REVISIONS].slice(0, numColumns));
+ return html;
}
function htmlForTestType(builder)
@@ -199,14 +213,14 @@
percent.push(Math.round(percentage * 10) / 10 + '%');
}
- var results = g_resultsByBuilder[builder];
+ var resultsForBuilder = g_resultsByBuilder[builder];
html = '<table><tbody>' +
- htmlForRevisionRows(results, totalTests.length) +
+ htmlForRevisionRows(resultsForBuilder, totalTests.length) +
htmlForTableRow('Percent passed', percent) +
htmlForTableRow('Failures', totalFailing) +
htmlForTableRow('Total Tests', totalTests);
- var values = results[FAILURES_BY_TYPE_KEY];
+ var values = resultsForBuilder[results.NUM_FAILURES_BY_TYPE];
for (var expectation in values)
html += htmlForTableRow(expectation, values[expectation]);
diff --git a/Tools/TestResultServer/static-dashboards/aggregate_results_unittest.js b/Tools/TestResultServer/static-dashboards/aggregate_results_unittest.js
index 39d8bfe..ec3eabb 100644
--- a/Tools/TestResultServer/static-dashboards/aggregate_results_unittest.js
+++ b/Tools/TestResultServer/static-dashboards/aggregate_results_unittest.js
@@ -28,7 +28,7 @@
module('aggregate_results');
-function setupAggregateResultsData()
+function setupAggregateResultsData(includeRevisonNumbers)
{
var historyInstance = new history.History(flakinessConfig);
// FIXME(jparent): Remove this once global isn't used.
@@ -37,15 +37,21 @@
historyInstance.crossDashboardState[key] = history.DEFAULT_CROSS_DASHBOARD_STATE_VALUES[key];
var builderName = 'Blink Linux';
- LOAD_BUILDBOT_DATA([{
- name: 'ChromiumWebkit',
- url: 'dummyurl',
- tests: {'layout-tests': {'builders': [builderName]}}
- }]);
- for (var group in LAYOUT_TESTS_BUILDER_GROUPS)
- LAYOUT_TESTS_BUILDER_GROUPS[group] = null;
-
- loadBuildersList('@ToT - chromium.org', 'layout-tests');
+ LOAD_BUILDBOT_DATA({
+ "masters": [
+ {
+ "groups": [ "@ToT Blink" ],
+ "name": "ChromiumWebkit",
+ "tests": {
+ "layout-tests": {
+ "builders": [builderName]
+ }
+ },
+ "url": "http://build.chromium.org/p/chromium.win"
+ }
+ ]
+ });
+ builders.loadBuildersList('@ToT Blink', 'layout-tests');
g_resultsByBuilder[builderName] = {
"num_failures_by_type": {
@@ -59,14 +65,20 @@
"PASS": [ 28104, 28586 ],
"AUDIO": [ 0, 0 ]
},
- blinkRevision: [1234, 1233],
- chromeRevision: [4567, 4566]
+ "buildNumbers": [5, 3]
}
+
+ if (includeRevisonNumbers) {
+ g_resultsByBuilder[builderName][results.BLINK_REVISIONS] = [1234, 1233];
+ g_resultsByBuilder[builderName][results.CHROME_REVISIONS] = [4567, 4566];
+ }
+
g_totalFailureCounts = {};
}
test('htmlForBuilder', 1, function() {
- setupAggregateResultsData();
+ var includeRevisonNumbers = true;
+ setupAggregateResultsData(includeRevisonNumbers);
g_history.dashboardSpecificState.rawValues = false;
var expectedHtml = '<div class=container>' +
@@ -79,8 +91,24 @@
equal(expectedHtml, htmlForBuilder('Blink Linux'));
});
+test('htmlForBuilder', 1, function() {
+ var includeRevisonNumbers = false;
+ setupAggregateResultsData(includeRevisonNumbers);
+ g_history.dashboardSpecificState.rawValues = false;
+
+ var expectedHtml = '<div class=container>' +
+ '<h2>Blink Linux</h2>' +
+ '<a href="timeline_explorer.html#useTestData=true&builder=Blink Linux">' +
+ '<img src="http://chart.apis.google.com/chart?cht=lc&chs=600x400&chd=e:qe..&chg=15,15,1,3&chxt=x,x,y&chxl=1:||Build Number|&chxr=0,3,5|2,0,1445&chtt=Total failing">' +
+ '<img src="http://chart.apis.google.com/chart?cht=lc&chs=600x400&chd=e:AjAt,AcAV,A7A7,DuEc,pB..,DSE4,CoD8,AAAA&chg=15,15,1,3&chxt=x,x,y&chxl=1:||Build Number|&chxr=0,3,5|2,0,1167&chtt=Detailed breakdown&chdl=CRASH|MISSING|IMAGE+TEXT|IMAGE|SKIP|TEXT|TIMEOUT|AUDIO&chco=FF0000,00FF00,0000FF,000000,FF6EB4,FFA812,9B30FF,00FFCC">' +
+ '</a>' +
+ '</div>';
+ equal(expectedHtml, htmlForBuilder('Blink Linux'));
+});
+
test('htmlForBuilderRawResults', 1, function() {
- setupAggregateResultsData();
+ var includeRevisonNumbers = true;
+ setupAggregateResultsData(includeRevisonNumbers);
g_history.dashboardSpecificState.rawValues = true;
var expectedHtml = '<div class=container>' +
@@ -106,3 +134,30 @@
'</div>';
equal(expectedHtml, htmlForBuilder('Blink Linux'));
});
+
+test('htmlForBuilderRawResults', 1, function() {
+ var includeRevisonNumbers = false;
+ setupAggregateResultsData(includeRevisonNumbers);
+ g_history.dashboardSpecificState.rawValues = true;
+
+ var expectedHtml = '<div class=container>' +
+ '<h2>Blink Linux</h2>' +
+ '<table>' +
+ '<tbody>' +
+ '<tr><td>Percent passed</td><td>95.1%</td><td>96.8%</td></tr>' +
+ '<tr><td>Failures</td><td>1445</td><td>959</td></tr>' +
+ '<tr><td>Total Tests</td><td>29549</td><td>29545</td></tr>' +
+ '<tr><td>CRASH</td><td>13</td><td>10</td></tr>' +
+ '<tr><td>MISSING</td><td>6</td><td>8</td></tr>' +
+ '<tr><td>IMAGE+TEXT</td><td>17</td><td>17</td></tr>' +
+ '<tr><td>IMAGE</td><td>81</td><td>68</td></tr>' +
+ '<tr><td>SKIP</td><td>1167</td><td>748</td></tr>' +
+ '<tr><td>TEXT</td><td>89</td><td>60</td></tr>' +
+ '<tr><td>TIMEOUT</td><td>72</td><td>48</td></tr>' +
+ '<tr><td>PASS</td><td>28104</td><td>28586</td></tr>' +
+ '<tr><td>AUDIO</td><td>0</td><td>0</td></tr>' +
+ '</tbody>' +
+ '</table>' +
+ '</div>';
+ equal(expectedHtml, htmlForBuilder('Blink Linux'));
+});
diff --git a/Tools/TestResultServer/static-dashboards/base.js b/Tools/TestResultServer/static-dashboards/base.js
new file mode 100644
index 0000000..31a2832
--- /dev/null
+++ b/Tools/TestResultServer/static-dashboards/base.js
@@ -0,0 +1,47 @@
+// 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.
+
+// FIXME: add array handling methods here under the array namespace (e.g. array.contains).
+
+function $(id)
+{
+ return document.getElementById(id);
+}
+
+// Create a new function with some of its arguments pre-filled.
+// Taken from goog.partial in the Closure library.
+function partial(fn, var_args)
+{
+ var args = Array.prototype.slice.call(arguments, 1);
+ return function() {
+ // Prepend the bound arguments to the current arguments.
+ var newArgs = Array.prototype.slice.call(arguments);
+ newArgs.unshift.apply(newArgs, args);
+ return fn.apply(this, newArgs);
+ };
+};
diff --git a/Tools/TestResultServer/static-dashboards/base_unittests.js b/Tools/TestResultServer/static-dashboards/base_unittests.js
new file mode 100644
index 0000000..a1ad225
--- /dev/null
+++ b/Tools/TestResultServer/static-dashboards/base_unittests.js
@@ -0,0 +1,34 @@
+// 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.
+
+module('base');
+
+test('partial', 1, function() {
+ var sum = function(a, b) { return a + b; };
+ equal(partial(sum, 1)(2), sum(1, 2));
+});
diff --git a/Tools/TestResultServer/static-dashboards/builders.js b/Tools/TestResultServer/static-dashboards/builders.js
index ec4377a..cb334df 100644
--- a/Tools/TestResultServer/static-dashboards/builders.js
+++ b/Tools/TestResultServer/static-dashboards/builders.js
@@ -26,46 +26,143 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-// @fileoverview File that lists builders, their masters, and logical groupings
-// of them.
-
function LOAD_BUILDBOT_DATA(builderData)
{
builders.masters = {};
- builderData.forEach(function(master) {
- builders.masters[master.name] = new builders.BuilderMaster(master.name, master.url, master.tests);
- })
+ var groups = {};
+ var testTypes = {};
+ builderData['masters'].forEach(function(master) {
+ builders.masters[master.name] = new builders.BuilderMaster(master.name, master.url, master.tests, master.groups);
+
+ master.groups.forEach(function(group) { groups[group] = true; });
+
+ Object.keys(master.tests).forEach(function(testType) {
+ if (builders.testTypeUploadsToFlakinessDashboardServer(testType))
+ testTypes[testType] = true;
+ });
+ });
+ builders.groups = Object.keys(groups);
+ builders.groups.sort();
+ builders.testTypes = Object.keys(testTypes);
+ builders.testTypes.sort();
}
var builders = builders || {};
(function() {
-// FIXME: Move some of this loading logic into loader.js.
-
-builders._loadScript = function(url, success, error)
+builders.testTypeUploadsToFlakinessDashboardServer = function(testType)
{
- var script = document.createElement('script');
- script.src = url;
- script.onload = success;
- script.onerror = error;
- document.head.appendChild(script);
+ // FIXME: Encode whether the test uploads to the server in the buildbot json so
+ // we can include that data in buildbot.jsonp and not need to do ugly heuristics
+ // based off the name of the test suite. This code both has some false positives
+ // and some false negatives.
+ return !testType.match(/_only|_ignore|_perf$/) && !testType.match(/^memory test:|install_/) && testType != 'Run tests';
}
-builders._requestBuilders = function()
+var currentBuilderGroup = {};
+var testTypesThatRunToTBlinkBots = ['layout-tests', 'test_shell_tests', 'webkit_unit_tests'];
+
+builders.getBuilderGroup = function(groupName, testType)
{
- var buildersUrl = 'builders.jsonp';
- builders._loadScript(buildersUrl, function() {}, function() {
- console.error('Could not load ' + buildersUrl);
+ if (!builders in currentBuilderGroup) {
+ currentBuilderGroup = builders.loadBuildersList(groupName, testType);
+ }
+ return currentBuilderGroup;
+}
+
+function isChromiumWebkitTipOfTreeTestRunner(builder)
+{
+ // FIXME: Remove the Android check once the android tests bot is actually uploading results.
+ return builder.indexOf('ASAN') == -1 &&
+ builder.indexOf('Android') == -1 &&
+ !isChromiumWebkitDepsTestRunner(builder);
+}
+
+function isChromiumWebkitDepsTestRunner(builder)
+{
+ return builder.indexOf('(deps)') != -1;
+}
+
+builders._builderFilter = function(groupName, testType)
+{
+ if (testTypesThatRunToTBlinkBots.indexOf(testType) == -1)
+ return null;
+
+ if (groupName == '@ToT Blink')
+ return isChromiumWebkitTipOfTreeTestRunner;
+
+ if (groupName == '@ToT Chromium')
+ return isChromiumWebkitDepsTestRunner;
+
+ return null;
+}
+
+var builderToMaster = {};
+
+builders.master = function(builderName)
+{
+ return builderToMaster[builderName];
+}
+
+function populateBuilderToMaster()
+{
+ var allMasterNames = Object.keys(builders.masters);
+
+ allMasterNames.forEach(function(masterName) {
+ var master = builders.masters[masterName];
+ var testTypes = Object.keys(master.tests);
+ testTypes.forEach(function (testType) {
+ var builderList = master.tests[testType].builders;
+ builderList.forEach(function (builderName) {
+ builderToMaster[builderName] = master;
+ });
+ });
});
}
+builders.loadBuildersList = function(groupName, testType)
+{
+ if (!groupName || !testType) {
+ console.warn("Group name and/or test type were empty.");
+ return new builders.BuilderGroup(false);
+ }
+ var builderGroup = new builders.BuilderGroup(groupName == '@ToT Blink');
-builders.BuilderMaster = function(name, basePath, tests)
+ for (masterName in builders.masters) {
+ if (!builders.masters[masterName])
+ continue;
+
+ var master = builders.masters[masterName];
+ var hasTest = testType in master.tests;
+ var isInGroup = master.groups.indexOf(groupName) != -1;
+
+ if (hasTest && isInGroup) {
+ var builderList = master.tests[testType].builders;
+ var builderFilter = builders._builderFilter(groupName, testType);
+ if (builderFilter)
+ builderList = builderList.filter(builderFilter);
+ builderGroup.append(builderList);
+ }
+ }
+
+ populateBuilderToMaster();
+
+ currentBuilderGroup = builderGroup;
+ return currentBuilderGroup;
+}
+
+builders.getAllGroupNames = function()
+{
+ return builders.groups;
+}
+
+builders.BuilderMaster = function(name, basePath, tests, groups)
{
this.name = name;
this.basePath = basePath;
this.tests = tests;
+ this.groups = groups;
}
builders.BuilderMaster.prototype = {
@@ -79,242 +176,55 @@
},
}
-builders._requestBuilders();
-
-})();
-
-// FIXME: Move everything below into the anonymous namespace above.
-
-CHROMIUM_WIN_BUILDER_MASTER = 'ChromiumWin';
-CHROMIUM_MAC_BUILDER_MASTER = 'ChromiumMac';
-CHROMIUM_LINUX_BUILDER_MASTER = 'ChromiumLinux';
-CHROMIUMOS_BUILDER_MASTER = 'ChromiumChromiumOS';
-CHROMIUM_GPU_BUILDER_MASTER = 'ChromiumGPU';
-CHROMIUM_GPU_FYI_BUILDER_MASTER = 'ChromiumGPUFYI';
-CHROMIUM_FYI_BUILDER_MASTER = 'ChromiumFYI';
-CHROMIUM_PERF_AV_BUILDER_MASTER = 'ChromiumPerfAv';
-CHROMIUM_WEBKIT_BUILDER_MASTER = 'ChromiumWebkit';
-
-var LEGACY_BUILDER_MASTERS_TO_GROUPS = {
- 'Chromium': '@DEPS - chromium.org',
- 'ChromiumWin': '@DEPS - chromium.org',
- 'ChromiumMac': '@DEPS - chromium.org',
- 'ChromiumLinux': '@DEPS - chromium.org',
- 'ChromiumChromiumOS': '@DEPS CrOS - chromium.org',
- 'ChromiumGPU': '@DEPS - chromium.org',
- 'ChromiumGPUFYI': '@DEPS FYI - chromium.org',
- 'ChromiumPerfAv': '@DEPS - chromium.org',
- 'ChromiumWebkit': '@ToT - chromium.org'
-};
-
-function BuilderGroup(isToTWebKit)
+builders.BuilderGroup = function(isToTBlink)
{
- this.isToTWebKit = isToTWebKit;
+ this.isToTBlink = isToTBlink;
// Map of builderName (the name shown in the waterfall) to builderPath (the
// path used in the builder's URL)
this.builders = {};
}
-BuilderGroup.prototype.append = function(builders) {
- builders.forEach(function(builderName) {
- this.builders[builderName] = builderName.replace(/[ .()]/g, '_');
- }, this);
-};
-
-BuilderGroup.prototype.defaultBuilder = function()
-{
- for (var builder in this.builders)
- return builder;
- console.error('There are no builders in this builder group.');
+builders.BuilderGroup.prototype = {
+ append: function(builders) {
+ builders.forEach(function(builderName) {
+ this.builders[builderName] = builderName.replace(/[ .()]/g, '_');
+ }, this);
+ },
+ defaultBuilder: function()
+ {
+ for (var builder in this.builders)
+ return builder;
+ console.error('There are no builders in this builder group.');
+ },
+ master: function()
+ {
+ return builders.master(this.defaultBuilder());
+ },
}
-BuilderGroup.prototype.master = function()
+builders.groupNamesForTestType = function(testType)
{
- return builderMaster(this.defaultBuilder());
-}
-
-BuilderGroup.TOT_WEBKIT = true;
-BuilderGroup.DEPS_WEBKIT = false;
-
-var BUILDER_TO_MASTER = {};
-
-function builderMaster(builderName)
-{
- return BUILDER_TO_MASTER[builderName];
-}
-
-function requestBuilderList(builderGroups, masterName, groupName, builderGroup, testType, opt_builderFilter)
-{
- if (!builderGroups[groupName])
- builderGroups[groupName] = builderGroup;
- var master = builders.masters[masterName];
- var builderList = master.tests[testType].builders;
- if (opt_builderFilter)
- builderList = builderList.filter(opt_builderFilter);
- builderList.forEach(function(builderName) {
- BUILDER_TO_MASTER[builderName] = master;
- });
- builderGroups[groupName].append(builderList);
-}
-
-function isChromiumContentShellTestRunner(builder)
-{
- return builder.indexOf('(Content Shell)') != -1;
-}
-
-function isChromiumWebkitTipOfTreeTestRunner(builder)
-{
- // FIXME: Remove the Android check once the android tests bot is actually uploading results.
- return builder.indexOf('ASAN') == -1 && !isChromiumContentShellTestRunner(builder) && builder.indexOf('Android') == -1 && !isChromiumWebkitDepsTestRunner(builder);
-}
-
-function isChromiumWebkitDepsTestRunner(builder)
-{
- return builder.indexOf('(deps)') != -1;
-}
-
-// FIXME: Look into whether we can move the grouping logic into builders.jsonp and get rid of this code.
-function loadBuildersList(groupName, testType) {
- switch (testType) {
- case 'gl_tests':
- case 'gpu_tests':
- switch(groupName) {
- case '@DEPS - chromium.org':
- var builderGroup = new BuilderGroup(BuilderGroup.DEPS_WEBKIT);
- requestBuilderList(CHROMIUM_GPU_TESTS_BUILDER_GROUPS, CHROMIUM_GPU_BUILDER_MASTER, groupName, builderGroup, testType);
- break;
-
- case '@DEPS FYI - chromium.org':
- var builderGroup = new BuilderGroup(BuilderGroup.DEPS_WEBKIT);
- requestBuilderList(CHROMIUM_GPU_TESTS_BUILDER_GROUPS, CHROMIUM_GPU_FYI_BUILDER_MASTER, groupName, builderGroup, testType);
- break;
-
- case '@ToT - chromium.org':
- var builderGroup = new BuilderGroup(BuilderGroup.TOT_WEBKIT);
- requestBuilderList(CHROMIUM_GPU_TESTS_BUILDER_GROUPS, CHROMIUM_WEBKIT_BUILDER_MASTER, groupName, builderGroup, testType);
- break;
+ var groupNames = [];
+ for (masterName in builders.masters) {
+ var master = builders.masters[masterName];
+ if (testType in master.tests) {
+ groupNames = groupNames.concat(master.groups);
}
- break;
-
- case 'layout-tests':
- switch(groupName) {
- case 'Content Shell @ToT - chromium.org':
- var builderGroup = new BuilderGroup(BuilderGroup.TOT_WEBKIT);
- requestBuilderList(LAYOUT_TESTS_BUILDER_GROUPS, CHROMIUM_WEBKIT_BUILDER_MASTER, groupName, builderGroup, testType, isChromiumContentShellTestRunner);
- break;
-
- case '@ToT - chromium.org':
- var builderGroup = new BuilderGroup(BuilderGroup.TOT_WEBKIT);
- requestBuilderList(LAYOUT_TESTS_BUILDER_GROUPS, CHROMIUM_WEBKIT_BUILDER_MASTER, groupName, builderGroup, testType, isChromiumWebkitTipOfTreeTestRunner);
- break;
-
- case '@DEPS - chromium.org':
- var builderGroup = new BuilderGroup(BuilderGroup.DEPS_WEBKIT);
- requestBuilderList(LAYOUT_TESTS_BUILDER_GROUPS, CHROMIUM_WEBKIT_BUILDER_MASTER, groupName, builderGroup, testType, isChromiumWebkitDepsTestRunner);
- requestBuilderList(LAYOUT_TESTS_BUILDER_GROUPS, CHROMIUM_PERF_AV_BUILDER_MASTER, groupName, builderGroup, testType);
- break;
- }
- break;
-
- case 'test_shell_tests':
- case 'webkit_unit_tests':
- switch(groupName) {
- case '@ToT - chromium.org':
- var builderGroup = new BuilderGroup(BuilderGroup.TOT_WEBKIT);
- requestBuilderList(TEST_SHELL_TESTS_BUILDER_GROUPS, CHROMIUM_WEBKIT_BUILDER_MASTER, groupName, builderGroup, testType, isChromiumWebkitTipOfTreeTestRunner);
- break;
-
- case '@DEPS - chromium.org':
- var builderGroup = new BuilderGroup(BuilderGroup.DEPS_WEBKIT);
- requestBuilderList(TEST_SHELL_TESTS_BUILDER_GROUPS, CHROMIUM_WEBKIT_BUILDER_MASTER, groupName, builderGroup, testType, isChromiumWebkitDepsTestRunner);
- break;
- }
- break;
-
- case 'androidwebview_instrumentation_tests':
- case 'chromiumtestshell_instrumentation_tests':
- case 'contentshell_instrumentation_tests':
- switch(groupName) {
- case '@DEPS - chromium.org':
- var builderGroup = new BuilderGroup(BuilderGroup.DEPS_WEBKIT);
- requestBuilderList(CHROMIUM_INSTRUMENTATION_TESTS_BUILDER_GROUPS, CHROMIUM_LINUX_BUILDER_MASTER, groupName, builderGroup, testType);
- break;
-
- case '@DEPS FYI - chromium.org':
- var builderGroup = new BuilderGroup(BuilderGroup.DEPS_WEBKIT);
- requestBuilderList(CHROMIUM_INSTRUMENTATION_TESTS_BUILDER_GROUPS, CHROMIUM_FYI_BUILDER_MASTER , groupName, builderGroup, testType);
- break;
- }
- break;
-
- case 'cc_unittests':
- switch(groupName) {
- case '@DEPS - chromium.org':
- var builderGroup = new BuilderGroup(BuilderGroup.DEPS_WEBKIT);
- requestBuilderList(CC_UNITTEST_BUILDER_GROUPS, CHROMIUM_WIN_BUILDER_MASTER, groupName, builderGroup, testType);
- requestBuilderList(CC_UNITTEST_BUILDER_GROUPS, CHROMIUM_MAC_BUILDER_MASTER, groupName, builderGroup, testType);
- requestBuilderList(CC_UNITTEST_BUILDER_GROUPS, CHROMIUM_LINUX_BUILDER_MASTER, groupName, builderGroup, testType);
- break;
-
- case '@ToT - chromium.org':
- var builderGroup = new BuilderGroup(BuilderGroup.TOT_WEBKIT);
- requestBuilderList(CC_UNITTEST_BUILDER_GROUPS, CHROMIUM_WEBKIT_BUILDER_MASTER, groupName, builderGroup, testType);
- break;
- }
- break;
-
- default:
- switch(groupName) {
- case '@DEPS - chromium.org':
- var builderGroup = new BuilderGroup(BuilderGroup.DEPS_WEBKIT);
- requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, CHROMIUM_WIN_BUILDER_MASTER, groupName, builderGroup, testType);
- requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, CHROMIUM_MAC_BUILDER_MASTER, groupName, builderGroup, testType);
- requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, CHROMIUM_LINUX_BUILDER_MASTER, groupName, builderGroup, testType);
- break;
-
- case '@DEPS CrOS - chromium.org':
- var builderGroup = new BuilderGroup(BuilderGroup.DEPS_WEBKIT);
- requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, CHROMIUMOS_BUILDER_MASTER, groupName, builderGroup, testType);
- break;
-
- case '@ToT - chromium.org':
- var builderGroup = new BuilderGroup(BuilderGroup.TOT_WEBKIT);
- requestBuilderList(CHROMIUM_GTESTS_BUILDER_GROUPS, CHROMIUM_WEBKIT_BUILDER_MASTER, groupName, builderGroup, testType);
- break;
- }
- break;
}
+
+ if (groupNames.length == 0) {
+ console.error("The current test type wasn't present in any groups:", testType);
+ return groupNames;
+ }
+
+ var groupNames = groupNames.reduce(function(prev, curr) {
+ if (prev.indexOf(curr) == -1) {
+ prev.push(curr);
+ }
+ return prev;
+ }, []);
+
+ return groupNames;
}
-var TEST_SHELL_TESTS_BUILDER_GROUPS = {
- '@ToT - chromium.org': null,
- '@DEPS - chromium.org': null,
-};
-
-var LAYOUT_TESTS_BUILDER_GROUPS = {
- '@ToT - chromium.org': null,
- '@DEPS - chromium.org': null,
- 'Content Shell @ToT - chromium.org': null,
-};
-
-var CHROMIUM_GPU_TESTS_BUILDER_GROUPS = {
- '@DEPS - chromium.org': null,
- '@DEPS FYI - chromium.org': null,
- '@ToT - chromium.org': null,
-};
-
-var CHROMIUM_GTESTS_BUILDER_GROUPS = {
- '@DEPS - chromium.org': null,
- '@DEPS CrOS - chromium.org': null,
- '@ToT - chromium.org': null,
-};
-
-var CHROMIUM_INSTRUMENTATION_TESTS_BUILDER_GROUPS = {
- '@DEPS - chromium.org': null,
- '@DEPS FYI - chromium.org': null,
-};
-
-var CC_UNITTEST_BUILDER_GROUPS = {
- '@ToT - chromium.org': null,
- '@DEPS - chromium.org': null,
-};
\ No newline at end of file
+})();
\ No newline at end of file
diff --git a/Tools/TestResultServer/static-dashboards/builders.jsonp b/Tools/TestResultServer/static-dashboards/builders.jsonp
index 0e6a713..37c4e0d 100644
--- a/Tools/TestResultServer/static-dashboards/builders.jsonp
+++ b/Tools/TestResultServer/static-dashboards/builders.jsonp
@@ -1,2931 +1,2930 @@
// This file is auto-generated by Tools/TestResultServer/generate_builders_json.py. It should not be manually modified.
// It uses jsonp instead of proper json because we want to be able to load it from a file URL in Chrome for local testing.
-LOAD_BUILDBOT_DATA([
- {
- "name": "ChromiumWin",
- "tests": {
- "ash_unittests": {
- "builders": [
- "Win8 Aura",
- "Win Aura Tests (1)"
- ]
+LOAD_BUILDBOT_DATA({
+ "masters": [
+ {
+ "groups": [
+ "@ToT Chromium"
+ ],
+ "name": "ChromiumWin",
+ "tests": {
+ "ash_unittests": {
+ "builders": [
+ "Win Aura Tests (1)",
+ "Win8 Aura"
+ ]
+ },
+ "aura_unittests": {
+ "builders": [
+ "Win Aura Tests (1)",
+ "Win8 Aura"
+ ]
+ },
+ "base_unittests": {
+ "builders": [
+ "Vista Tests (2)",
+ "Win 7 Tests x64 (2)",
+ "Win7 Tests (2)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (2)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "browser_tests": {
+ "builders": [
+ "Vista Tests (1)",
+ "Vista Tests (2)",
+ "Vista Tests (3)",
+ "Win Aura Tests (1)",
+ "Win Aura Tests (2)",
+ "Win Aura Tests (3)",
+ "Win7 Tests (1)",
+ "Win7 Tests (2)",
+ "Win7 Tests (3)",
+ "Win7 Tests (dbg)(2)",
+ "Win7 Tests (dbg)(3)",
+ "Win7 Tests (dbg)(4)",
+ "Win7 Tests (dbg)(5)",
+ "Win7 Tests (dbg)(6)",
+ "XP Tests (1)",
+ "XP Tests (2)",
+ "XP Tests (3)",
+ "XP Tests (dbg)(2)",
+ "XP Tests (dbg)(3)",
+ "XP Tests (dbg)(4)",
+ "XP Tests (dbg)(5)",
+ "XP Tests (dbg)(6)"
+ ]
+ },
+ "cacheinvalidation_unittests": {
+ "builders": [
+ "Vista Tests (1)",
+ "Win 7 Tests x64 (1)",
+ "Win7 Tests (1)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (1)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "cc_unittests": {
+ "builders": [
+ "Vista Tests (1)",
+ "Win 7 Tests x64 (1)",
+ "Win7 Tests (1)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (1)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "chrome_frame_net_tests": {
+ "builders": [
+ "Chrome Frame Tests (ie6)",
+ "Chrome Frame Tests (ie7)",
+ "Chrome Frame Tests (ie8)",
+ "Chrome Frame Tests (ie9)"
+ ]
+ },
+ "chrome_frame_tests": {
+ "builders": [
+ "Chrome Frame Tests (ie6)",
+ "Chrome Frame Tests (ie7)",
+ "Chrome Frame Tests (ie8)",
+ "Chrome Frame Tests (ie9)"
+ ]
+ },
+ "chrome_frame_unittests": {
+ "builders": [
+ "Chrome Frame Tests (ie6)",
+ "Chrome Frame Tests (ie7)",
+ "Chrome Frame Tests (ie8)",
+ "Chrome Frame Tests (ie9)"
+ ]
+ },
+ "chromedriver2_unittests": {
+ "builders": [
+ "Vista Tests (1)",
+ "Win 7 Tests x64 (1)",
+ "Win7 Tests (1)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (1)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "components_unittests": {
+ "builders": [
+ "Vista Tests (3)",
+ "Win 7 Tests x64 (3)",
+ "Win7 Tests (3)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (3)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "compositor_unittests": {
+ "builders": [
+ "Win Aura Tests (2)",
+ "Win8 Aura"
+ ]
+ },
+ "content_browsertests": {
+ "builders": [
+ "Vista Tests (1)",
+ "Win 7 Tests x64 (1)",
+ "Win Aura Tests (1)",
+ "Win7 Tests (1)",
+ "Win7 Tests (dbg)(2)",
+ "XP Tests (1)",
+ "XP Tests (dbg)(2)"
+ ]
+ },
+ "content_unittests": {
+ "builders": [
+ "Vista Tests (3)",
+ "Win 7 Tests x64 (3)",
+ "Win Aura Tests (2)",
+ "Win7 Tests (3)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (3)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "courgette_unittests": {
+ "builders": [
+ "Vista Tests (1)",
+ "Win 7 Tests x64 (1)",
+ "Win7 Tests (1)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (1)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "crypto_unittests": {
+ "builders": [
+ "Vista Tests (1)",
+ "Win 7 Tests x64 (1)",
+ "Win7 Tests (1)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (1)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "gpu_unittests": {
+ "builders": [
+ "Vista Tests (1)",
+ "Win 7 Tests x64 (1)",
+ "Win7 Tests (1)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (1)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "installer_util_unittests": {
+ "builders": [
+ "Vista Tests (1)",
+ "Win 7 Tests x64 (1)",
+ "Win7 Tests (1)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (1)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "interactive_ui_tests": {
+ "builders": [
+ "Interactive Tests (dbg)",
+ "Vista Tests (1)",
+ "Win 7 Tests x64 (1)",
+ "Win Aura Tests (3)",
+ "Win7 Tests (1)",
+ "XP Tests (1)"
+ ]
+ },
+ "ipc_tests": {
+ "builders": [
+ "Vista Tests (3)",
+ "Win 7 Tests x64 (3)",
+ "Win7 Tests (3)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (3)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "jingle_unittests": {
+ "builders": [
+ "Vista Tests (1)",
+ "Win 7 Tests x64 (1)",
+ "Win7 Tests (1)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (1)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "media_unittests": {
+ "builders": [
+ "Vista Tests (1)",
+ "Win 7 Tests x64 (1)",
+ "Win7 Tests (1)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (1)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "mini_installer_test": {
+ "builders": [
+ "Vista Tests (1)",
+ "Win7 Tests (1)",
+ "XP Tests (1)"
+ ]
+ },
+ "net_unittests": {
+ "builders": [
+ "Vista Tests (2)",
+ "Win 7 Tests x64 (2)",
+ "Win7 Tests (2)",
+ "Win7 Tests (dbg)(2)",
+ "XP Tests (2)",
+ "XP Tests (dbg)(2)"
+ ]
+ },
+ "ppapi_unittests": {
+ "builders": [
+ "Vista Tests (1)",
+ "Win 7 Tests x64 (1)",
+ "Win7 Tests (1)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (1)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "printing_unittests": {
+ "builders": [
+ "Vista Tests (1)",
+ "Win 7 Tests x64 (1)",
+ "Win7 Tests (1)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (1)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "remoting_unittests": {
+ "builders": [
+ "Vista Tests (1)",
+ "Win 7 Tests x64 (1)",
+ "Win7 Tests (1)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (1)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "sbox_integration_tests": {
+ "builders": [
+ "Vista Tests (1)",
+ "Win 7 Tests x64 (1)",
+ "Win7 Tests (1)",
+ "Win7 Tests (dbg)(3)",
+ "XP Tests (1)",
+ "XP Tests (dbg)(3)"
+ ]
+ },
+ "sbox_unittests": {
+ "builders": [
+ "Vista Tests (1)",
+ "Win 7 Tests x64 (1)",
+ "Win7 Tests (1)",
+ "Win7 Tests (dbg)(3)",
+ "XP Tests (1)",
+ "XP Tests (dbg)(3)"
+ ]
+ },
+ "sbox_validation_tests": {
+ "builders": [
+ "Vista Tests (1)",
+ "Win7 Tests (1)",
+ "Win7 Tests (dbg)(3)",
+ "XP Tests (1)",
+ "XP Tests (dbg)(3)"
+ ]
+ },
+ "sbox_validation_tests_buildrunner_ignore": {
+ "builders": [
+ "Win 7 Tests x64 (1)"
+ ]
+ },
+ "sql_unittests": {
+ "builders": [
+ "Vista Tests (3)",
+ "Win 7 Tests x64 (3)",
+ "Win7 Tests (3)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (3)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "sync_integration_tests": {
+ "builders": [
+ "Win7 Sync",
+ "Win7 Sync x64"
+ ]
+ },
+ "sync_unit_tests": {
+ "builders": [
+ "Vista Tests (3)",
+ "Win 7 Tests x64 (3)",
+ "Win7 Tests (3)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (3)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "ui_unittests": {
+ "builders": [
+ "Vista Tests (3)",
+ "Win 7 Tests x64 (3)",
+ "Win7 Tests (3)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (3)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "unit_tests": {
+ "builders": [
+ "Vista Tests (3)",
+ "Win 7 Tests x64 (3)",
+ "Win Aura Tests (2)",
+ "Win7 Tests (3)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (3)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "url_unittests": {
+ "builders": [
+ "Vista Tests (1)",
+ "Win 7 Tests x64 (1)",
+ "Win7 Tests (1)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (1)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "views_unittests": {
+ "builders": [
+ "Vista Tests (3)",
+ "Win 7 Tests x64 (3)",
+ "Win Aura Tests (2)",
+ "Win7 Tests (3)",
+ "Win7 Tests (dbg)(1)",
+ "Win8 Aura",
+ "XP Tests (3)",
+ "XP Tests (dbg)(1)"
+ ]
+ },
+ "webkit_compositor_bindings_unittests": {
+ "builders": [
+ "Vista Tests (1)",
+ "Win 7 Tests x64 (1)",
+ "Win7 Tests (1)",
+ "Win7 Tests (dbg)(1)",
+ "XP Tests (1)",
+ "XP Tests (dbg)(1)"
+ ]
+ }
},
- "aura_unittests": {
- "builders": [
- "Win8 Aura",
- "Win Aura Tests (1)"
- ]
- },
- "base_unittests": {
- "builders": [
- "Win7 Tests (dbg)(1)",
- "XP Tests (2)",
- "Win7 Tests (2)",
- "Vista Tests (2)",
- "Win 7 Tests x64 (2)",
- "XP Tests (dbg)(1)"
- ]
- },
- "browser_tests": {
- "builders": [
- "XP Tests (dbg)(5)",
- "XP Tests (1)",
- "Win7 Tests (dbg)(3)",
- "Win7 Tests (dbg)(5)",
- "XP Tests (3)",
- "XP Tests (dbg)(4)",
- "Vista Tests (1)",
- "Win Aura Tests (2)",
- "Vista Tests (3)",
- "XP Tests (2)",
- "XP Tests (dbg)(2)",
- "Win7 Tests (dbg)(6)",
- "XP Tests (dbg)(6)",
- "Win7 Tests (2)",
- "Win7 Tests (dbg)(4)",
- "Win7 Tests (3)",
- "Win7 Tests (dbg)(2)",
- "Vista Tests (2)",
- "Win7 Tests (1)",
- "Win Aura Tests (3)",
- "Win Aura Tests (1)",
- "XP Tests (dbg)(3)"
- ]
- },
- "cacheinvalidation_unittests": {
- "builders": [
- "XP Tests (1)",
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (1)",
- "Vista Tests (1)",
- "Win7 Tests (1)",
- "XP Tests (dbg)(1)"
- ]
- },
- "cc_unittests": {
- "builders": [
- "XP Tests (1)",
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (1)",
- "Vista Tests (1)",
- "Win7 Tests (1)",
- "XP Tests (dbg)(1)"
- ]
- },
- "chrome_frame_net_tests": {
- "builders": [
- "Chrome Frame Tests (ie8)",
- "Chrome Frame Tests (ie6)",
- "Chrome Frame Tests (ie7)",
- "Chrome Frame Tests (ie9)"
- ]
- },
- "chrome_frame_tests": {
- "builders": [
- "Chrome Frame Tests (ie8)",
- "Chrome Frame Tests (ie6)",
- "Chrome Frame Tests (ie7)",
- "Chrome Frame Tests (ie9)"
- ]
- },
- "chrome_frame_unittests": {
- "builders": [
- "Chrome Frame Tests (ie8)",
- "Chrome Frame Tests (ie6)",
- "Chrome Frame Tests (ie7)",
- "Chrome Frame Tests (ie9)"
- ]
- },
- "chromedriver2_unittests": {
- "builders": [
- "XP Tests (1)",
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (1)",
- "Vista Tests (1)",
- "Win7 Tests (1)",
- "XP Tests (dbg)(1)"
- ]
- },
- "components_unittests": {
- "builders": [
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (3)",
- "XP Tests (3)",
- "Vista Tests (3)",
- "Win7 Tests (3)",
- "XP Tests (dbg)(1)"
- ]
- },
- "compositor_unittests": {
- "builders": [
- "Win Aura Tests (2)",
- "Win8 Aura"
- ]
- },
- "content_browsertests": {
- "builders": [
- "XP Tests (1)",
- "Win 7 Tests x64 (1)",
- "Vista Tests (1)",
- "XP Tests (dbg)(2)",
- "Win7 Tests (dbg)(2)",
- "Win7 Tests (1)",
- "Win Aura Tests (1)"
- ]
- },
- "content_unittests": {
- "builders": [
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (3)",
- "XP Tests (3)",
- "Win Aura Tests (2)",
- "Vista Tests (3)",
- "Win7 Tests (3)",
- "XP Tests (dbg)(1)"
- ]
- },
- "courgette_unittests": {
- "builders": [
- "XP Tests (1)",
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (1)",
- "Vista Tests (1)",
- "Win7 Tests (1)",
- "XP Tests (dbg)(1)"
- ]
- },
- "crypto_unittests": {
- "builders": [
- "XP Tests (1)",
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (1)",
- "Vista Tests (1)",
- "Win7 Tests (1)",
- "XP Tests (dbg)(1)"
- ]
- },
- "googleurl_unittests": {
- "builders": [
- "XP Tests (1)",
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (1)",
- "Vista Tests (1)",
- "Win7 Tests (1)",
- "XP Tests (dbg)(1)"
- ]
- },
- "gpu_unittests": {
- "builders": [
- "XP Tests (1)",
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (1)",
- "Vista Tests (1)",
- "Win7 Tests (1)",
- "XP Tests (dbg)(1)"
- ]
- },
- "installer_util_unittests": {
- "builders": [
- "XP Tests (1)",
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (1)",
- "Vista Tests (1)",
- "Win7 Tests (1)",
- "XP Tests (dbg)(1)"
- ]
- },
- "interactive_ui_tests": {
- "builders": [
- "XP Tests (1)",
- "Interactive Tests (dbg)",
- "Win 7 Tests x64 (1)",
- "Vista Tests (1)",
- "Win7 Tests (1)",
- "Win Aura Tests (3)"
- ]
- },
- "ipc_tests": {
- "builders": [
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (3)",
- "XP Tests (3)",
- "Vista Tests (3)",
- "Win7 Tests (3)",
- "XP Tests (dbg)(1)"
- ]
- },
- "jingle_unittests": {
- "builders": [
- "XP Tests (1)",
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (1)",
- "Vista Tests (1)",
- "Win7 Tests (1)",
- "XP Tests (dbg)(1)"
- ]
- },
- "media_unittests": {
- "builders": [
- "XP Tests (1)",
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (1)",
- "Vista Tests (1)",
- "Win7 Tests (1)",
- "XP Tests (dbg)(1)"
- ]
- },
- "mini_installer_test": {
- "builders": [
- "XP Tests (1)",
- "Vista Tests (1)",
- "Win7 Tests (1)"
- ]
- },
- "net_unittests": {
- "builders": [
- "XP Tests (2)",
- "XP Tests (dbg)(2)",
- "Win7 Tests (2)",
- "Win7 Tests (dbg)(2)",
- "Vista Tests (2)",
- "Win 7 Tests x64 (2)"
- ]
- },
- "ppapi_unittests": {
- "builders": [
- "XP Tests (1)",
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (1)",
- "Vista Tests (1)",
- "Win7 Tests (1)",
- "XP Tests (dbg)(1)"
- ]
- },
- "printing_unittests": {
- "builders": [
- "XP Tests (1)",
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (1)",
- "Vista Tests (1)",
- "Win7 Tests (1)",
- "XP Tests (dbg)(1)"
- ]
- },
- "remoting_unittests": {
- "builders": [
- "XP Tests (1)",
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (1)",
- "Vista Tests (1)",
- "Win7 Tests (1)",
- "XP Tests (dbg)(1)"
- ]
- },
- "sbox_integration_tests": {
- "builders": [
- "XP Tests (1)",
- "Win7 Tests (dbg)(3)",
- "Win 7 Tests x64 (1)",
- "Vista Tests (1)",
- "Win7 Tests (1)",
- "XP Tests (dbg)(3)"
- ]
- },
- "sbox_unittests": {
- "builders": [
- "XP Tests (1)",
- "Win7 Tests (dbg)(3)",
- "Win 7 Tests x64 (1)",
- "Vista Tests (1)",
- "Win7 Tests (1)",
- "XP Tests (dbg)(3)"
- ]
- },
- "sbox_validation_tests": {
- "builders": [
- "XP Tests (1)",
- "Win7 Tests (dbg)(3)",
- "Vista Tests (1)",
- "Win7 Tests (1)",
- "XP Tests (dbg)(3)"
- ]
- },
- "sbox_validation_tests_buildrunner_ignore": {
- "builders": [
- "Win 7 Tests x64 (1)"
- ]
- },
- "sql_unittests": {
- "builders": [
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (3)",
- "XP Tests (3)",
- "Vista Tests (3)",
- "Win7 Tests (3)",
- "XP Tests (dbg)(1)"
- ]
- },
- "sync_integration_tests": {
- "builders": [
- "Win7 Sync",
- "Win7 Sync x64"
- ]
- },
- "sync_unit_tests": {
- "builders": [
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (3)",
- "XP Tests (3)",
- "Vista Tests (3)",
- "Win7 Tests (3)",
- "XP Tests (dbg)(1)"
- ]
- },
- "ui_unittests": {
- "builders": [
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (3)",
- "XP Tests (3)",
- "Vista Tests (3)",
- "Win7 Tests (3)",
- "XP Tests (dbg)(1)"
- ]
- },
- "unit_tests": {
- "builders": [
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (3)",
- "XP Tests (3)",
- "Win Aura Tests (2)",
- "Vista Tests (3)",
- "Win7 Tests (3)",
- "XP Tests (dbg)(1)"
- ]
- },
- "views_unittests": {
- "builders": [
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (3)",
- "XP Tests (3)",
- "Win Aura Tests (2)",
- "Vista Tests (3)",
- "Win7 Tests (3)",
- "Win8 Aura",
- "XP Tests (dbg)(1)"
- ]
- },
- "webkit_compositor_bindings_unittests": {
- "builders": [
- "XP Tests (1)",
- "Win7 Tests (dbg)(1)",
- "Win 7 Tests x64 (1)",
- "Vista Tests (1)",
- "Win7 Tests (1)",
- "XP Tests (dbg)(1)"
- ]
- }
+ "url": "http://build.chromium.org/p/chromium.win"
},
- "url": "http://build.chromium.org/p/chromium.win"
- },
- {
- "name": "ChromiumMac",
- "tests": {
- "base_unittests": {
- "builders": [
- "Mac10.7 Tests (1)",
- "iOS Simulator (dbg)",
- "Mac 10.7 Tests (dbg)(3)",
- "Mac10.6 Tests (1)",
- "Mac 10.6 Tests (dbg)(3)"
- ]
+ {
+ "groups": [
+ "@ToT Chromium"
+ ],
+ "name": "ChromiumMac",
+ "tests": {
+ "base_unittests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(3)",
+ "Mac 10.7 Tests (dbg)(3)",
+ "Mac10.6 Tests (1)",
+ "Mac10.7 Tests (1)",
+ "iOS Simulator (dbg)"
+ ]
+ },
+ "browser_tests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(1)",
+ "Mac 10.6 Tests (dbg)(2)",
+ "Mac 10.6 Tests (dbg)(3)",
+ "Mac 10.6 Tests (dbg)(4)",
+ "Mac 10.7 Tests (dbg)(1)",
+ "Mac 10.7 Tests (dbg)(2)",
+ "Mac 10.7 Tests (dbg)(3)",
+ "Mac 10.7 Tests (dbg)(4)",
+ "Mac10.6 Tests (1)",
+ "Mac10.6 Tests (2)",
+ "Mac10.6 Tests (3)",
+ "Mac10.7 Tests (1)",
+ "Mac10.7 Tests (2)",
+ "Mac10.7 Tests (3)"
+ ]
+ },
+ "cacheinvalidation_unittests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(1)",
+ "Mac 10.7 Tests (dbg)(1)",
+ "Mac10.6 Tests (1)",
+ "Mac10.7 Tests (1)"
+ ]
+ },
+ "cc_unittests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(1)",
+ "Mac 10.7 Tests (dbg)(1)",
+ "Mac10.6 Tests (1)",
+ "Mac10.7 Tests (1)"
+ ]
+ },
+ "chromedriver2_unittests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(1)",
+ "Mac 10.7 Tests (dbg)(1)",
+ "Mac10.6 Tests (1)",
+ "Mac10.7 Tests (1)"
+ ]
+ },
+ "components_unittests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(4)",
+ "Mac 10.7 Tests (dbg)(4)",
+ "Mac10.6 Tests (2)",
+ "Mac10.7 Tests (2)"
+ ]
+ },
+ "content_browsertests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(1)",
+ "Mac 10.7 Tests (dbg)(1)",
+ "Mac10.6 Tests (1)",
+ "Mac10.7 Tests (1)"
+ ]
+ },
+ "content_unittests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(4)",
+ "Mac 10.7 Tests (dbg)(4)",
+ "Mac10.6 Tests (2)",
+ "Mac10.7 Tests (2)",
+ "iOS Simulator (dbg)"
+ ]
+ },
+ "crypto_unittests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(1)",
+ "Mac 10.7 Tests (dbg)(1)",
+ "Mac10.6 Tests (1)",
+ "Mac10.7 Tests (1)",
+ "iOS Simulator (dbg)"
+ ]
+ },
+ "gpu_unittests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(1)",
+ "Mac 10.7 Tests (dbg)(1)",
+ "Mac10.6 Tests (1)",
+ "Mac10.7 Tests (1)"
+ ]
+ },
+ "interactive_ui_tests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(3)",
+ "Mac 10.7 Tests (dbg)(3)",
+ "Mac10.6 Tests (1)",
+ "Mac10.7 Tests (1)"
+ ]
+ },
+ "ipc_tests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(4)",
+ "Mac 10.7 Tests (dbg)(4)",
+ "Mac10.6 Tests (2)",
+ "Mac10.7 Tests (2)"
+ ]
+ },
+ "jingle_unittests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(1)",
+ "Mac 10.7 Tests (dbg)(1)",
+ "Mac10.6 Tests (1)",
+ "Mac10.7 Tests (1)"
+ ]
+ },
+ "media_unittests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(2)",
+ "Mac 10.7 Tests (dbg)(2)",
+ "Mac10.6 Tests (1)",
+ "Mac10.7 Tests (1)",
+ "iOS Simulator (dbg)"
+ ]
+ },
+ "message_center_unittests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(4)",
+ "Mac 10.7 Tests (dbg)(4)",
+ "Mac10.6 Tests (3)",
+ "Mac10.7 Tests (3)"
+ ]
+ },
+ "net_unittests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(2)",
+ "Mac 10.7 Tests (dbg)(2)",
+ "Mac10.6 Tests (3)",
+ "Mac10.7 Tests (3)",
+ "iOS Simulator (dbg)"
+ ]
+ },
+ "ppapi_unittests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(1)",
+ "Mac 10.7 Tests (dbg)(1)",
+ "Mac10.6 Tests (1)",
+ "Mac10.7 Tests (1)"
+ ]
+ },
+ "printing_unittests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(1)",
+ "Mac 10.7 Tests (dbg)(1)",
+ "Mac10.6 Tests (1)",
+ "Mac10.7 Tests (1)"
+ ]
+ },
+ "remoting_unittests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(1)",
+ "Mac 10.7 Tests (dbg)(1)",
+ "Mac10.6 Tests (1)",
+ "Mac10.7 Tests (1)"
+ ]
+ },
+ "sql_unittests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(4)",
+ "Mac 10.7 Tests (dbg)(4)",
+ "Mac10.6 Tests (2)",
+ "Mac10.7 Tests (2)",
+ "iOS Simulator (dbg)"
+ ]
+ },
+ "sync_integration_tests": {
+ "builders": [
+ "Mac10.6 Sync"
+ ]
+ },
+ "sync_unit_tests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(4)",
+ "Mac 10.7 Tests (dbg)(4)",
+ "Mac10.6 Tests (2)",
+ "Mac10.7 Tests (2)",
+ "iOS Simulator (dbg)"
+ ]
+ },
+ "ui_unittests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(4)",
+ "Mac 10.7 Tests (dbg)(4)",
+ "Mac10.6 Tests (2)",
+ "Mac10.7 Tests (2)",
+ "iOS Simulator (dbg)"
+ ]
+ },
+ "unit_tests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(4)",
+ "Mac 10.7 Tests (dbg)(4)",
+ "Mac10.6 Tests (2)",
+ "Mac10.7 Tests (2)",
+ "iOS Simulator (dbg)"
+ ]
+ },
+ "url_unittests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(1)",
+ "Mac 10.7 Tests (dbg)(1)",
+ "Mac10.6 Tests (1)",
+ "Mac10.7 Tests (1)",
+ "iOS Simulator (dbg)"
+ ]
+ },
+ "webkit_compositor_bindings_unittests": {
+ "builders": [
+ "Mac 10.6 Tests (dbg)(1)",
+ "Mac 10.7 Tests (dbg)(1)",
+ "Mac10.6 Tests (1)",
+ "Mac10.7 Tests (1)"
+ ]
+ }
},
- "browser_tests": {
- "builders": [
- "Mac10.6 Tests (2)",
- "Mac10.7 Tests (1)",
- "Mac 10.7 Tests (dbg)(1)",
- "Mac10.6 Tests (3)",
- "Mac 10.7 Tests (dbg)(3)",
- "Mac 10.7 Tests (dbg)(2)",
- "Mac10.6 Tests (1)",
- "Mac 10.6 Tests (dbg)(4)",
- "Mac10.7 Tests (2)",
- "Mac 10.7 Tests (dbg)(4)",
- "Mac 10.6 Tests (dbg)(2)",
- "Mac 10.6 Tests (dbg)(3)",
- "Mac10.7 Tests (3)",
- "Mac 10.6 Tests (dbg)(1)"
- ]
- },
- "cacheinvalidation_unittests": {
- "builders": [
- "Mac10.7 Tests (1)",
- "Mac 10.7 Tests (dbg)(1)",
- "Mac10.6 Tests (1)",
- "Mac 10.6 Tests (dbg)(1)"
- ]
- },
- "cc_unittests": {
- "builders": [
- "Mac10.7 Tests (1)",
- "Mac 10.7 Tests (dbg)(1)",
- "Mac10.6 Tests (1)",
- "Mac 10.6 Tests (dbg)(1)"
- ]
- },
- "chromedriver2_unittests": {
- "builders": [
- "Mac10.7 Tests (1)",
- "Mac 10.7 Tests (dbg)(1)",
- "Mac10.6 Tests (1)",
- "Mac 10.6 Tests (dbg)(1)"
- ]
- },
- "components_unittests": {
- "builders": [
- "Mac10.6 Tests (2)",
- "Mac 10.6 Tests (dbg)(4)",
- "Mac10.7 Tests (2)",
- "Mac 10.7 Tests (dbg)(4)"
- ]
- },
- "content_browsertests": {
- "builders": [
- "Mac10.7 Tests (1)",
- "Mac 10.7 Tests (dbg)(1)",
- "Mac10.6 Tests (1)",
- "Mac 10.6 Tests (dbg)(1)"
- ]
- },
- "content_unittests": {
- "builders": [
- "Mac10.6 Tests (2)",
- "iOS Simulator (dbg)",
- "Mac 10.6 Tests (dbg)(4)",
- "Mac10.7 Tests (2)",
- "Mac 10.7 Tests (dbg)(4)"
- ]
- },
- "crypto_unittests": {
- "builders": [
- "Mac10.7 Tests (1)",
- "Mac 10.7 Tests (dbg)(1)",
- "iOS Simulator (dbg)",
- "Mac10.6 Tests (1)",
- "Mac 10.6 Tests (dbg)(1)"
- ]
- },
- "googleurl_unittests": {
- "builders": [
- "Mac10.7 Tests (1)",
- "Mac 10.7 Tests (dbg)(1)",
- "iOS Simulator (dbg)",
- "Mac10.6 Tests (1)",
- "Mac 10.6 Tests (dbg)(1)"
- ]
- },
- "gpu_unittests": {
- "builders": [
- "Mac10.7 Tests (1)",
- "Mac 10.7 Tests (dbg)(1)",
- "Mac10.6 Tests (1)",
- "Mac 10.6 Tests (dbg)(1)"
- ]
- },
- "interactive_ui_tests": {
- "builders": [
- "Mac10.7 Tests (1)",
- "Mac 10.7 Tests (dbg)(3)",
- "Mac10.6 Tests (1)",
- "Mac 10.6 Tests (dbg)(3)"
- ]
- },
- "ipc_tests": {
- "builders": [
- "Mac10.6 Tests (2)",
- "Mac 10.6 Tests (dbg)(4)",
- "Mac10.7 Tests (2)",
- "Mac 10.7 Tests (dbg)(4)"
- ]
- },
- "jingle_unittests": {
- "builders": [
- "Mac10.7 Tests (1)",
- "Mac 10.7 Tests (dbg)(1)",
- "Mac10.6 Tests (1)",
- "Mac 10.6 Tests (dbg)(1)"
- ]
- },
- "media_unittests": {
- "builders": [
- "Mac10.7 Tests (1)",
- "iOS Simulator (dbg)",
- "Mac 10.7 Tests (dbg)(2)",
- "Mac10.6 Tests (1)",
- "Mac 10.6 Tests (dbg)(2)"
- ]
- },
- "net_unittests": {
- "builders": [
- "Mac10.6 Tests (3)",
- "iOS Simulator (dbg)",
- "Mac 10.7 Tests (dbg)(2)",
- "Mac 10.6 Tests (dbg)(2)",
- "Mac10.7 Tests (3)"
- ]
- },
- "ppapi_unittests": {
- "builders": [
- "Mac10.7 Tests (1)",
- "Mac 10.7 Tests (dbg)(1)",
- "Mac10.6 Tests (1)",
- "Mac 10.6 Tests (dbg)(1)"
- ]
- },
- "printing_unittests": {
- "builders": [
- "Mac10.7 Tests (1)",
- "Mac 10.7 Tests (dbg)(1)",
- "Mac10.6 Tests (1)",
- "Mac 10.6 Tests (dbg)(1)"
- ]
- },
- "remoting_unittests": {
- "builders": [
- "Mac10.7 Tests (1)",
- "Mac 10.7 Tests (dbg)(1)",
- "Mac10.6 Tests (1)",
- "Mac 10.6 Tests (dbg)(1)"
- ]
- },
- "sql_unittests": {
- "builders": [
- "Mac10.6 Tests (2)",
- "iOS Simulator (dbg)",
- "Mac 10.6 Tests (dbg)(4)",
- "Mac10.7 Tests (2)",
- "Mac 10.7 Tests (dbg)(4)"
- ]
- },
- "sync_integration_tests": {
- "builders": [
- "Mac10.6 Sync"
- ]
- },
- "sync_unit_tests": {
- "builders": [
- "Mac10.6 Tests (2)",
- "iOS Simulator (dbg)",
- "Mac 10.6 Tests (dbg)(4)",
- "Mac10.7 Tests (2)",
- "Mac 10.7 Tests (dbg)(4)"
- ]
- },
- "ui_unittests": {
- "builders": [
- "Mac10.6 Tests (2)",
- "iOS Simulator (dbg)",
- "Mac 10.6 Tests (dbg)(4)",
- "Mac10.7 Tests (2)",
- "Mac 10.7 Tests (dbg)(4)"
- ]
- },
- "unit_tests": {
- "builders": [
- "Mac10.6 Tests (2)",
- "iOS Simulator (dbg)",
- "Mac 10.6 Tests (dbg)(4)",
- "Mac10.7 Tests (2)",
- "Mac 10.7 Tests (dbg)(4)"
- ]
- },
- "webkit_compositor_bindings_unittests": {
- "builders": [
- "Mac10.7 Tests (1)",
- "Mac 10.7 Tests (dbg)(1)",
- "Mac10.6 Tests (1)",
- "Mac 10.6 Tests (dbg)(1)"
- ]
- }
+ "url": "http://build.chromium.org/p/chromium.mac"
},
- "url": "http://build.chromium.org/p/chromium.mac"
- },
- {
- "name": "ChromiumLinux",
- "tests": {
- "Run tests": {
- "builders": [
- "Android Tests",
- "Android Tests (dbg)"
- ]
+ {
+ "groups": [
+ "@ToT Chromium"
+ ],
+ "name": "ChromiumLinux",
+ "tests": {
+ "Run tests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)"
+ ]
+ },
+ "android_webview_unittests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)"
+ ]
+ },
+ "androidwebview_instrumentation_tests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)"
+ ]
+ },
+ "aura_unittests": {
+ "builders": [
+ "Linux Aura"
+ ]
+ },
+ "base_unittests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)",
+ "Linux Aura",
+ "Linux Clang (dbg)",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "breakpad_unittests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)"
+ ]
+ },
+ "browser_tests": {
+ "builders": [
+ "Linux Aura",
+ "Linux Tests",
+ "Linux Tests (dbg)(1)",
+ "Linux Tests (dbg)(1)(32)"
+ ]
+ },
+ "cacheinvalidation_unittests": {
+ "builders": [
+ "Linux Aura",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "cc_unittests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "chromedriver2_unittests": {
+ "builders": [
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "chromiumtestshell_instrumentation_tests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)"
+ ]
+ },
+ "components_unittests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)",
+ "Linux Clang (dbg)",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "compositor_unittests": {
+ "builders": [
+ "Linux Aura"
+ ]
+ },
+ "content_browsertests": {
+ "builders": [
+ "Linux Aura",
+ "Linux Tests",
+ "Linux Tests (dbg)(1)",
+ "Linux Tests (dbg)(1)(32)"
+ ]
+ },
+ "content_unittests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)",
+ "Linux Aura",
+ "Linux Clang (dbg)",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "contentshell_instrumentation_tests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)"
+ ]
+ },
+ "crypto_unittests": {
+ "builders": [
+ "Linux Aura",
+ "Linux Clang (dbg)",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "dbus_unittests": {
+ "builders": [
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "device_unittests": {
+ "builders": [
+ "Linux Aura",
+ "Linux Clang (dbg)",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "gpu_unittests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)",
+ "Linux Aura",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "interactive_ui_tests": {
+ "builders": [
+ "Linux Aura",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "ipc_tests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)",
+ "Linux Aura",
+ "Linux Clang (dbg)",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "jingle_unittests": {
+ "builders": [
+ "Linux Aura",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "media_unittests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)",
+ "Linux Aura",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "net_unittests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)",
+ "Linux Aura",
+ "Linux Tests",
+ "Linux Tests (dbg)(1)",
+ "Linux Tests (dbg)(1)(32)"
+ ]
+ },
+ "ppapi_unittests": {
+ "builders": [
+ "Linux Aura",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "printing_unittests": {
+ "builders": [
+ "Linux Aura",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "remoting_unittests": {
+ "builders": [
+ "Linux Aura",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "sandbox_linux_unittests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)",
+ "Linux Aura",
+ "Linux Clang (dbg)",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "sql_unittests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)",
+ "Linux Aura",
+ "Linux Clang (dbg)",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "sync_integration_tests": {
+ "builders": [
+ "Linux Sync"
+ ]
+ },
+ "sync_unit_tests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)",
+ "Linux Aura",
+ "Linux Clang (dbg)",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "test_report": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)"
+ ]
+ },
+ "ui_unittests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)",
+ "Linux Aura",
+ "Linux Clang (dbg)",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "unit_tests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)",
+ "Linux Aura",
+ "Linux Clang (dbg)",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "url_unittests": {
+ "builders": [
+ "Linux Aura",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "views_unittests": {
+ "builders": [
+ "Linux Aura"
+ ]
+ },
+ "webkit_compositor_bindings_unittests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)",
+ "Linux Tests",
+ "Linux Tests (dbg)(2)",
+ "Linux Tests (dbg)(2)(32)"
+ ]
+ },
+ "webkit_unit_tests": {
+ "builders": [
+ "Android Tests",
+ "Android Tests (dbg)"
+ ]
+ }
},
- "android_webview_unittests": {
- "builders": [
- "Android Tests",
- "Android Tests (dbg)"
- ]
- },
- "androidwebview_instrumentation_tests": {
- "builders": [
- "Android Tests",
- "Android Tests (dbg)"
- ]
- },
- "aura_unittests": {
- "builders": [
- "Linux Aura"
- ]
- },
- "base_unittests": {
- "builders": [
- "Linux Clang (dbg)",
- "Linux Tests",
- "Android Tests",
- "Linux Tests (dbg)(2)(32)",
- "Android Tests (dbg)",
- "Linux Aura",
- "Linux Tests (dbg)(2)"
- ]
- },
- "browser_tests": {
- "builders": [
- "Linux Tests (dbg)(1)(32)",
- "Linux Tests (dbg)(1)",
- "Linux Tests",
- "Linux Aura"
- ]
- },
- "cacheinvalidation_unittests": {
- "builders": [
- "Linux Tests",
- "Linux Tests (dbg)(2)(32)",
- "Linux Aura",
- "Linux Tests (dbg)(2)"
- ]
- },
- "cc_unittests": {
- "builders": [
- "Linux Tests",
- "Android Tests",
- "Linux Tests (dbg)(2)(32)",
- "Android Tests (dbg)",
- "Linux Tests (dbg)(2)"
- ]
- },
- "chromedriver2_unittests": {
- "builders": [
- "Linux Tests",
- "Linux Tests (dbg)(2)(32)",
- "Linux Tests (dbg)(2)"
- ]
- },
- "chromiumtestshell_instrumentation_tests": {
- "builders": [
- "Android Tests",
- "Android Tests (dbg)"
- ]
- },
- "components_unittests": {
- "builders": [
- "Linux Clang (dbg)",
- "Linux Tests",
- "Android Tests",
- "Linux Tests (dbg)(2)(32)",
- "Android Tests (dbg)",
- "Linux Tests (dbg)(2)"
- ]
- },
- "compositor_unittests": {
- "builders": [
- "Linux Aura"
- ]
- },
- "content_browsertests": {
- "builders": [
- "Linux Tests (dbg)(1)(32)",
- "Linux Tests (dbg)(1)",
- "Linux Tests",
- "Linux Aura"
- ]
- },
- "content_unittests": {
- "builders": [
- "Linux Clang (dbg)",
- "Linux Tests",
- "Android Tests",
- "Linux Tests (dbg)(2)(32)",
- "Android Tests (dbg)",
- "Linux Aura",
- "Linux Tests (dbg)(2)"
- ]
- },
- "contentshell_instrumentation_tests": {
- "builders": [
- "Android Tests",
- "Android Tests (dbg)"
- ]
- },
- "crypto_unittests": {
- "builders": [
- "Linux Clang (dbg)",
- "Linux Tests",
- "Linux Tests (dbg)(2)(32)",
- "Linux Aura",
- "Linux Tests (dbg)(2)"
- ]
- },
- "dbus_unittests": {
- "builders": [
- "Linux Tests",
- "Linux Tests (dbg)(2)(32)",
- "Linux Tests (dbg)(2)"
- ]
- },
- "device_unittests": {
- "builders": [
- "Linux Clang (dbg)",
- "Linux Tests",
- "Linux Tests (dbg)(2)(32)",
- "Linux Aura",
- "Linux Tests (dbg)(2)"
- ]
- },
- "googleurl_unittests": {
- "builders": [
- "Linux Tests",
- "Linux Tests (dbg)(2)(32)",
- "Linux Aura",
- "Linux Tests (dbg)(2)"
- ]
- },
- "gpu_unittests": {
- "builders": [
- "Linux Tests",
- "Android Tests",
- "Linux Tests (dbg)(2)(32)",
- "Android Tests (dbg)",
- "Linux Aura",
- "Linux Tests (dbg)(2)"
- ]
- },
- "interactive_ui_tests": {
- "builders": [
- "Linux Tests",
- "Linux Tests (dbg)(2)(32)",
- "Linux Aura",
- "Linux Tests (dbg)(2)"
- ]
- },
- "ipc_tests": {
- "builders": [
- "Linux Clang (dbg)",
- "Linux Tests",
- "Android Tests",
- "Linux Tests (dbg)(2)(32)",
- "Android Tests (dbg)",
- "Linux Aura",
- "Linux Tests (dbg)(2)"
- ]
- },
- "jingle_unittests": {
- "builders": [
- "Linux Tests",
- "Linux Tests (dbg)(2)(32)",
- "Linux Aura",
- "Linux Tests (dbg)(2)"
- ]
- },
- "media_unittests": {
- "builders": [
- "Linux Tests",
- "Android Tests",
- "Linux Tests (dbg)(2)(32)",
- "Android Tests (dbg)",
- "Linux Aura",
- "Linux Tests (dbg)(2)"
- ]
- },
- "net_unittests": {
- "builders": [
- "Linux Tests (dbg)(1)(32)",
- "Linux Tests (dbg)(1)",
- "Linux Tests",
- "Android Tests",
- "Android Tests (dbg)",
- "Linux Aura"
- ]
- },
- "ppapi_unittests": {
- "builders": [
- "Linux Tests",
- "Linux Tests (dbg)(2)(32)",
- "Linux Aura",
- "Linux Tests (dbg)(2)"
- ]
- },
- "printing_unittests": {
- "builders": [
- "Linux Tests",
- "Linux Tests (dbg)(2)(32)",
- "Linux Aura",
- "Linux Tests (dbg)(2)"
- ]
- },
- "remoting_unittests": {
- "builders": [
- "Linux Tests",
- "Linux Tests (dbg)(2)(32)",
- "Linux Aura",
- "Linux Tests (dbg)(2)"
- ]
- },
- "sandbox_linux_unittests": {
- "builders": [
- "Linux Clang (dbg)",
- "Linux Tests",
- "Linux Tests (dbg)(2)(32)",
- "Linux Aura",
- "Linux Tests (dbg)(2)"
- ]
- },
- "sql_unittests": {
- "builders": [
- "Linux Clang (dbg)",
- "Linux Tests",
- "Android Tests",
- "Linux Tests (dbg)(2)(32)",
- "Android Tests (dbg)",
- "Linux Aura",
- "Linux Tests (dbg)(2)"
- ]
- },
- "sync_integration_tests": {
- "builders": [
- "Linux Sync"
- ]
- },
- "sync_unit_tests": {
- "builders": [
- "Linux Clang (dbg)",
- "Linux Tests",
- "Android Tests",
- "Linux Tests (dbg)(2)(32)",
- "Android Tests (dbg)",
- "Linux Aura",
- "Linux Tests (dbg)(2)"
- ]
- },
- "test_report": {
- "builders": [
- "Android Tests",
- "Android Tests (dbg)"
- ]
- },
- "ui_unittests": {
- "builders": [
- "Linux Clang (dbg)",
- "Linux Tests",
- "Android Tests",
- "Linux Tests (dbg)(2)(32)",
- "Android Tests (dbg)",
- "Linux Aura",
- "Linux Tests (dbg)(2)"
- ]
- },
- "unit_tests": {
- "builders": [
- "Linux Clang (dbg)",
- "Linux Tests",
- "Android Tests",
- "Linux Tests (dbg)(2)(32)",
- "Android Tests (dbg)",
- "Linux Aura",
- "Linux Tests (dbg)(2)"
- ]
- },
- "views_unittests": {
- "builders": [
- "Linux Aura"
- ]
- },
- "webkit_compositor_bindings_unittests": {
- "builders": [
- "Linux Tests",
- "Android Tests",
- "Linux Tests (dbg)(2)(32)",
- "Android Tests (dbg)",
- "Linux Tests (dbg)(2)"
- ]
- },
- "webkit_unit_tests": {
- "builders": [
- "Android Tests",
- "Android Tests (dbg)"
- ]
- }
+ "url": "http://build.chromium.org/p/chromium.linux"
},
- "url": "http://build.chromium.org/p/chromium.linux"
- },
- {
- "name": "ChromiumChromiumOS",
- "tests": {
- "app_list_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
+ {
+ "groups": [
+ "@ToT ChromeOS"
+ ],
+ "name": "ChromiumChromiumOS",
+ "tests": {
+ "app_list_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "ash_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "aura_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "base_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "browser_tests": {
+ "builders": [
+ "Linux ChromiumOS Tests (2)",
+ "Linux ChromiumOS Tests (dbg)(2)"
+ ]
+ },
+ "cacheinvalidation_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "chromeos_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "components_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "compositor_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "content_browsertests": {
+ "builders": [
+ "Linux ChromiumOS Tests (2)",
+ "Linux ChromiumOS Tests (dbg)(2)"
+ ]
+ },
+ "content_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "crypto_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "dbus_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "device_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "gpu_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "interactive_ui_tests": {
+ "builders": [
+ "Linux ChromiumOS Tests (2)",
+ "Linux ChromiumOS Tests (dbg)(3)"
+ ]
+ },
+ "ipc_tests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "jingle_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "media_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "message_center_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "net_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "ppapi_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "printing_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "remoting_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "sandbox_linux_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "sql_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "sync_unit_tests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "ui_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "unit_tests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "url_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ },
+ "views_unittests": {
+ "builders": [
+ "Linux ChromiumOS Tests (1)",
+ "Linux ChromiumOS Tests (dbg)(1)"
+ ]
+ }
},
- "ash_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "aura_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "base_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "browser_tests": {
- "builders": [
- "Linux ChromiumOS Tests (2)",
- "Linux ChromiumOS Tests (2)(Precise)",
- "Linux ChromiumOS Tests (dbg)(2)(Precise)",
- "Linux ChromiumOS Tests (dbg)(2)"
- ]
- },
- "cacheinvalidation_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "chromeos_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "components_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "compositor_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "content_browsertests": {
- "builders": [
- "Linux ChromiumOS Tests (2)",
- "Linux ChromiumOS Tests (2)(Precise)",
- "Linux ChromiumOS Tests (dbg)(2)(Precise)",
- "Linux ChromiumOS Tests (dbg)(2)"
- ]
- },
- "content_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "crypto_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "dbus_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "device_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "googleurl_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "gpu_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "interactive_ui_tests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(3)",
- "Linux ChromiumOS Tests (2)",
- "Linux ChromiumOS Tests (dbg)(3)(Precise)",
- "Linux ChromiumOS Tests (2)(Precise)"
- ]
- },
- "ipc_tests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "jingle_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "media_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "message_center_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "net_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "ppapi_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "printing_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "remoting_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "sandbox_linux_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "sql_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "sync_unit_tests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "ui_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "unit_tests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- },
- "views_unittests": {
- "builders": [
- "Linux ChromiumOS Tests (dbg)(1)",
- "Linux ChromiumOS Tests (1)",
- "Linux ChromiumOS Tests (1)(Precise)",
- "Linux ChromiumOS Tests (dbg)(1)(Precise)"
- ]
- }
+ "url": "http://build.chromium.org/p/chromium.chromiumos"
},
- "url": "http://build.chromium.org/p/chromium.chromiumos"
- },
- {
- "name": "ChromiumGPU",
- "tests": {
- "content_browsertests": {
- "builders": [
- "Mac 10.8 Debug (Intel)",
- "Mac Release (ATI)",
- "Win7 Release (Intel)",
- "Win7 Debug (NVIDIA)",
- "Linux Release (ATI)",
- "Mac Release (Intel)",
- "Mac Debug (Intel)",
- "Mac 10.8 Release (ATI)",
- "Mac Retina Release",
- "Mac 10.8 Release (Intel)",
- "Win7 Release (NVIDIA)",
- "Linux Debug (NVIDIA)",
- "Win7 Release (ATI)",
- "Mac Retina Debug",
- "Linux Release (NVIDIA)"
- ]
+ {
+ "groups": [
+ "@ToT Chromium"
+ ],
+ "name": "ChromiumGPU",
+ "tests": {
+ "content_browsertests": {
+ "builders": [
+ "Linux Debug (NVIDIA)",
+ "Linux Release (ATI)",
+ "Linux Release (NVIDIA)",
+ "Mac 10.8 Debug (Intel)",
+ "Mac 10.8 Release (ATI)",
+ "Mac 10.8 Release (Intel)",
+ "Mac Debug (Intel)",
+ "Mac Release (ATI)",
+ "Mac Release (Intel)",
+ "Mac Retina Debug",
+ "Mac Retina Release",
+ "Win7 Debug (NVIDIA)",
+ "Win7 Release (ATI)",
+ "Win7 Release (Intel)",
+ "Win7 Release (NVIDIA)"
+ ]
+ },
+ "gl_tests": {
+ "builders": [
+ "Linux Debug (NVIDIA)",
+ "Linux Release (ATI)",
+ "Linux Release (NVIDIA)",
+ "Mac 10.8 Debug (Intel)",
+ "Mac 10.8 Release (ATI)",
+ "Mac 10.8 Release (Intel)",
+ "Mac Debug (Intel)",
+ "Mac Release (ATI)",
+ "Mac Release (Intel)",
+ "Mac Retina Debug",
+ "Mac Retina Release",
+ "Win7 Debug (NVIDIA)",
+ "Win7 Release (ATI)",
+ "Win7 Release (Intel)",
+ "Win7 Release (NVIDIA)"
+ ]
+ },
+ "gles2_conform_test": {
+ "builders": [
+ "Linux Debug (NVIDIA)",
+ "Linux Release (ATI)",
+ "Linux Release (NVIDIA)",
+ "Mac 10.8 Debug (Intel)",
+ "Mac 10.8 Release (ATI)",
+ "Mac 10.8 Release (Intel)",
+ "Mac Debug (Intel)",
+ "Mac Release (ATI)",
+ "Mac Release (Intel)",
+ "Mac Retina Debug",
+ "Mac Retina Release",
+ "Win7 Debug (NVIDIA)",
+ "Win7 Release (ATI)",
+ "Win7 Release (Intel)",
+ "Win7 Release (NVIDIA)"
+ ]
+ },
+ "gpu_frame_rate_test": {
+ "builders": [
+ "Linux Release (ATI)",
+ "Linux Release (NVIDIA)",
+ "Mac 10.8 Release (ATI)",
+ "Mac 10.8 Release (Intel)",
+ "Mac Release (ATI)",
+ "Mac Release (Intel)",
+ "Mac Retina Release",
+ "Win7 Release (ATI)",
+ "Win7 Release (Intel)",
+ "Win7 Release (NVIDIA)"
+ ]
+ },
+ "gpu_latency_tests": {
+ "builders": [
+ "Linux Release (ATI)",
+ "Linux Release (NVIDIA)",
+ "Mac 10.8 Release (ATI)",
+ "Mac 10.8 Release (Intel)",
+ "Mac Release (ATI)",
+ "Mac Release (Intel)",
+ "Mac Retina Release",
+ "Win7 Release (ATI)",
+ "Win7 Release (Intel)",
+ "Win7 Release (NVIDIA)"
+ ]
+ },
+ "gpu_tests": {
+ "builders": [
+ "Linux Debug (NVIDIA)",
+ "Linux Release (ATI)",
+ "Linux Release (NVIDIA)",
+ "Mac 10.8 Debug (Intel)",
+ "Mac 10.8 Release (ATI)",
+ "Mac 10.8 Release (Intel)",
+ "Mac Debug (Intel)",
+ "Mac Release (ATI)",
+ "Mac Release (Intel)",
+ "Mac Retina Debug",
+ "Mac Retina Release",
+ "Win7 Debug (NVIDIA)",
+ "Win7 Release (ATI)",
+ "Win7 Release (Intel)",
+ "Win7 Release (NVIDIA)"
+ ]
+ },
+ "gpu_throughput_tests": {
+ "builders": [
+ "Linux Release (ATI)",
+ "Linux Release (NVIDIA)",
+ "Mac 10.8 Release (ATI)",
+ "Mac 10.8 Release (Intel)",
+ "Mac Release (ATI)",
+ "Mac Release (Intel)",
+ "Mac Retina Release",
+ "Win7 Release (ATI)",
+ "Win7 Release (Intel)",
+ "Win7 Release (NVIDIA)"
+ ]
+ }
},
- "gl_tests": {
- "builders": [
- "Mac 10.8 Debug (Intel)",
- "Mac Release (ATI)",
- "Win7 Release (Intel)",
- "Win7 Debug (NVIDIA)",
- "Linux Release (ATI)",
- "Mac Release (Intel)",
- "Mac Debug (Intel)",
- "Mac 10.8 Release (ATI)",
- "Mac Retina Release",
- "Mac 10.8 Release (Intel)",
- "Win7 Release (NVIDIA)",
- "Linux Debug (NVIDIA)",
- "Win7 Release (ATI)",
- "Mac Retina Debug",
- "Linux Release (NVIDIA)"
- ]
- },
- "gles2_conform_test": {
- "builders": [
- "Mac 10.8 Debug (Intel)",
- "Mac Release (ATI)",
- "Win7 Release (Intel)",
- "Win7 Debug (NVIDIA)",
- "Linux Release (ATI)",
- "Mac Release (Intel)",
- "Mac Debug (Intel)",
- "Mac 10.8 Release (ATI)",
- "Mac Retina Release",
- "Mac 10.8 Release (Intel)",
- "Win7 Release (NVIDIA)",
- "Linux Debug (NVIDIA)",
- "Win7 Release (ATI)",
- "Mac Retina Debug",
- "Linux Release (NVIDIA)"
- ]
- },
- "gpu_frame_rate_test": {
- "builders": [
- "Mac Release (ATI)",
- "Win7 Release (Intel)",
- "Linux Release (ATI)",
- "Mac Release (Intel)",
- "Mac 10.8 Release (ATI)",
- "Mac Retina Release",
- "Mac 10.8 Release (Intel)",
- "Win7 Release (NVIDIA)",
- "Win7 Release (ATI)",
- "Linux Release (NVIDIA)"
- ]
- },
- "gpu_latency_tests": {
- "builders": [
- "Mac Release (ATI)",
- "Win7 Release (Intel)",
- "Linux Release (ATI)",
- "Mac Release (Intel)",
- "Mac 10.8 Release (ATI)",
- "Mac Retina Release",
- "Mac 10.8 Release (Intel)",
- "Win7 Release (NVIDIA)",
- "Win7 Release (ATI)",
- "Linux Release (NVIDIA)"
- ]
- },
- "gpu_tests": {
- "builders": [
- "Mac 10.8 Debug (Intel)",
- "Mac Release (ATI)",
- "Win7 Release (Intel)",
- "Win7 Debug (NVIDIA)",
- "Linux Release (ATI)",
- "Mac Release (Intel)",
- "Mac Debug (Intel)",
- "Mac 10.8 Release (ATI)",
- "Mac Retina Release",
- "Mac 10.8 Release (Intel)",
- "Win7 Release (NVIDIA)",
- "Linux Debug (NVIDIA)",
- "Win7 Release (ATI)",
- "Mac Retina Debug",
- "Linux Release (NVIDIA)"
- ]
- },
- "gpu_throughput_tests": {
- "builders": [
- "Mac Release (ATI)",
- "Win7 Release (Intel)",
- "Linux Release (ATI)",
- "Mac Release (Intel)",
- "Mac 10.8 Release (ATI)",
- "Mac Retina Release",
- "Mac 10.8 Release (Intel)",
- "Win7 Release (NVIDIA)",
- "Win7 Release (ATI)",
- "Linux Release (NVIDIA)"
- ]
- }
+ "url": "http://build.chromium.org/p/chromium.gpu"
},
- "url": "http://build.chromium.org/p/chromium.gpu"
- },
- {
- "name": "ChromiumGPUFYI",
- "tests": {
- "content_unittests": {
- "builders": [
- "Win7 Audio",
- "Linux Audio"
- ]
+ {
+ "groups": [
+ "@ToT Chromium FYI"
+ ],
+ "name": "ChromiumGPUFYI",
+ "tests": {
+ "content_unittests": {
+ "builders": [
+ "Linux Audio",
+ "Win7 Audio"
+ ]
+ },
+ "gl_tests": {
+ "builders": [
+ "Linux Release (Intel)",
+ "WinXP Debug (NVIDIA)",
+ "WinXP Release (NVIDIA)"
+ ]
+ },
+ "gles2_conform_test": {
+ "builders": [
+ "Linux Release (Intel)",
+ "WinXP Debug (NVIDIA)",
+ "WinXP Release (NVIDIA)"
+ ]
+ },
+ "gpu_frame_rate_test": {
+ "builders": [
+ "Linux Release (Intel)",
+ "WinXP Release (NVIDIA)"
+ ]
+ },
+ "gpu_latency_tests": {
+ "builders": [
+ "Linux Release (Intel)",
+ "WinXP Release (NVIDIA)"
+ ]
+ },
+ "gpu_tests": {
+ "builders": [
+ "Linux Release (Intel)",
+ "WinXP Debug (NVIDIA)",
+ "WinXP Release (NVIDIA)"
+ ]
+ },
+ "gpu_throughput_tests": {
+ "builders": [
+ "Linux Release (Intel)",
+ "WinXP Release (NVIDIA)"
+ ]
+ },
+ "media_unittests": {
+ "builders": [
+ "Linux Audio",
+ "Win7 Audio"
+ ]
+ }
},
- "gl_tests": {
- "builders": [
- "Linux Release (Intel)",
- "WinXP Debug (NVIDIA)",
- "WinXP Release (NVIDIA)"
- ]
- },
- "gles2_conform_test": {
- "builders": [
- "Linux Release (Intel)",
- "WinXP Debug (NVIDIA)",
- "WinXP Release (NVIDIA)"
- ]
- },
- "gpu_frame_rate_test": {
- "builders": [
- "Linux Release (Intel)",
- "WinXP Release (NVIDIA)"
- ]
- },
- "gpu_latency_tests": {
- "builders": [
- "Linux Release (Intel)",
- "WinXP Release (NVIDIA)"
- ]
- },
- "gpu_tests": {
- "builders": [
- "Linux Release (Intel)",
- "WinXP Debug (NVIDIA)",
- "WinXP Release (NVIDIA)"
- ]
- },
- "gpu_throughput_tests": {
- "builders": [
- "Linux Release (Intel)",
- "WinXP Release (NVIDIA)"
- ]
- },
- "media_unittests": {
- "builders": [
- "Win7 Audio",
- "Linux Audio"
- ]
- }
+ "url": "http://build.chromium.org/p/chromium.gpu.fyi"
},
- "url": "http://build.chromium.org/p/chromium.gpu.fyi"
- },
- {
- "name": "ChromiumPerfAv",
- "tests": {
- "layout-tests": {
- "builders": [
- "AV Win7",
- "AV Linux"
- ]
+ {
+ "groups": [
+ "@ToT Chromium"
+ ],
+ "name": "ChromiumPerfAv",
+ "tests": {
+ "layout-tests": {
+ "builders": [
+ "AV Linux",
+ "AV Win7"
+ ]
+ },
+ "media_tests_av_perf": {
+ "builders": [
+ "AV Linux",
+ "AV Win7"
+ ]
+ }
},
- "media_tests_av_perf": {
- "builders": [
- "AV Win7",
- "AV Linux"
- ]
- }
+ "url": "http://build.chromium.org/p/chromium.perf_av"
},
- "url": "http://build.chromium.org/p/chromium.perf_av"
- },
- {
- "name": "ChromiumWebkit",
- "tests": {
- "Run tests": {
- "builders": [
- "WebKit Android (GalaxyNexus)",
- "WebKit (Content Shell) Android",
- "Android Tests (dbg)"
- ]
+ {
+ "groups": [
+ "@ToT Chromium",
+ "@ToT Blink"
+ ],
+ "name": "ChromiumWebkit",
+ "tests": {
+ "Run tests": {
+ "builders": [
+ "Android Tests (dbg)",
+ "WebKit (Content Shell) Android",
+ "WebKit Android (GalaxyNexus)"
+ ]
+ },
+ "android_webview_unittests": {
+ "builders": [
+ "Android Tests (dbg)"
+ ]
+ },
+ "androidwebview_instrumentation_tests": {
+ "builders": [
+ "Android Tests (dbg)"
+ ]
+ },
+ "aura_unittests": {
+ "builders": [
+ "Linux Aura"
+ ]
+ },
+ "base_unittests": {
+ "builders": [
+ "Android Tests (dbg)"
+ ]
+ },
+ "breakpad_unittests": {
+ "builders": [
+ "Android Tests (dbg)"
+ ]
+ },
+ "browser_tests": {
+ "builders": [
+ "Linux Tests",
+ "Mac10.6 Tests",
+ "Mac10.8 Tests",
+ "Win7 (dbg)"
+ ]
+ },
+ "cc_unittests": {
+ "builders": [
+ "Android Tests (dbg)",
+ "Linux Tests",
+ "Mac10.6 Tests"
+ ]
+ },
+ "chrome_frame_net_tests": {
+ "builders": [
+ "Chrome Frame Tests"
+ ]
+ },
+ "chrome_frame_tests": {
+ "builders": [
+ "Chrome Frame Tests"
+ ]
+ },
+ "chrome_frame_unittests": {
+ "builders": [
+ "Chrome Frame Tests"
+ ]
+ },
+ "chromiumtestshell_instrumentation_tests": {
+ "builders": [
+ "Android Tests (dbg)"
+ ]
+ },
+ "components_unittests": {
+ "builders": [
+ "Android Tests (dbg)"
+ ]
+ },
+ "content_browsertests": {
+ "builders": [
+ "GPU Linux (NVIDIA)",
+ "GPU Linux (dbg) (NVIDIA)",
+ "GPU Mac10.7",
+ "GPU Mac10.7 (dbg)",
+ "GPU Win7 (NVIDIA)",
+ "GPU Win7 (dbg) (NVIDIA)",
+ "Linux Tests",
+ "Mac10.6 Tests",
+ "Mac10.8 Tests",
+ "Win7 (dbg)"
+ ]
+ },
+ "content_unittests": {
+ "builders": [
+ "Android Tests (dbg)",
+ "Linux Aura",
+ "Linux Tests",
+ "Mac10.6 Tests",
+ "Mac10.8 Tests",
+ "Vista Tests",
+ "Win7 (dbg)"
+ ]
+ },
+ "contentshell_instrumentation_tests": {
+ "builders": [
+ "Android Tests (dbg)"
+ ]
+ },
+ "gl_tests": {
+ "builders": [
+ "GPU Linux (NVIDIA)",
+ "GPU Linux (dbg) (NVIDIA)",
+ "GPU Mac10.7",
+ "GPU Mac10.7 (dbg)",
+ "GPU Win7 (NVIDIA)",
+ "GPU Win7 (dbg) (NVIDIA)"
+ ]
+ },
+ "gpu_frame_rate_test": {
+ "builders": [
+ "GPU Linux (NVIDIA)",
+ "GPU Mac10.7",
+ "GPU Win7 (NVIDIA)"
+ ]
+ },
+ "gpu_latency_tests": {
+ "builders": [
+ "GPU Linux (NVIDIA)",
+ "GPU Mac10.7",
+ "GPU Win7 (NVIDIA)"
+ ]
+ },
+ "gpu_tests": {
+ "builders": [
+ "GPU Linux (NVIDIA)",
+ "GPU Linux (dbg) (NVIDIA)",
+ "GPU Mac10.7",
+ "GPU Mac10.7 (dbg)",
+ "GPU Win7 (NVIDIA)",
+ "GPU Win7 (dbg) (NVIDIA)"
+ ]
+ },
+ "gpu_throughput_tests": {
+ "builders": [
+ "GPU Linux (NVIDIA)",
+ "GPU Mac10.7",
+ "GPU Win7 (NVIDIA)"
+ ]
+ },
+ "gpu_unittests": {
+ "builders": [
+ "Android Tests (dbg)"
+ ]
+ },
+ "installer_util_unittests": {
+ "builders": [
+ "Vista Tests"
+ ]
+ },
+ "interactive_ui_tests": {
+ "builders": [
+ "Linux Tests",
+ "Mac10.6 Tests",
+ "Mac10.8 Tests",
+ "Win7 (dbg)"
+ ]
+ },
+ "ipc_tests": {
+ "builders": [
+ "Android Tests (dbg)",
+ "Linux Aura",
+ "Linux Tests",
+ "Mac10.6 Tests",
+ "Mac10.8 Tests",
+ "Vista Tests",
+ "Win7 (dbg)"
+ ]
+ },
+ "layout-tests": {
+ "builders": [
+ "WebKit (Content Shell) Android",
+ "WebKit Linux",
+ "WebKit Linux (dbg)",
+ "WebKit Linux (deps)",
+ "WebKit Linux 32",
+ "WebKit Linux ASAN",
+ "WebKit Mac10.6",
+ "WebKit Mac10.6 (dbg)",
+ "WebKit Mac10.6 (deps)",
+ "WebKit Mac10.7",
+ "WebKit Mac10.7 (dbg)",
+ "WebKit Mac10.8",
+ "WebKit Win7",
+ "WebKit Win7 (dbg)(1)",
+ "WebKit Win7 (dbg)(2)",
+ "WebKit XP",
+ "WebKit XP (deps)"
+ ]
+ },
+ "media_unittests": {
+ "builders": [
+ "Android Tests (dbg)"
+ ]
+ },
+ "memory_test": {
+ "builders": [
+ "Mac10.6 Perf"
+ ]
+ },
+ "mini_installer_test": {
+ "builders": [
+ "Vista Tests"
+ ]
+ },
+ "net_unittests": {
+ "builders": [
+ "Android Tests (dbg)"
+ ]
+ },
+ "new_tab_ui_cold_test": {
+ "builders": [
+ "Linux Perf",
+ "Mac10.6 Perf",
+ "Win7 Perf"
+ ]
+ },
+ "new_tab_ui_warm_test": {
+ "builders": [
+ "Linux Perf",
+ "Mac10.6 Perf",
+ "Win7 Perf"
+ ]
+ },
+ "sandbox_linux_unittests": {
+ "builders": [
+ "Android Tests (dbg)"
+ ]
+ },
+ "sql_unittests": {
+ "builders": [
+ "Android Tests (dbg)",
+ "Linux Aura",
+ "Linux Tests",
+ "Mac10.6 Tests",
+ "Mac10.8 Tests",
+ "Vista Tests",
+ "Win7 (dbg)"
+ ]
+ },
+ "startup_test": {
+ "builders": [
+ "Linux Perf",
+ "Mac10.6 Perf",
+ "Win7 Perf"
+ ]
+ },
+ "sync_unit_tests": {
+ "builders": [
+ "Android Tests (dbg)",
+ "Linux Aura",
+ "Linux Tests",
+ "Mac10.6 Tests",
+ "Mac10.8 Tests",
+ "Vista Tests",
+ "Win7 (dbg)"
+ ]
+ },
+ "tab_switching_test": {
+ "builders": [
+ "Mac10.6 Perf"
+ ]
+ },
+ "test_report": {
+ "builders": [
+ "Android Tests (dbg)",
+ "WebKit (Content Shell) Android"
+ ]
+ },
+ "ui_unittests": {
+ "builders": [
+ "Android Tests (dbg)",
+ "Linux Aura",
+ "Linux Tests",
+ "Mac10.6 Tests",
+ "Mac10.8 Tests",
+ "Vista Tests",
+ "Win7 (dbg)"
+ ]
+ },
+ "unit_tests": {
+ "builders": [
+ "Android Tests (dbg)",
+ "Linux Aura",
+ "Linux Tests",
+ "Mac10.6 Tests",
+ "Mac10.8 Tests",
+ "Vista Tests",
+ "Win7 (dbg)"
+ ]
+ },
+ "views_unittests": {
+ "builders": [
+ "Vista Tests",
+ "Win7 (dbg)"
+ ]
+ },
+ "webkit_compositor_bindings_unittests": {
+ "builders": [
+ "Android Tests (dbg)",
+ "Linux Tests",
+ "Mac10.6 Tests"
+ ]
+ },
+ "webkit_unit_tests": {
+ "builders": [
+ "Android Tests (dbg)",
+ "WebKit Linux",
+ "WebKit Linux (dbg)",
+ "WebKit Linux (deps)",
+ "WebKit Linux 32",
+ "WebKit Mac10.6",
+ "WebKit Mac10.6 (dbg)",
+ "WebKit Mac10.6 (deps)",
+ "WebKit Mac10.7",
+ "WebKit Mac10.7 (dbg)",
+ "WebKit Mac10.8",
+ "WebKit Win7",
+ "WebKit Win7 (dbg)(1)",
+ "WebKit XP",
+ "WebKit XP (deps)"
+ ]
+ },
+ "wtf_unittests": {
+ "builders": [
+ "WebKit Linux",
+ "WebKit Linux (dbg)",
+ "WebKit Linux (deps)",
+ "WebKit Linux 32",
+ "WebKit Mac10.6",
+ "WebKit Mac10.6 (dbg)",
+ "WebKit Mac10.6 (deps)",
+ "WebKit Mac10.7",
+ "WebKit Mac10.7 (dbg)",
+ "WebKit Mac10.8",
+ "WebKit Win7",
+ "WebKit Win7 (dbg)(1)",
+ "WebKit XP",
+ "WebKit XP (deps)"
+ ]
+ }
},
- "android_webview_unittests": {
- "builders": [
- "Android Tests (dbg)"
- ]
- },
- "androidwebview_instrumentation_tests": {
- "builders": [
- "Android Tests (dbg)"
- ]
- },
- "aura_unittests": {
- "builders": [
- "Linux Aura"
- ]
- },
- "base_unittests": {
- "builders": [
- "Android Tests (dbg)"
- ]
- },
- "browser_tests": {
- "builders": [
- "Win7 (dbg)",
- "Linux Tests",
- "Mac10.6 Tests",
- "Mac10.8 Tests"
- ]
- },
- "cc_unittests": {
- "builders": [
- "Linux Tests",
- "Mac10.6 Tests",
- "Android Tests (dbg)"
- ]
- },
- "chrome_frame_net_tests": {
- "builders": [
- "Chrome Frame Tests"
- ]
- },
- "chrome_frame_tests": {
- "builders": [
- "Chrome Frame Tests"
- ]
- },
- "chrome_frame_unittests": {
- "builders": [
- "Chrome Frame Tests"
- ]
- },
- "chromiumtestshell_instrumentation_tests": {
- "builders": [
- "Android Tests (dbg)"
- ]
- },
- "components_unittests": {
- "builders": [
- "Android Tests (dbg)"
- ]
- },
- "content_browsertests": {
- "builders": [
- "GPU Win7 (NVIDIA)",
- "Win7 (dbg)",
- "GPU Linux (NVIDIA)",
- "Linux Tests",
- "Mac10.6 Tests",
- "GPU Mac10.7",
- "GPU Win7 (dbg) (NVIDIA)",
- "GPU Mac10.7 (dbg)",
- "GPU Linux (dbg) (NVIDIA)",
- "Mac10.8 Tests"
- ]
- },
- "content_unittests": {
- "builders": [
- "Win7 (dbg)",
- "Vista Tests",
- "Linux Tests",
- "Mac10.6 Tests",
- "Android Tests (dbg)",
- "Linux Aura",
- "Mac10.8 Tests"
- ]
- },
- "contentshell_instrumentation_tests": {
- "builders": [
- "Android Tests (dbg)"
- ]
- },
- "gl_tests": {
- "builders": [
- "GPU Win7 (NVIDIA)",
- "GPU Linux (NVIDIA)",
- "GPU Mac10.7",
- "GPU Win7 (dbg) (NVIDIA)",
- "GPU Mac10.7 (dbg)",
- "GPU Linux (dbg) (NVIDIA)"
- ]
- },
- "gpu_frame_rate_test": {
- "builders": [
- "GPU Win7 (NVIDIA)",
- "GPU Linux (NVIDIA)",
- "GPU Mac10.7"
- ]
- },
- "gpu_latency_tests": {
- "builders": [
- "GPU Win7 (NVIDIA)",
- "GPU Linux (NVIDIA)",
- "GPU Mac10.7"
- ]
- },
- "gpu_tests": {
- "builders": [
- "GPU Win7 (NVIDIA)",
- "GPU Linux (NVIDIA)",
- "GPU Mac10.7",
- "GPU Win7 (dbg) (NVIDIA)",
- "GPU Mac10.7 (dbg)",
- "GPU Linux (dbg) (NVIDIA)"
- ]
- },
- "gpu_throughput_tests": {
- "builders": [
- "GPU Win7 (NVIDIA)",
- "GPU Linux (NVIDIA)",
- "GPU Mac10.7"
- ]
- },
- "gpu_unittests": {
- "builders": [
- "Android Tests (dbg)"
- ]
- },
- "installer_util_unittests": {
- "builders": [
- "Vista Tests"
- ]
- },
- "interactive_ui_tests": {
- "builders": [
- "Win7 (dbg)",
- "Linux Tests",
- "Mac10.6 Tests",
- "Mac10.8 Tests"
- ]
- },
- "ipc_tests": {
- "builders": [
- "Win7 (dbg)",
- "Vista Tests",
- "Linux Tests",
- "Mac10.6 Tests",
- "Android Tests (dbg)",
- "Linux Aura",
- "Mac10.8 Tests"
- ]
- },
- "layout-tests": {
- "builders": [
- "WebKit Linux 32",
- "WebKit Win7",
- "WebKit Linux ASAN",
- "WebKit Win7 (dbg)(2)",
- "WebKit (Content Shell) Linux",
- "WebKit (Content Shell) Win",
- "WebKit Android (GalaxyNexus)",
- "WebKit (Content Shell) Android",
- "WebKit Mac10.6 (dbg)",
- "WebKit Mac10.7 (dbg)",
- "WebKit Linux",
- "WebKit Linux (dbg)",
- "WebKit Mac10.6",
- "WebKit Mac10.7",
- "WebKit Linux (deps)",
- "WebKit Mac10.8",
- "WebKit Mac10.6 (deps)",
- "WebKit (Content Shell) Mac10.6",
- "WebKit Win7 (dbg)(1)",
- "WebKit XP (deps)",
- "WebKit XP"
- ]
- },
- "media_unittests": {
- "builders": [
- "Android Tests (dbg)"
- ]
- },
- "memory test: test_shell": {
- "builders": [
- "Linux Valgrind"
- ]
- },
- "memory_test": {
- "builders": [
- "Mac10.6 Perf"
- ]
- },
- "mini_installer_test": {
- "builders": [
- "Vista Tests"
- ]
- },
- "net_unittests": {
- "builders": [
- "Android Tests (dbg)"
- ]
- },
- "new_tab_ui_cold_test": {
- "builders": [
- "Win7 Perf",
- "Mac10.6 Perf",
- "Linux Perf"
- ]
- },
- "new_tab_ui_warm_test": {
- "builders": [
- "Win7 Perf",
- "Mac10.6 Perf",
- "Linux Perf"
- ]
- },
- "sql_unittests": {
- "builders": [
- "Win7 (dbg)",
- "Vista Tests",
- "Linux Tests",
- "Mac10.6 Tests",
- "Android Tests (dbg)",
- "Linux Aura",
- "Mac10.8 Tests"
- ]
- },
- "startup_test": {
- "builders": [
- "Win7 Perf",
- "Mac10.6 Perf",
- "Linux Perf"
- ]
- },
- "sync_unit_tests": {
- "builders": [
- "Win7 (dbg)",
- "Vista Tests",
- "Linux Tests",
- "Mac10.6 Tests",
- "Android Tests (dbg)",
- "Linux Aura",
- "Mac10.8 Tests"
- ]
- },
- "tab_switching_test": {
- "builders": [
- "Mac10.6 Perf"
- ]
- },
- "test_report": {
- "builders": [
- "WebKit Android (GalaxyNexus)",
- "WebKit (Content Shell) Android",
- "Android Tests (dbg)"
- ]
- },
- "test_shell_tests": {
- "builders": [
- "WebKit Linux 32",
- "WebKit Win7",
- "WebKit Mac10.6 (dbg)",
- "WebKit Mac10.7 (dbg)",
- "WebKit Linux",
- "WebKit Linux (dbg)",
- "WebKit Mac10.6",
- "WebKit Mac10.7",
- "WebKit Linux (deps)",
- "WebKit Mac10.8",
- "WebKit Mac10.6 (deps)",
- "WebKit Win7 (dbg)(1)",
- "WebKit XP (deps)",
- "WebKit XP"
- ]
- },
- "ui_unittests": {
- "builders": [
- "Win7 (dbg)",
- "Vista Tests",
- "Linux Tests",
- "Mac10.6 Tests",
- "Android Tests (dbg)",
- "Linux Aura",
- "Mac10.8 Tests"
- ]
- },
- "unit_tests": {
- "builders": [
- "Win7 (dbg)",
- "Vista Tests",
- "Linux Tests",
- "Mac10.6 Tests",
- "Android Tests (dbg)",
- "Linux Aura",
- "Mac10.8 Tests"
- ]
- },
- "views_unittests": {
- "builders": [
- "Win7 (dbg)",
- "Vista Tests"
- ]
- },
- "webkit_compositor_bindings_unittests": {
- "builders": [
- "Linux Tests",
- "Mac10.6 Tests",
- "Android Tests (dbg)"
- ]
- },
- "webkit_unit_tests": {
- "builders": [
- "WebKit Linux 32",
- "WebKit Win7",
- "WebKit Android (GalaxyNexus)",
- "WebKit Mac10.6 (dbg)",
- "Android Tests (dbg)",
- "WebKit Mac10.7 (dbg)",
- "WebKit Linux",
- "WebKit Linux (dbg)",
- "WebKit Mac10.6",
- "WebKit Mac10.7",
- "WebKit Linux (deps)",
- "WebKit Mac10.8",
- "WebKit Mac10.6 (deps)",
- "WebKit Win7 (dbg)(1)",
- "WebKit XP (deps)",
- "WebKit XP"
- ]
- }
+ "url": "http://build.chromium.org/p/chromium.webkit"
},
- "url": "http://build.chromium.org/p/chromium.webkit"
- },
- {
- "name": "ChromiumFYI",
- "tests": {
- "Run tests": {
- "builders": [
- "Android ChromeDriver Tests (dbg)",
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Android Asan Tests (dbg)"
- ]
- },
- "android_webview_unittests": {
- "builders": [
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Android Asan Tests (dbg)"
- ]
- },
- "androidwebview_instrumentation_tests": {
- "builders": [
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Android Asan Tests (dbg)"
- ]
- },
- "base_unittests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Mac Buildrunner",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Chromium Linux TSan v2",
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Linux ARM Tests (Panda)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Chromium Linux Redux",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Linux Buildrunner",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)",
- "Chromium iOS Simulator (dbg)",
- "Win ASAN Tests (1)",
- "Chromium Mac 10.8 Buildrunner",
- "Android Asan Tests (dbg)"
- ]
- },
- "base_unittests_buildrunner_ignore": {
- "builders": [
- "Chromium Mac Buildrunner",
- "Chromium Linux Buildrunner",
- "Chromium Mac 10.8 Buildrunner",
- "Chromium Windows Buildrunner"
- ]
- },
- "breakpad_unittests": {
- "builders": [
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Android Tests (JB GalaxyNexus)(dbg)"
- ]
- },
- "browser_tests": {
- "builders": [
- "Chromium Mac Buildrunner",
- "Chromium Win (aura)",
- "Vista Tests (dbg)(2)",
- "Chromium Linux TSan v2",
- "Win ASAN Tests (2)",
- "Linux ARM Tests (Panda)",
- "Chromium Linux Buildrunner",
- "Chromium Win (ash)",
- "Win8 Tests (2)",
- "Chromium Win x64 Clobber",
- "Win ASAN Tests (1)",
- "Chromium Mac 10.8 Buildrunner"
- ]
- },
- "browser_tests_buildrunner_ignore": {
- "builders": [
- "Chromium Mac Buildrunner",
- "Chromium Linux Buildrunner",
- "Chromium Mac 10.8 Buildrunner",
- "Chromium Windows Buildrunner"
- ]
- },
- "buildrunner_tests": {
- "builders": [
- "Chromium Mac Buildrunner",
- "Chromium Linux Buildrunner",
- "Chromium Mac 10.8 Buildrunner",
- "Chromium Windows Buildrunner"
- ]
- },
- "cacheinvalidation_unittests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Mac Buildrunner",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Chromium Linux TSan v2",
- "Linux ARM Tests (Panda)",
- "Chromium Linux Redux",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Linux Buildrunner",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)",
- "Win ASAN Tests (1)",
- "Chromium Mac 10.8 Buildrunner"
- ]
- },
- "cacheinvalidation_unittests_buildrunner_ignore": {
- "builders": [
- "Chromium Mac Buildrunner",
- "Chromium Linux Buildrunner",
- "Chromium Mac 10.8 Buildrunner",
- "Chromium Windows Buildrunner"
- ]
- },
- "cc_unittests": {
- "builders": [
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Linux ARM Tests (Panda)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Chromium Win x64 Clobber",
- "Android Asan Tests (dbg)"
- ]
- },
- "chrome_frame_net_tests": {
- "builders": [
- "Chrome Frame Tests (ie6)(peruser)",
- "Chrome Frame Tests (ie8)(peruser)",
- "Chrome Frame Tests (ie8)(dbg)",
- "Chrome Frame Tests (ie7)(peruser)"
- ]
- },
- "chrome_frame_tests": {
- "builders": [
- "Chrome Frame Tests (ie6)(peruser)",
- "Chrome Frame Tests (ie8)(peruser)",
- "Chrome Frame Tests (ie8)(dbg)",
- "Chrome Frame Tests (ie7)(peruser)"
- ]
- },
- "chrome_frame_unittests": {
- "builders": [
- "Chrome Frame Tests (ie6)(peruser)",
- "Chrome Frame Tests (ie8)(peruser)",
- "Chrome Frame Tests (ie8)(dbg)",
- "Chrome Frame Tests (ie7)(peruser)"
- ]
- },
- "chromedriver2_python_tests": {
- "builders": [
- "Android ChromeDriver Tests (dbg)"
- ]
- },
- "chromedriver2_unittests": {
- "builders": [
- "Linux ARM Tests (Panda)",
- "Chromium Win x64 Clobber"
- ]
- },
- "chromiumtestshell_instrumentation_tests": {
- "builders": [
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Android Asan Tests (dbg)"
- ]
- },
- "components_unittests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Linux ARM Tests (Panda)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)",
- "Android Asan Tests (dbg)"
- ]
- },
- "content_browsertests": {
- "builders": [
- "Chromium Mac Buildrunner",
- "Chromium Win (aura)",
- "Vista Tests (dbg)(2)",
- "Chromium Linux TSan v2",
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Win ASAN Tests (2)",
- "Linux ARM Tests (Panda)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Chromium Linux Buildrunner",
- "Chromium Win (ash)",
- "Win8 Tests (2)",
- "Chromium Win x64 Clobber",
- "Chromium Mac 10.8 Buildrunner"
- ]
- },
- "content_browsertests_buildrunner_ignore": {
- "builders": [
- "Chromium Mac Buildrunner",
- "Chromium Linux Buildrunner",
- "Chromium Mac 10.8 Buildrunner",
- "Chromium Windows Buildrunner"
- ]
- },
- "content_unittests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Linux ARM Tests (Panda)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Chromium Linux Redux",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Linux Buildrunner",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)",
- "Chromium iOS Simulator (dbg)",
- "Win ASAN Tests (1)",
- "Android Asan Tests (dbg)"
- ]
- },
- "content_unittests_buildrunner_ignore": {
- "builders": [
- "Chromium Linux Buildrunner"
- ]
- },
- "contentshell_instrumentation_tests": {
- "builders": [
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Android Asan Tests (dbg)"
- ]
- },
- "courgette_unittests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)"
- ]
- },
- "courgette_unittests_buildrunner_ignore": {
- "builders": [
- "Chromium Windows Buildrunner"
- ]
- },
- "crypto_unittests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Mac Buildrunner",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Chromium Linux TSan v2",
- "Linux ARM Tests (Panda)",
- "Chromium Linux Redux",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Linux Buildrunner",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)",
- "Chromium iOS Simulator (dbg)",
- "Win ASAN Tests (1)",
- "Chromium Mac 10.8 Buildrunner"
- ]
- },
- "crypto_unittests_buildrunner_ignore": {
- "builders": [
- "Chromium Mac Buildrunner",
- "Chromium Linux Buildrunner",
- "Chromium Mac 10.8 Buildrunner",
- "Chromium Windows Buildrunner"
- ]
- },
- "dbus_unittests": {
- "builders": [
- "Linux ARM Tests (Panda)",
- "Chromium Linux Buildrunner"
- ]
- },
- "dbus_unittests_buildrunner_ignore": {
- "builders": [
- "Chromium Linux Buildrunner"
- ]
- },
- "device_unittests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Chromium Linux TSan v2",
- "Linux ARM Tests (Panda)",
- "Chromium Linux Redux",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Vista Tests (dbg)(1)"
- ]
- },
- "googleurl_unittests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Mac Buildrunner",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Chromium Linux TSan v2",
- "Win ASAN Tests (2)",
- "Linux ARM Tests (Panda)",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Linux Buildrunner",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)",
- "Chromium iOS Simulator (dbg)",
- "Chromium Mac 10.8 Buildrunner"
- ]
- },
- "googleurl_unittests_buildrunner_ignore": {
- "builders": [
- "Chromium Mac Buildrunner",
- "Chromium Linux Buildrunner",
- "Chromium Mac 10.8 Buildrunner",
- "Chromium Windows Buildrunner"
- ]
- },
- "gpu_unittests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Mac Buildrunner",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Chromium Linux TSan v2",
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Linux ARM Tests (Panda)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Linux Buildrunner",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)",
- "Win ASAN Tests (1)",
- "Chromium Mac 10.8 Buildrunner",
- "Android Asan Tests (dbg)"
- ]
- },
- "gpu_unittests_buildrunner_ignore": {
- "builders": [
- "Chromium Mac Buildrunner",
- "Chromium Linux Buildrunner",
- "Chromium Mac 10.8 Buildrunner",
- "Chromium Windows Buildrunner"
- ]
- },
- "installer_util_unittests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)",
- "Chromium Windows Buildrunner"
- ]
- },
- "interactive_ui_tests": {
- "builders": [
- "Linux ARM Tests (Panda)",
- "Chromium Win x64 Clobber"
- ]
- },
- "ipc_tests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Win ASAN Tests (2)",
- "Linux ARM Tests (Panda)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Chromium Linux Redux",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Linux Buildrunner",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)",
- "Android Asan Tests (dbg)"
- ]
- },
- "ipc_tests_buildrunner_ignore": {
- "builders": [
- "Chromium Linux Buildrunner"
- ]
- },
- "jingle_unittests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Mac Buildrunner",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Chromium Linux TSan v2",
- "Linux ARM Tests (Panda)",
- "Chromium Linux Redux",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Linux Buildrunner",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)",
- "Win ASAN Tests (1)",
- "Chromium Mac 10.8 Buildrunner"
- ]
- },
- "jingle_unittests_buildrunner_ignore": {
- "builders": [
- "Chromium Mac Buildrunner",
- "Chromium Linux Buildrunner",
- "Chromium Mac 10.8 Buildrunner",
- "Chromium Windows Buildrunner"
- ]
- },
- "media_unittests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Mac Buildrunner",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Chromium Linux TSan v2",
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Win ASAN Tests (2)",
- "Linux ARM Tests (Panda)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Linux Buildrunner",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)",
- "Chromium iOS Simulator (dbg)",
- "Chromium Mac 10.8 Buildrunner",
- "Android Asan Tests (dbg)"
- ]
- },
- "media_unittests_buildrunner_ignore": {
- "builders": [
- "Chromium Mac Buildrunner",
- "Chromium Linux Buildrunner",
- "Chromium Mac 10.8 Buildrunner",
- "Chromium Windows Buildrunner"
- ]
- },
- "memory test: base_unittests": {
- "builders": [
- "Chromium Mac 10.6 (tsan)",
- "Windows Tests (TSan Win 7)",
- "Linux Tests (tsan RV)",
- "Windows Tests (DrMemory XP)",
- "Windows Tests (DrMemory full)",
- "Windows Tests (DrMemory pattern)"
- ]
- },
- "memory test: browser_tests": {
- "builders": [
- "Windows Browser (DrMemory) (1)",
- "Windows Browser (DrMemory) (6)",
- "Chromium Linux Browser (valgrind) (1)",
- "Windows Browser (DrMemory) (5)",
- "Chromium Linux Browser (valgrind) (2)",
- "Windows Browser (DrMemory) (4)",
- "Chromium Linux Browser (valgrind) (3)",
- "Windows Browser (DrMemory) (3)",
- "Chromium Linux Browser (valgrind) (4)",
- "Windows Browser (DrMemory) (2)"
- ]
- },
- "memory test: browser_tests_1": {
- "builders": [
- "Chromium Linux Browser (valgrind) (1)",
- "Chromium Linux Browser (valgrind) (2)",
- "Chromium Linux Browser (valgrind) (3)",
- "Chromium Linux Browser (valgrind) (4)"
- ]
- },
- "memory test: content": {
- "builders": [
- "Chromium Mac 10.6 (tsan)"
- ]
- },
- "memory test: content_browsertests": {
- "builders": [
- "Chromium Linux Browser (valgrind) (1)",
- "Chromium Linux Browser (valgrind) (2)",
- "Chromium Linux Browser (valgrind) (3)",
- "Chromium Linux Browser (valgrind) (4)"
- ]
- },
- "memory test: crypto": {
- "builders": [
- "Chromium Mac 10.6 (tsan)",
- "Windows Tests (TSan Win 7)",
- "Linux Tests (tsan RV)",
- "Windows Tests (DrMemory XP)",
- "Windows Tests (DrMemory full)",
- "Windows Tests (DrMemory pattern)"
- ]
- },
- "memory test: device_unittests": {
- "builders": [
- "Linux Tests (tsan RV)"
- ]
- },
- "memory test: googleurl": {
- "builders": [
- "Chromium Mac 10.6 (tsan)",
- "Windows Tests (TSan Win 7)",
- "Linux Tests (tsan RV)",
- "Windows Tests (DrMemory XP)",
- "Windows Tests (DrMemory full)",
- "Windows Tests (DrMemory pattern)"
- ]
- },
- "memory test: interactive_ui_tests": {
- "builders": [
- "Chromium Linux Reliability (valgrind)"
- ]
- },
- "memory test: interactive_ui_tests_1": {
- "builders": [
- "Chromium Linux Reliability (valgrind)"
- ]
- },
- "memory test: ipc_tests": {
- "builders": [
- "Chromium Mac 10.6 (tsan)",
- "Windows Tests (TSan Win 7)",
- "Linux Tests (tsan RV)",
- "Windows Tests (DrMemory XP)",
- "Windows Tests (DrMemory full)",
- "Windows Tests (DrMemory pattern)"
- ]
- },
- "memory test: media": {
- "builders": [
- "Chromium Mac 10.6 (tsan)",
- "Windows Tests (TSan Win 7)",
- "Linux Tests (tsan RV)",
- "Windows Tests (DrMemory XP)",
- "Windows Tests (DrMemory full)",
- "Windows Tests (DrMemory pattern)"
- ]
- },
- "memory test: net": {
- "builders": [
- "Chromium Mac 10.6 (tsan)",
- "Windows Tests (TSan Win 7)",
- "Linux Tests (tsan RV)",
- "Windows Tests (DrMemory XP)",
- "Windows Tests (DrMemory full)",
- "Windows Tests (DrMemory pattern)"
- ]
- },
- "memory test: printing": {
- "builders": [
- "Chromium Mac 10.6 (tsan)",
- "Windows Tests (TSan Win 7)",
- "Linux Tests (tsan RV)",
- "Windows Tests (DrMemory XP)",
- "Windows Tests (DrMemory full)",
- "Windows Tests (DrMemory pattern)"
- ]
- },
- "memory test: remoting": {
- "builders": [
- "Chromium Mac 10.6 (tsan)",
- "Windows Tests (TSan Win 7)",
- "Linux Tests (tsan RV)",
- "Windows Tests (DrMemory XP)",
- "Windows Tests (DrMemory full)",
- "Windows Tests (DrMemory pattern)"
- ]
- },
- "memory test: sql": {
- "builders": [
- "Chromium Mac 10.6 (tsan)",
- "Windows Tests (TSan Win 7)",
- "Linux Tests (tsan RV)",
- "Windows Tests (DrMemory XP)",
- "Windows Tests (DrMemory full)",
- "Windows Tests (DrMemory pattern)"
- ]
- },
- "memory test: sync": {
- "builders": [
- "Chromium Mac 10.6 (tsan)",
- "Linux Tests (tsan RV)"
- ]
- },
- "memory test: ui_unittests": {
- "builders": [
- "Chromium Mac 10.6 (tsan)",
- "Linux Tests (tsan RV)"
- ]
- },
- "memory test: unit": {
- "builders": [
- "Linux Tests (tsan RV)",
- "Windows Tests (DrMemory XP)",
- "Windows Tests (DrMemory full)",
- "Windows Tests (DrMemory pattern)"
- ]
- },
- "memory test: unit_1": {
- "builders": [
- "Linux Tests (tsan RV)",
- "Windows Tests (DrMemory XP)",
- "Windows Tests (DrMemory full)"
- ]
- },
- "memory test: unit_2": {
- "builders": [
- "Windows Tests (DrMemory XP)",
- "Windows Tests (DrMemory full)"
- ]
- },
- "memory test: unit_3": {
- "builders": [
- "Windows Tests (DrMemory full)"
- ]
- },
- "memory test: unit_4": {
- "builders": [
- "Windows Tests (DrMemory full)"
- ]
- },
- "memory test: unit_5": {
- "builders": [
- "Windows Tests (DrMemory full)"
- ]
- },
- "memory_test": {
- "builders": [
- "Chromium Linux Memory",
- "Chromium Vista Memory",
- "Chromium Mac Memory"
- ]
- },
- "mini_installer_test": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Win (ash)",
- "Win8 Tests (1)"
- ]
- },
- "mini_installer_test_buildrunner_ignore": {
- "builders": [
- "Chromium Windows Buildrunner"
- ]
- },
- "net_unittests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Chromium Linux TSan v2",
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Linux ARM Tests (Panda)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Chromium Linux Redux",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Linux Buildrunner",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)",
- "Chromium iOS Simulator (dbg)",
- "Win ASAN Tests (1)",
- "Android Asan Tests (dbg)"
- ]
- },
- "net_unittests_buildrunner_ignore": {
- "builders": [
- "Chromium Linux Buildrunner"
- ]
- },
- "ppapi_unittests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Mac Buildrunner",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Chromium Linux TSan v2",
- "Win ASAN Tests (2)",
- "Linux ARM Tests (Panda)",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Linux Buildrunner",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)",
- "Chromium Mac 10.8 Buildrunner"
- ]
- },
- "ppapi_unittests_buildrunner_ignore": {
- "builders": [
- "Chromium Mac Buildrunner",
- "Chromium Linux Buildrunner",
- "Chromium Mac 10.8 Buildrunner",
- "Chromium Windows Buildrunner"
- ]
- },
- "printing_unittests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Mac Buildrunner",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Chromium Linux TSan v2",
- "Win ASAN Tests (2)",
- "Linux ARM Tests (Panda)",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Linux Buildrunner",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)",
- "Chromium Mac 10.8 Buildrunner"
- ]
- },
- "printing_unittests_buildrunner_ignore": {
- "builders": [
- "Chromium Mac Buildrunner",
- "Chromium Linux Buildrunner",
- "Chromium Mac 10.8 Buildrunner",
- "Chromium Windows Buildrunner"
- ]
- },
- "remoting_unittests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Mac Buildrunner",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Linux TSan v2",
- "Win ASAN Tests (2)",
- "Linux ARM Tests (Panda)",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Linux Buildrunner",
- "Chromium Win VS2012 Goma (dbg)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)",
- "Chromium Mac 10.8 Buildrunner"
- ]
- },
- "remoting_unittests_buildrunner_ignore": {
- "builders": [
- "Chromium Mac Buildrunner",
- "Chromium Linux Buildrunner",
- "Chromium Mac 10.8 Buildrunner",
- "Chromium Windows Buildrunner"
- ]
- },
- "run_browser_tests_only": {
- "builders": [
- "Linux Coverage (dbg)"
- ]
- },
- "run_unittests_only": {
- "builders": [
- "Linux Coverage (dbg)"
- ]
- },
- "sandbox_linux_unittests": {
- "builders": [
- "Chromium Linux TSan v2",
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Linux ARM Tests (Panda)",
- "Android Tests (JB GalaxyNexus)(dbg)"
- ]
- },
- "sbox_integration_tests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)"
- ]
- },
- "sbox_integration_tests_buildrunner_ignore": {
- "builders": [
- "Chromium Windows Buildrunner"
- ]
- },
- "sbox_unittests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)"
- ]
- },
- "sbox_unittests_buildrunner_ignore": {
- "builders": [
- "Chromium Windows Buildrunner"
- ]
- },
- "sbox_validation_tests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)"
- ]
- },
- "sbox_validation_tests_buildrunner_ignore": {
- "builders": [
- "Chromium Windows Buildrunner"
- ]
- },
- "sql_unittests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Linux ARM Tests (Panda)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Chromium Linux Redux",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Linux Buildrunner",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)",
- "Chromium iOS Simulator (dbg)",
- "Win ASAN Tests (1)",
- "Android Asan Tests (dbg)"
- ]
- },
- "sql_unittests_buildrunner_ignore": {
- "builders": [
- "Chromium Linux Buildrunner"
- ]
- },
- "sync_integration_tests": {
- "builders": [
- "ChromiumOS Linux Tests",
- "Chromium Win x64 Clobber"
- ]
- },
- "sync_unit_tests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Win ASAN Tests (2)",
- "Linux ARM Tests (Panda)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Chromium Linux Redux",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Linux Buildrunner",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)",
- "Chromium iOS Simulator (dbg)",
- "Android Asan Tests (dbg)"
- ]
- },
- "sync_unit_tests_buildrunner_ignore": {
- "builders": [
- "Chromium Linux Buildrunner"
- ]
- },
- "telemetry_perf_unittests": {
- "builders": [
- "Chromium Mac Perf Annotator",
- "Chromium Windows Perf Annotator",
- "Chromium Linux Perf Annotator"
- ]
- },
- "telemetry_unittests": {
- "builders": [
- "Chromium Mac Perf Annotator",
- "Chromium Windows Perf Annotator",
- "Chromium Linux Perf Annotator"
- ]
- },
- "test_report": {
- "builders": [
- "Android ChromeDriver Tests (dbg)",
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Android Asan Tests (dbg)"
- ]
- },
- "ui_unittests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Linux ARM Tests (Panda)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Chromium Linux Redux",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Linux Buildrunner",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)",
- "Chromium iOS Simulator (dbg)",
- "Win ASAN Tests (1)",
- "Android Asan Tests (dbg)"
- ]
- },
- "ui_unittests_buildrunner_ignore": {
- "builders": [
- "Chromium Linux Buildrunner"
- ]
- },
- "unit_tests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Chromium Linux TSan v2",
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Win ASAN Tests (2)",
- "Linux ARM Tests (Panda)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Chromium Linux Redux",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Linux Buildrunner",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)",
- "Chromium iOS Simulator (dbg)",
- "Android Asan Tests (dbg)"
- ]
- },
- "unit_tests_buildrunner_ignore": {
- "builders": [
- "Chromium Linux Buildrunner"
- ]
- },
- "views_unittests": {
- "builders": [
- "Chromium Win7 Ninja Goma (shared)",
- "Chromium Win VS2012 Goma",
- "Chromium Win VS2012",
- "Chromium Win (aura)",
- "Chromium Win7 Ninja Goma",
- "Chromium Win Ninja Goma (shared)",
- "Chromium Win Ninja Goma",
- "Chromium Win VS2012 Goma (dbg)",
- "Chromium Win (ash)",
- "Win8 Tests (1)",
- "Chromium Win VS2012 (dbg)",
- "Chromium Win x64 Clobber",
- "Vista Tests (dbg)(1)"
- ]
- },
- "webkit_compositor_bindings_unittests": {
- "builders": [
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Linux ARM Tests (Panda)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Chromium Win x64 Clobber",
- "Android Asan Tests (dbg)"
- ]
+ {
+ "groups": [
+ "@ToT Chromium FYI"
+ ],
+ "name": "ChromiumFYI",
+ "tests": {
+ "Run tests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android ChromeDriver Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)"
+ ]
+ },
+ "android_webview_unittests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)"
+ ]
+ },
+ "androidwebview_instrumentation_tests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)"
+ ]
+ },
+ "base_unittests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)",
+ "Chromium Linux Buildrunner",
+ "Chromium Linux Redux",
+ "Chromium Linux TSan v2",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Mac Buildrunner",
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Chromium iOS Simulator (dbg)",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(1)",
+ "Win ASAN Tests (1)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "base_unittests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac Buildrunner",
+ "Chromium Windows Buildrunner"
+ ]
+ },
+ "breakpad_unittests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)"
+ ]
+ },
+ "browser_tests": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Linux TSan v2",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Mac Buildrunner",
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win x64 Clobber",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(2)",
+ "Win ASAN Tests (1)",
+ "Win ASAN Tests (2)",
+ "Win8 Tests (2)"
+ ]
+ },
+ "browser_tests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac Buildrunner",
+ "Chromium Windows Buildrunner"
+ ]
+ },
+ "buildrunner_tests": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac Buildrunner",
+ "Chromium Windows Buildrunner",
+ "Chromium Windows Instant Extended"
+ ]
+ },
+ "cacheinvalidation_unittests": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Linux Redux",
+ "Chromium Linux TSan v2",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Mac Buildrunner",
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(1)",
+ "Win ASAN Tests (1)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "cacheinvalidation_unittests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac Buildrunner",
+ "Chromium Windows Buildrunner"
+ ]
+ },
+ "cc_unittests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Win x64 Clobber",
+ "Linux ARM Tests (Panda)"
+ ]
+ },
+ "chrome_frame_net_tests": {
+ "builders": [
+ "Chrome Frame Tests (ie6)(peruser)",
+ "Chrome Frame Tests (ie7)(peruser)",
+ "Chrome Frame Tests (ie8)(dbg)",
+ "Chrome Frame Tests (ie8)(peruser)"
+ ]
+ },
+ "chrome_frame_tests": {
+ "builders": [
+ "Chrome Frame Tests (ie6)(peruser)",
+ "Chrome Frame Tests (ie7)(peruser)",
+ "Chrome Frame Tests (ie8)(dbg)",
+ "Chrome Frame Tests (ie8)(peruser)"
+ ]
+ },
+ "chrome_frame_unittests": {
+ "builders": [
+ "Chrome Frame Tests (ie6)(peruser)",
+ "Chrome Frame Tests (ie7)(peruser)",
+ "Chrome Frame Tests (ie8)(dbg)",
+ "Chrome Frame Tests (ie8)(peruser)"
+ ]
+ },
+ "chromedriver2_unittests": {
+ "builders": [
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Win x64 Clobber",
+ "Linux ARM Tests (Panda)"
+ ]
+ },
+ "chromiumtestshell_instrumentation_tests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)"
+ ]
+ },
+ "components_unittests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(1)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "content_browsertests": {
+ "builders": [
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)",
+ "Chromium Linux Buildrunner",
+ "Chromium Linux TSan v2",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Mac Buildrunner",
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win x64 Clobber",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(2)",
+ "Win ASAN Tests (2)",
+ "Win8 Tests (2)"
+ ]
+ },
+ "content_browsertests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac Buildrunner",
+ "Chromium Windows Buildrunner"
+ ]
+ },
+ "content_unittests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)",
+ "Chromium Linux Buildrunner",
+ "Chromium Linux Redux",
+ "Chromium Linux TSan v2",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Chromium iOS Simulator (dbg)",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(1)",
+ "Win ASAN Tests (1)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "content_unittests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Linux Buildrunner"
+ ]
+ },
+ "contentshell_instrumentation_tests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)"
+ ]
+ },
+ "courgette_unittests": {
+ "builders": [
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Vista Tests (dbg)(1)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "courgette_unittests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Windows Buildrunner"
+ ]
+ },
+ "crypto_unittests": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Linux Redux",
+ "Chromium Linux TSan v2",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Mac Buildrunner",
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Chromium iOS Simulator (dbg)",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(1)",
+ "Win ASAN Tests (1)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "crypto_unittests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac Buildrunner",
+ "Chromium Windows Buildrunner"
+ ]
+ },
+ "dbus_unittests": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Linux ARM Tests (Panda)"
+ ]
+ },
+ "dbus_unittests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Linux Buildrunner"
+ ]
+ },
+ "device_unittests": {
+ "builders": [
+ "Chromium Linux Redux",
+ "Chromium Linux TSan v2",
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(1)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "gpu_unittests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)",
+ "Chromium Linux Buildrunner",
+ "Chromium Linux TSan v2",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Mac Buildrunner",
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(1)",
+ "Win ASAN Tests (1)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "gpu_unittests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac Buildrunner",
+ "Chromium Windows Buildrunner"
+ ]
+ },
+ "install_chromiumtestshell": {
+ "builders": [
+ "Android ChromeDriver Tests (dbg)"
+ ]
+ },
+ "installer_util_unittests": {
+ "builders": [
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Chromium Windows Buildrunner",
+ "Vista Tests (dbg)(1)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "interactive_ui_tests": {
+ "builders": [
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Win x64 Clobber",
+ "Chromium Windows Instant Extended",
+ "Linux ARM Tests (Panda)"
+ ]
+ },
+ "interactive_ui_tests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Windows Instant Extended"
+ ]
+ },
+ "ipc_tests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)",
+ "Chromium Linux Buildrunner",
+ "Chromium Linux Redux",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(1)",
+ "Win ASAN Tests (2)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "ipc_tests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Linux Buildrunner"
+ ]
+ },
+ "java_tests": {
+ "builders": [
+ "Android ChromeDriver Tests (dbg)"
+ ]
+ },
+ "jingle_unittests": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Linux Redux",
+ "Chromium Linux TSan v2",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Mac Buildrunner",
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(1)",
+ "Win ASAN Tests (1)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "jingle_unittests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac Buildrunner",
+ "Chromium Windows Buildrunner"
+ ]
+ },
+ "media_unittests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)",
+ "Chromium Linux Buildrunner",
+ "Chromium Linux TSan v2",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Mac Buildrunner",
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Chromium iOS Simulator (dbg)",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(1)",
+ "Win ASAN Tests (2)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "media_unittests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac Buildrunner",
+ "Chromium Windows Buildrunner"
+ ]
+ },
+ "memory test: base_unittests": {
+ "builders": [
+ "Chromium Mac 10.6 (tsan)",
+ "Linux Tests (tsan RV)",
+ "Windows Tests (DrMemory XP)",
+ "Windows Tests (DrMemory full)",
+ "Windows Tests (DrMemory pattern)",
+ "Windows Tests (TSan Win 7)"
+ ]
+ },
+ "memory test: browser_tests": {
+ "builders": [
+ "Chromium Linux Browser (valgrind) (1)",
+ "Chromium Linux Browser (valgrind) (2)",
+ "Chromium Linux Browser (valgrind) (3)",
+ "Chromium Linux Browser (valgrind) (4)",
+ "Windows Browser (DrMemory) (1)",
+ "Windows Browser (DrMemory) (2)",
+ "Windows Browser (DrMemory) (3)",
+ "Windows Browser (DrMemory) (4)",
+ "Windows Browser (DrMemory) (5)",
+ "Windows Browser (DrMemory) (6)"
+ ]
+ },
+ "memory test: browser_tests_1": {
+ "builders": [
+ "Chromium Linux Browser (valgrind) (1)",
+ "Chromium Linux Browser (valgrind) (2)",
+ "Chromium Linux Browser (valgrind) (3)",
+ "Chromium Linux Browser (valgrind) (4)"
+ ]
+ },
+ "memory test: content": {
+ "builders": [
+ "Chromium Mac 10.6 (tsan)"
+ ]
+ },
+ "memory test: content_browsertests": {
+ "builders": [
+ "Chromium Linux Browser (valgrind) (1)",
+ "Chromium Linux Browser (valgrind) (2)",
+ "Chromium Linux Browser (valgrind) (3)",
+ "Chromium Linux Browser (valgrind) (4)"
+ ]
+ },
+ "memory test: crypto": {
+ "builders": [
+ "Chromium Mac 10.6 (tsan)",
+ "Linux Tests (tsan RV)",
+ "Windows Tests (DrMemory XP)",
+ "Windows Tests (DrMemory full)",
+ "Windows Tests (DrMemory pattern)",
+ "Windows Tests (TSan Win 7)"
+ ]
+ },
+ "memory test: device_unittests": {
+ "builders": [
+ "Linux Tests (tsan RV)"
+ ]
+ },
+ "memory test: googleurl": {
+ "builders": [
+ "Chromium Mac 10.6 (tsan)",
+ "Linux Tests (tsan RV)",
+ "Windows Tests (DrMemory XP)",
+ "Windows Tests (DrMemory full)",
+ "Windows Tests (DrMemory pattern)",
+ "Windows Tests (TSan Win 7)"
+ ]
+ },
+ "memory test: interactive_ui_tests": {
+ "builders": [
+ "Chromium Linux Reliability (valgrind)"
+ ]
+ },
+ "memory test: interactive_ui_tests_1": {
+ "builders": [
+ "Chromium Linux Reliability (valgrind)"
+ ]
+ },
+ "memory test: ipc_tests": {
+ "builders": [
+ "Chromium Mac 10.6 (tsan)",
+ "Linux Tests (tsan RV)",
+ "Windows Tests (DrMemory XP)",
+ "Windows Tests (DrMemory full)",
+ "Windows Tests (DrMemory pattern)",
+ "Windows Tests (TSan Win 7)"
+ ]
+ },
+ "memory test: media": {
+ "builders": [
+ "Chromium Mac 10.6 (tsan)",
+ "Linux Tests (tsan RV)",
+ "Windows Tests (DrMemory XP)",
+ "Windows Tests (DrMemory full)",
+ "Windows Tests (DrMemory pattern)",
+ "Windows Tests (TSan Win 7)"
+ ]
+ },
+ "memory test: net": {
+ "builders": [
+ "Chromium Mac 10.6 (tsan)",
+ "Linux Tests (tsan RV)",
+ "Windows Tests (DrMemory XP)",
+ "Windows Tests (DrMemory full)",
+ "Windows Tests (DrMemory pattern)",
+ "Windows Tests (TSan Win 7)"
+ ]
+ },
+ "memory test: printing": {
+ "builders": [
+ "Chromium Mac 10.6 (tsan)",
+ "Linux Tests (tsan RV)",
+ "Windows Tests (DrMemory XP)",
+ "Windows Tests (DrMemory full)",
+ "Windows Tests (DrMemory pattern)",
+ "Windows Tests (TSan Win 7)"
+ ]
+ },
+ "memory test: remoting": {
+ "builders": [
+ "Chromium Mac 10.6 (tsan)",
+ "Linux Tests (tsan RV)",
+ "Windows Tests (DrMemory XP)",
+ "Windows Tests (DrMemory full)",
+ "Windows Tests (DrMemory pattern)",
+ "Windows Tests (TSan Win 7)"
+ ]
+ },
+ "memory test: sql": {
+ "builders": [
+ "Chromium Mac 10.6 (tsan)",
+ "Linux Tests (tsan RV)",
+ "Windows Tests (DrMemory XP)",
+ "Windows Tests (DrMemory full)",
+ "Windows Tests (DrMemory pattern)",
+ "Windows Tests (TSan Win 7)"
+ ]
+ },
+ "memory test: sync": {
+ "builders": [
+ "Chromium Mac 10.6 (tsan)",
+ "Linux Tests (tsan RV)"
+ ]
+ },
+ "memory test: ui_unittests": {
+ "builders": [
+ "Chromium Mac 10.6 (tsan)",
+ "Linux Tests (tsan RV)"
+ ]
+ },
+ "memory test: unit": {
+ "builders": [
+ "Linux Tests (tsan RV)",
+ "Windows Tests (DrMemory XP)",
+ "Windows Tests (DrMemory full)",
+ "Windows Tests (DrMemory pattern)"
+ ]
+ },
+ "memory test: unit_1": {
+ "builders": [
+ "Linux Tests (tsan RV)",
+ "Windows Tests (DrMemory XP)",
+ "Windows Tests (DrMemory full)"
+ ]
+ },
+ "memory test: unit_2": {
+ "builders": [
+ "Windows Tests (DrMemory XP)",
+ "Windows Tests (DrMemory full)"
+ ]
+ },
+ "memory test: unit_3": {
+ "builders": [
+ "Windows Tests (DrMemory full)"
+ ]
+ },
+ "memory test: unit_4": {
+ "builders": [
+ "Windows Tests (DrMemory full)"
+ ]
+ },
+ "memory test: unit_5": {
+ "builders": [
+ "Windows Tests (DrMemory full)"
+ ]
+ },
+ "memory_test": {
+ "builders": [
+ "Chromium Linux Memory",
+ "Chromium Mac Memory",
+ "Chromium Vista Memory"
+ ]
+ },
+ "message_center_unittests": {
+ "builders": [
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Mac Buildrunner"
+ ]
+ },
+ "message_center_unittests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac Buildrunner"
+ ]
+ },
+ "mini_installer_test": {
+ "builders": [
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "mini_installer_test_buildrunner_ignore": {
+ "builders": [
+ "Chromium Windows Buildrunner"
+ ]
+ },
+ "net_unittests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)",
+ "Chromium Linux Buildrunner",
+ "Chromium Linux Redux",
+ "Chromium Linux TSan v2",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Chromium iOS Simulator (dbg)",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(1)",
+ "Win ASAN Tests (1)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "net_unittests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Linux Buildrunner"
+ ]
+ },
+ "ppapi_unittests": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Linux TSan v2",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Mac Buildrunner",
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(1)",
+ "Win ASAN Tests (2)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "ppapi_unittests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac Buildrunner",
+ "Chromium Windows Buildrunner"
+ ]
+ },
+ "printing_unittests": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Linux TSan v2",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Mac Buildrunner",
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(1)",
+ "Win ASAN Tests (2)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "printing_unittests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac Buildrunner",
+ "Chromium Windows Buildrunner"
+ ]
+ },
+ "python_tests": {
+ "builders": [
+ "Android ChromeDriver Tests (dbg)"
+ ]
+ },
+ "remoting_unittests": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Linux TSan v2",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Mac Buildrunner",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(1)",
+ "Win ASAN Tests (2)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "remoting_unittests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac Buildrunner",
+ "Chromium Windows Buildrunner"
+ ]
+ },
+ "run_browser_tests_only": {
+ "builders": [
+ "Linux Coverage (dbg)"
+ ]
+ },
+ "run_unittests_only": {
+ "builders": [
+ "Linux Coverage (dbg)"
+ ]
+ },
+ "sandbox_linux_unittests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)",
+ "Chromium Linux TSan v2",
+ "Linux ARM Tests (Panda)"
+ ]
+ },
+ "sbox_integration_tests": {
+ "builders": [
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Vista Tests (dbg)(1)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "sbox_integration_tests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Windows Buildrunner"
+ ]
+ },
+ "sbox_unittests": {
+ "builders": [
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Vista Tests (dbg)(1)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "sbox_unittests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Windows Buildrunner"
+ ]
+ },
+ "sbox_validation_tests": {
+ "builders": [
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Vista Tests (dbg)(1)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "sbox_validation_tests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Windows Buildrunner"
+ ]
+ },
+ "sql_unittests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)",
+ "Chromium Linux Buildrunner",
+ "Chromium Linux Redux",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Chromium iOS Simulator (dbg)",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(1)",
+ "Win ASAN Tests (1)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "sql_unittests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Linux Buildrunner"
+ ]
+ },
+ "sync_integration_tests": {
+ "builders": [
+ "Chromium Win x64 Clobber",
+ "ChromiumOS Linux Tests"
+ ]
+ },
+ "sync_unit_tests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)",
+ "Chromium Linux Buildrunner",
+ "Chromium Linux Redux",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Chromium iOS Simulator (dbg)",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(1)",
+ "Win ASAN Tests (2)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "sync_unit_tests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Linux Buildrunner"
+ ]
+ },
+ "telemetry_unittests": {
+ "builders": [
+ "Chromium Linux Perf Annotator",
+ "Chromium Mac Perf Annotator",
+ "Chromium Windows Perf Annotator"
+ ]
+ },
+ "test_report": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android ChromeDriver Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)"
+ ]
+ },
+ "ui_unittests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)",
+ "Chromium Linux Buildrunner",
+ "Chromium Linux Redux",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Chromium iOS Simulator (dbg)",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(1)",
+ "Win ASAN Tests (1)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "ui_unittests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Linux Buildrunner"
+ ]
+ },
+ "unit_tests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)",
+ "Chromium Linux Buildrunner",
+ "Chromium Linux Redux",
+ "Chromium Linux TSan v2",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Chromium iOS Simulator (dbg)",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(1)",
+ "Win ASAN Tests (2)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "unit_tests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Linux Buildrunner"
+ ]
+ },
+ "url_unittests": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Linux TSan v2",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Mac Buildrunner",
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Chromium iOS Simulator (dbg)",
+ "Linux ARM Tests (Panda)",
+ "Vista Tests (dbg)(1)",
+ "Win ASAN Tests (2)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "url_unittests_buildrunner_ignore": {
+ "builders": [
+ "Chromium Linux Buildrunner",
+ "Chromium Mac 10.8 Buildrunner",
+ "Chromium Mac Buildrunner",
+ "Chromium Windows Buildrunner"
+ ]
+ },
+ "views_unittests": {
+ "builders": [
+ "Chromium Win (ash)",
+ "Chromium Win (aura)",
+ "Chromium Win Ninja Goma",
+ "Chromium Win Ninja Goma (shared)",
+ "Chromium Win VS2012",
+ "Chromium Win VS2012 (dbg)",
+ "Chromium Win VS2012 Goma",
+ "Chromium Win VS2012 Goma (dbg)",
+ "Chromium Win x64 Clobber",
+ "Chromium Win7 Ninja Goma",
+ "Chromium Win7 Ninja Goma (shared)",
+ "Vista Tests (dbg)(1)",
+ "Win ASAN Tests (1)",
+ "Win8 Tests (1)"
+ ]
+ },
+ "webkit_compositor_bindings_unittests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)",
+ "Chromium Mac 10.8 x64 tester (experimental)",
+ "Chromium Win x64 Clobber",
+ "Linux ARM Tests (Panda)"
+ ]
+ },
+ "webkit_unit_tests": {
+ "builders": [
+ "Android Asan Builder Tests (dbg)",
+ "Android Tests (ICS GalaxyNexus)(dbg)",
+ "Android Tests (JB GalaxyNexus)(dbg)",
+ "Android Tests (JB Nexus7)(dbg)"
+ ]
+ }
},
- "webkit_unit_tests": {
- "builders": [
- "Android Tests (JB Nexus7)(dbg)",
- "Android Tests (ICS GalaxyNexus)(dbg)",
- "Android Tests (JB GalaxyNexus)(dbg)",
- "Android Asan Tests (dbg)"
- ]
- }
- },
- "url": "http://build.chromium.org/p/chromium.fyi"
- },
- {
- "name": "webkit.org",
- "tests": {
- "layout-tests": {
- "builders": [
- "Apple Lion (Leaks)",
- "Apple Lion Debug WK1 (Tests)",
- "Apple Lion Debug WK2 (Tests)",
- "Apple Lion Release WK1 (Tests)",
- "Apple Lion Release WK2 (Tests)",
- "Apple MountainLion (Leaks)",
- "Apple MountainLion Debug WK1 (Tests)",
- "Apple MountainLion Debug WK2 (Tests)",
- "Apple MountainLion Release WK1 (Tests)",
- "Apple MountainLion Release WK2 (Tests)",
- "Apple Win 7 Debug (Tests)",
- "Apple Win 7 Release (Tests)",
- "Chromium Android Release (Tests)",
- "Chromium Linux Release (Tests)",
- "Chromium Mac Release (Tests)",
- "Chromium Win Release (Tests)",
- "EFL Linux 64-bit Debug WK2",
- "EFL Linux 64-bit Release",
- "EFL Linux 64-bit Release WK2",
- "GTK Linux 32-bit Release",
- "GTK Linux 64-bit Debug WK1",
- "GTK Linux 64-bit Release",
- "GTK Linux 64-bit Release WK2 (Tests)",
- "Qt Linux Release",
- "WinCairo Release"
- ]
- }
- },
- "url": "http://build.webkit.org"
- }
-]);
+ "url": "http://build.chromium.org/p/chromium.fyi"
+ }
+ ]
+});
diff --git a/Tools/TestResultServer/static-dashboards/builders_unittests.js b/Tools/TestResultServer/static-dashboards/builders_unittests.js
index 0b2518c..f23e4b9 100644
--- a/Tools/TestResultServer/static-dashboards/builders_unittests.js
+++ b/Tools/TestResultServer/static-dashboards/builders_unittests.js
@@ -40,4 +40,49 @@
equal(master.builderJsonPath(), baseUrl + '/json/builders');
equal(master.tests, tests);
equal(master.name, name);
-})
+});
+
+test('builders._builderFilter', 5, function() {
+ var filter = builders._builderFilter('@ToT Blink', 'layout-tests');
+ equal(filter('WebKit (Content Shell) Linux'), true, 'show content shell builder');
+ equal(filter('WebKit Linux'), true, 'show generic webkit builder');
+ equal(filter('Android Tests (dbg) '), false, 'don\'t show android tests');
+
+ var filter = builders._builderFilter('@ToT Chromium', 'webkit_unit_tests');
+ equal(filter('WebKit Win7 (deps)'), true, 'show DEPS builder');
+ equal(filter('WebKit Win7'), false, 'don\'t show non-deps builder');
+});
+
+test('builders.groupNamesForTestType', 4, function() {
+ var names = builders.groupNamesForTestType('layout-tests');
+ equal(names.indexOf('@ToT Blink') != -1, true, 'include layout-tests in ToT');
+ equal(names.indexOf('@ToT Chromium') != -1, true, 'include layout-tests in DEPS');
+
+ names = builders.groupNamesForTestType('ash_unittests');
+ equal(names.indexOf('@ToT Blink') != -1, false, 'don\'t include interactive_ui_tests in ToT');
+ equal(names.indexOf('@ToT Chromium') != -1, true, 'include interactive_ui_tests in DEPS');
+});
+
+test('BuilderGroup.isToTBlink', 2, function() {
+ var builderGroup = builders.loadBuildersList('@ToT Blink', 'layout-tests');
+ equal(builderGroup.isToTBlink, true);
+ builderGroup = builders.loadBuildersList('@ToT Chromium', 'layout-tests');
+ equal(builderGroup.isToTBlink, false);
+});
+
+test('builders.loadBuildersList', 4, function() {
+ resetGlobals();
+
+ builders.loadBuildersList('@ToT Blink', 'layout-tests');
+ var expectedBuilder = 'WebKit Win';
+ equal(expectedBuilder in builders.getBuilderGroup().builders, true, expectedBuilder + ' should be among current builders');
+
+ builders.loadBuildersList('@ToT Chromium', 'layout-tests');
+ expectedBuilder = 'WebKit Linux (deps)'
+ equal(expectedBuilder in builders.getBuilderGroup().builders, true, expectedBuilder + ' should be among current builders');
+ expectedBuilder = 'XP Tests (1)'
+ equal(expectedBuilder in builders.getBuilderGroup().builders, false, expectedBuilder + ' should not be among current builders');
+
+ builders.loadBuildersList('@ToT Chromium', 'interactive_ui_tests');
+ equal(expectedBuilder in builders.getBuilderGroup().builders, true, expectedBuilder + ' should be among current builders');
+});
diff --git a/Tools/TestResultServer/static-dashboards/dashboard_base.js b/Tools/TestResultServer/static-dashboards/dashboard_base.js
index cc2fa1b..694429e 100644
--- a/Tools/TestResultServer/static-dashboards/dashboard_base.js
+++ b/Tools/TestResultServer/static-dashboards/dashboard_base.js
@@ -26,116 +26,17 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-// Keys in the JSON files.
-var FAILURES_BY_TYPE_KEY = 'num_failures_by_type';
-var FAILURE_MAP_KEY = 'failure_map';
-var CHROME_REVISIONS_KEY = 'chromeRevision';
-var BLINK_REVISIONS_KEY = 'blinkRevision';
-var TIMESTAMPS_KEY = 'secondsSinceEpoch';
-var BUILD_NUMBERS_KEY = 'buildNumbers';
-var TESTS_KEY = 'tests';
-
-// Failure types.
-var PASS = 'PASS';
-var NO_DATA = 'NO DATA';
-var SKIP = 'SKIP';
-var NOTRUN = 'NOTRUN';
-
-var ONE_DAY_SECONDS = 60 * 60 * 24;
-var ONE_WEEK_SECONDS = ONE_DAY_SECONDS * 7;
-
-// These should match the testtype uploaded to test-results.appspot.com.
-// See http://test-results.appspot.com/testfile.
-var TEST_TYPES = [
- 'base_unittests',
- 'browser_tests',
- 'cacheinvalidation_unittests',
- 'compositor_unittests',
- 'content_browsertests',
- 'content_unittests',
- 'courgette_unittests',
- 'crypto_unittests',
- 'googleurl_unittests',
- 'gfx_unittests',
- 'gl_tests',
- 'gpu_tests',
- 'gpu_unittests',
- 'installer_util_unittests',
- 'interactive_ui_tests',
- 'ipc_tests',
- 'jingle_unittests',
- 'layout-tests',
- 'media_unittests',
- 'mini_installer_test',
- 'net_unittests',
- 'printing_unittests',
- 'remoting_unittests',
- 'safe_browsing_tests',
- 'sql_unittests',
- 'sync_unit_tests',
- 'sync_integration_tests',
- 'test_shell_tests',
- 'ui_unittests',
- 'unit_tests',
- 'views_unittests',
- 'webkit_unit_tests',
- 'androidwebview_instrumentation_tests',
- 'chromiumtestshell_instrumentation_tests',
- 'contentshell_instrumentation_tests',
- 'cc_unittests'
-];
-
-
-// Enum for indexing into the run-length encoded results in the JSON files.
-// 0 is where the count is length is stored. 1 is the value.
-var RLE = {
- LENGTH: 0,
- VALUE: 1
-}
-
-var _NON_FAILURE_TYPES = [PASS, NO_DATA, SKIP, NOTRUN];
-
-function isFailingResult(failureMap, failureType)
-{
- return _NON_FAILURE_TYPES.indexOf(failureMap[failureType]) == -1;
-}
-
-// Generic utility functions.
-function $(id)
-{
- return document.getElementById(id);
-}
-
-function currentBuilderGroupCategory()
-{
- switch (g_history.crossDashboardState.testType) {
- case 'gl_tests':
- case 'gpu_tests':
- return CHROMIUM_GPU_TESTS_BUILDER_GROUPS;
- case 'layout-tests':
- return LAYOUT_TESTS_BUILDER_GROUPS;
- case 'test_shell_tests':
- case 'webkit_unit_tests':
- return TEST_SHELL_TESTS_BUILDER_GROUPS;
- case 'androidwebview_instrumentation_tests':
- case 'chromiumtestshell_instrumentation_tests':
- case 'contentshell_instrumentation_tests':
- return CHROMIUM_INSTRUMENTATION_TESTS_BUILDER_GROUPS;
- case 'cc_unittests':
- return CC_UNITTEST_BUILDER_GROUPS;
- default:
- return CHROMIUM_GTESTS_BUILDER_GROUPS;
- }
-}
+// FIXME: Find somewhere better for these functions to live or restructure such that we don't need them.
function currentBuilderGroupName()
{
- return g_history.crossDashboardState.group || Object.keys(currentBuilderGroupCategory())[0];
+ return g_history.crossDashboardState.group ||
+ builders.groupNamesForTestType(g_history.crossDashboardState.testType)[0];
}
function currentBuilderGroup()
{
- return currentBuilderGroupCategory()[currentBuilderGroupName()];
+ return builders.getBuilderGroup(currentBuilderGroupName(), g_history.crossDashboardState.testType);
}
function currentBuilders()
@@ -143,49 +44,9 @@
return currentBuilderGroup().builders;
}
-function isTipOfTreeWebKitBuilder()
-{
- return currentBuilderGroup().isToTWebKit;
-}
-
+// FIXME: Index by group name, then test type, then builder so we can get rid of the hacks
+// in overview.js.
+// FIXME: Have results.js fire off the loader and then the calling code passing in a callback
+// for once everything is loaded and doesn't know about Loader at all. The calling code just
+// calls fetchResults(groupName, testType, builder, callback) or whatever.
var g_resultsByBuilder = {};
-
-// Create a new function with some of its arguements
-// pre-filled.
-// Taken from goog.partial in the Closure library.
-// @param {Function} fn A function to partially apply.
-// @param {...*} var_args Additional arguments that are partially
-// applied to fn.
-// @return {!Function} A partially-applied form of the function bind() was
-// invoked as a method of.
-function partial(fn, var_args)
-{
- var args = Array.prototype.slice.call(arguments, 1);
- return function() {
- // Prepend the bound arguments to the current arguments.
- var newArgs = Array.prototype.slice.call(arguments);
- newArgs.unshift.apply(newArgs, args);
- return fn.apply(this, newArgs);
- };
-};
-
-function getTotalTestCounts(failuresByType)
-{
- var countData;
- for (var failureType in failuresByType) {
- var failures = failuresByType[failureType];
- if (countData) {
- failures.forEach(function(count, index) {
- countData.totalTests[index] += count;
- if (failureType != PASS)
- countData.totalFailingTests[index] += count;
- });
- } else {
- countData = {
- totalTests: failures.slice(),
- totalFailingTests: failures.slice(),
- };
- }
- }
- return countData;
-}
diff --git a/Tools/TestResultServer/static-dashboards/flakiness_dashboard.html b/Tools/TestResultServer/static-dashboards/flakiness_dashboard.html
index 725bcc8..7ba6eef 100644
--- a/Tools/TestResultServer/static-dashboards/flakiness_dashboard.html
+++ b/Tools/TestResultServer/static-dashboards/flakiness_dashboard.html
@@ -30,9 +30,12 @@
<title>Chromium/WebKit Test History</title>
<link rel="stylesheet" href="flakiness_dashboard.css"></link>
<link rel="stylesheet" href="flakiness_dashboard_tests.css"></link>
-<script src="builders.js"></script>
-<script src="loader.js"></script>
+<script src="base.js"></script>
<script src="string.js"></script>
+<script src="builders.js"></script>
+<script src="builders.jsonp"></script>
+<script src="results.js"></script>
+<script src="loader.js"></script>
<script src="history.js"></script>
<script src="dashboard_base.js"></script>
<script src="ui.js"></script>
diff --git a/Tools/TestResultServer/static-dashboards/flakiness_dashboard.js b/Tools/TestResultServer/static-dashboards/flakiness_dashboard.js
index 1cc98e7..082ddf2 100644
--- a/Tools/TestResultServer/static-dashboards/flakiness_dashboard.js
+++ b/Tools/TestResultServer/static-dashboards/flakiness_dashboard.js
@@ -43,11 +43,27 @@
var CHUNK_SIZE = 25;
// FIXME: Figure out how to make this not be hard-coded.
+// Probably just include in the results.json files and get it from there.
var VIRTUAL_SUITES = {
'virtual/gpu/fast/canvas': 'fast/canvas',
- 'virtual/gpu/canvas/philip': 'canvas/philip'
+ 'virtual/gpu/canvas/philip': 'canvas/philip',
+ 'virtual/threaded/compositing/visibility': 'compositing/visibility',
+ 'virtual/threaded/compositing/webgl': 'compositing/webgl',
+ 'virtual/gpu/fast/hidpi': 'fast/hidpi',
+ 'virtual/softwarecompositing': 'compositing',
+ 'virtual/deferred/fast/images': 'fast/images',
+ 'virtual/gpu/compositedscrolling/overflow': 'compositing/overflow',
+ 'virtual/gpu/compositedscrolling/scrollbars': 'scrollbars',
};
+var ACTUAL_RESULT_SUFFIXES = ['expected.txt', 'expected.png', 'actual.txt', 'actual.png', 'diff.txt', 'diff.png', 'wdiff.html', 'crash-log.txt'];
+
+var EXPECTATIONS_ORDER = ACTUAL_RESULT_SUFFIXES.filter(function(suffix) {
+ return !string.endsWith(suffix, 'png');
+}).map(function(suffix) {
+ return suffix.split('.')[0]
+});
+
var resourceLoader;
function generatePage(historyInstance)
@@ -227,6 +243,10 @@
this._trie = {};
for (var builder in builders) {
+ if (!resultsByBuilder[builder]) {
+ console.warn("No results for builder: ", builder)
+ continue;
+ }
var testsForBuilder = resultsByBuilder[builder].tests;
for (var test in testsForBuilder)
this._addTest(test.split('/'), this._trie);
@@ -388,7 +408,7 @@
g_perBuilderFailures[builderName] = [];
return;
}
-
+
var failures = [];
var allTestsForThisBuilder = g_resultsByBuilder[builderName].tests;
@@ -406,27 +426,33 @@
if (rawTest.bugs)
resultsForTest.bugs = rawTest.bugs;
+ var failureMap = g_resultsByBuilder[builderName][results.FAILURE_MAP];
// FIXME: Switch to resultsByBuild
var times = resultsForTest.rawTimes;
var numTimesSeen = 0;
var numResultsSeen = 0;
var resultsIndex = 0;
- var currentResult;
- for (var i = 0; i < times.length; i++) {
- numTimesSeen += times[i][RLE.LENGTH];
+ var resultsMap = {}
- while (rawResults[resultsIndex] && numTimesSeen > (numResultsSeen + rawResults[resultsIndex][RLE.LENGTH])) {
- numResultsSeen += rawResults[resultsIndex][RLE.LENGTH];
+ for (var i = 0; i < times.length; i++) {
+ numTimesSeen += times[i][results.RLE.LENGTH];
+
+ while (rawResults[resultsIndex] && numTimesSeen > (numResultsSeen + rawResults[resultsIndex][results.RLE.LENGTH])) {
+ numResultsSeen += rawResults[resultsIndex][results.RLE.LENGTH];
resultsIndex++;
}
- if (rawResults && rawResults[resultsIndex])
- currentResult = rawResults[resultsIndex][RLE.VALUE];
+ if (rawResults && rawResults[resultsIndex]) {
+ var result = rawResults[resultsIndex][results.RLE.VALUE];
+ resultsMap[failureMap[result]] = true;
+ }
- resultsForTest.slowestTime = Math.max(resultsForTest.slowestTime, times[i][RLE.VALUE]);
+ resultsForTest.slowestTime = Math.max(resultsForTest.slowestTime, times[i][results.RLE.VALUE]);
}
- determineFlakiness(g_resultsByBuilder[builderName][FAILURE_MAP_KEY], resultsForTest);
+ resultsForTest.actualResults = Object.keys(resultsMap);
+
+ results.determineFlakiness(failureMap, rawResults, resultsForTest);
failures.push(resultsForTest);
if (!g_testToResultsMap[test])
@@ -437,55 +463,6 @@
g_perBuilderFailures[builderName] = failures;
}
-function determineFlakiness(failureMap, resultsForTest)
-{
- // Heuristic for determining whether expectations apply to a given test:
- // -If a test result happens < MIN_RUNS_FOR_FLAKE, then consider it a flaky
- // result and include it in the list of expected results.
- // -Otherwise, grab the first contiguous set of runs with the same result
- // for >= MIN_RUNS_FOR_FLAKE and ignore all following runs >=
- // MIN_RUNS_FOR_FLAKE.
- // This lets us rule out common cases of a test changing expectations for
- // a few runs, then being fixed or otherwise modified in a non-flaky way.
- var rawResults = resultsForTest.rawResults;
-
- // Only consider flake if it doesn't happen twice in a row.
- var MIN_RUNS_FOR_FLAKE = 2;
- var resultsMap = {}
- var numResultsSeen = 0;
- var haveSeenNonFlakeResult = false;
- var numRealResults = 0;
-
- var seenResults = {};
- for (var i = 0; i < rawResults.length; i++) {
- var numResults = rawResults[i][RLE.LENGTH];
- numResultsSeen += numResults;
-
- var result = rawResults[i][RLE.VALUE];
-
- var hasMinRuns = numResults >= MIN_RUNS_FOR_FLAKE;
- if (haveSeenNonFlakeResult && hasMinRuns)
- continue;
- else if (hasMinRuns)
- haveSeenNonFlakeResult = true;
- else if (!seenResults[result]) {
- // Only consider a short-lived result if we've seen it more than once.
- // Otherwise, we include lots of false-positives due to tests that fail
- // for a couple runs and then start passing.
- seenResults[result] = true;
- continue;
- }
-
- var expectation = failureMap[result];
- resultsMap[expectation] = true;
- numRealResults++;
- }
-
- resultsForTest.actualResults = Object.keys(resultsMap);
- resultsForTest.flips = i - 1;
- resultsForTest.isFlaky = numRealResults > 1;
-}
-
function linkHTMLToOpenWindow(url, text)
{
return '<a href="' + url + '" target="_blank">' + text + '</a>';
@@ -497,11 +474,11 @@
{
var currentIndex = 0;
var rawResults = g_resultsByBuilder[builder].tests[testName].results;
- var failureMap = g_resultsByBuilder[builder][FAILURE_MAP_KEY];
+ var failureMap = g_resultsByBuilder[builder][results.FAILURE_MAP];
for (var i = 0; i < rawResults.length; i++) {
- currentIndex += rawResults[i][RLE.LENGTH];
+ currentIndex += rawResults[i][results.RLE.LENGTH];
if (currentIndex > index)
- return isFailingResult(failureMap, rawResults[i][RLE.VALUE]);
+ return results.isFailingResult(failureMap, rawResults[i][results.RLE.VALUE]);
}
console.error('Index exceeds number of results: ' + index);
}
@@ -511,12 +488,12 @@
{
var rawResults = g_resultsByBuilder[builder].tests[testName].results;
var buildNumbers = g_resultsByBuilder[builder].buildNumbers;
- var failureMap = g_resultsByBuilder[builder][FAILURE_MAP_KEY];
+ var failureMap = g_resultsByBuilder[builder][results.FAILURE_MAP];
var index = 0;
var failures = [];
for (var i = 0; i < rawResults.length; i++) {
- var numResults = rawResults[i][RLE.LENGTH];
- if (isFailingResult(failureMap, rawResults[i][RLE.VALUE])) {
+ var numResults = rawResults[i][results.RLE.LENGTH];
+ if (results.isFailingResult(failureMap, rawResults[i][results.RLE.VALUE])) {
for (var j = 0; j < numResults; j++)
failures.push(index + j);
}
@@ -542,12 +519,12 @@
}
var buildNumber = g_resultsByBuilder[builder].buildNumbers[index];
- var master = builderMaster(builder);
+ var master = builders.master(builder);
var buildBasePath = master.logPath(builder, buildNumber);
html += '<ul><li>' + linkHTMLToOpenWindow(buildBasePath, 'Build log');
- if (g_resultsByBuilder[builder][BLINK_REVISIONS_KEY])
+ if (g_resultsByBuilder[builder][results.BLINK_REVISIONS])
html += '</li><li>Blink: ' + ui.html.blinkRevisionLink(g_resultsByBuilder[builder], index) + '</li>';
html += '</li><li>Chromium: ' + ui.html.chromiumRevisionLink(g_resultsByBuilder[builder], index) + '</li>';
@@ -573,10 +550,10 @@
function htmlForTestResults(test)
{
var html = '';
- var results = test.rawResults.concat();
+ var testResults = test.rawResults.concat();
var times = test.rawTimes.concat();
var builder = test.builder;
- var master = builderMaster(builder);
+ var master = builders.master(builder);
var buildNumbers = g_resultsByBuilder[builder].buildNumbers;
var indexToReplaceCurrentResult = -1;
@@ -585,12 +562,12 @@
var currentResultArray, currentTimeArray, innerHTML, resultString;
if (i > indexToReplaceCurrentResult) {
- currentResultArray = results.shift();
+ currentResultArray = testResults.shift();
if (currentResultArray) {
- resultString = g_resultsByBuilder[builder][FAILURE_MAP_KEY][currentResultArray[RLE.VALUE]];
- indexToReplaceCurrentResult += currentResultArray[RLE.LENGTH];
+ resultString = g_resultsByBuilder[builder][results.FAILURE_MAP][currentResultArray[results.RLE.VALUE]];
+ indexToReplaceCurrentResult += currentResultArray[results.RLE.LENGTH];
} else {
- resultString = NO_DATA;
+ resultString = results.NO_DATA;
indexToReplaceCurrentResult += buildNumbers.length;
}
}
@@ -599,8 +576,8 @@
currentTimeArray = times.shift();
var currentTime = 0;
if (currentResultArray) {
- currentTime = currentTimeArray[RLE.VALUE];
- indexToReplaceCurrentTime += currentTimeArray[RLE.LENGTH];
+ currentTime = currentTimeArray[results.RLE.VALUE];
+ indexToReplaceCurrentTime += currentTimeArray[results.RLE.LENGTH];
} else
indexToReplaceCurrentTime += buildNumbers.length;
@@ -621,7 +598,7 @@
if (testResult.expectations == 'WONTFIX')
return g_history.dashboardSpecificState.showWontFix;
- if (testResult.expectations == 'SKIP')
+ if (testResult.expectations == results.SKIP)
return g_history.dashboardSpecificState.showSkip;
if (testResult.isFlaky)
@@ -637,7 +614,7 @@
var description = encodeURIComponent('The following layout test is ' + symptom + ' on ' +
'[insert platform]\n\n' + test.test + '\n\nProbable cause:\n\n' +
'[insert probable cause]');
-
+
url = 'https://code.google.com/p/chromium/issues/entry?template=Layout%20Test%20Failure&summary=' + title + '&comment=' + description;
return '<a href="' + url + '">File new bug</a>';
}
@@ -821,8 +798,8 @@
var testResults = g_testToResultsMap[test];
if (!testResults)
- return '<div class="not-found">Test not found. Either it does not exist, is skipped or passes on all platforms.</div>';
-
+ return '<div class="not-found">Test not found. Either it does not exist, is skipped or passes on all recorded runs.</div>';
+
var html = '';
var shownBuilders = [];
for (var j = 0; j < testResults.length; j++) {
@@ -838,7 +815,7 @@
var skippedBuildersHtml = '';
if (skippedBuilders.length) {
- skippedBuildersHtml = '<div>The following builders either don\'t run this test (e.g. it\'s skipped) or all runs passed:</div>' +
+ skippedBuildersHtml = '<div>The following builders either don\'t run this test (e.g. it\'s skipped) or all recorded runs passed:</div>' +
'<div class=skipped-builder-list><div class=skipped-builder>' + skippedBuilders.join('</div><div class=skipped-builder>') + '</div></div>';
}
@@ -869,24 +846,6 @@
return html;
}
-function getExpectationsContainer(expectationsContainers, parentContainer, expectationsType)
-{
- if (!expectationsContainers[expectationsType]) {
- var container = document.createElement('div');
- container.className = 'expectations-container';
- parentContainer.appendChild(container);
- expectationsContainers[expectationsType] = container;
- }
- return expectationsContainers[expectationsType];
-}
-
-function ensureTrailingSlash(path)
-{
- if (path.match(/\/$/))
- return path;
- return path + '/';
-}
-
function maybeAddPngChecksum(expectationDiv, pngUrl)
{
// pngUrl gets served from the browser cache since we just loaded it in an
@@ -914,220 +873,134 @@
true);
}
-// Adds a specific expectation. If it's an image, it's only added on the
-// image's onload handler. If it's a text file, then a script tag is appended
-// as a hack to see if the file 404s (necessary since it's cross-domain).
-// Once all the expectations for a specific type have loaded or errored
-// (e.g. all the text results), then we go through and identify which platform
-// uses which expectation.
-//
-// @param {Object} expectationsContainers Map from expectations type to
-// container DIV.
-// @param {Element} parentContainer Container element for
-// expectationsContainer divs.
-// @param {string} platform Platform string. Empty string for non-platform
-// specific expectations.
-// @param {string} path Relative path to the expectation.
-// @param {string} base Base path for the expectation URL.
-// @param {string} opt_builder Builder whose actual results this expectation
-// points to.
-// @param {string} opt_suite "virtual suite" that the test belongs to, if any.
-function addExpectationItem(expectationsContainers, parentContainer, platform, path, base, opt_builder, opt_suite)
+function getOrCreate(className, parent)
{
- var parts = path.split('.')
- var fileExtension = parts[parts.length - 1];
- if (fileExtension == 'html')
- fileExtension = 'txt';
-
- var container = getExpectationsContainer(expectationsContainers, parentContainer, fileExtension);
- var isImage = path.match(/\.png$/);
+ var element = parent.querySelector('.' + className);
+ if (!element) {
+ element = document.createElement('div');
+ element.className = className;
+ parent.appendChild(element);
+ }
+ return element;
+}
- // FIXME: Stop using script tags once all the places we pull from support CORS.
- var platformPart = platform ? ensureTrailingSlash(platform) : '';
- var suitePart = opt_suite ? ensureTrailingSlash(opt_suite) : '';
+function handleExpectationsItemLoad(title, item, itemType, parent)
+{
+ item.className = 'expectation';
+ if (g_history.dashboardSpecificState.showLargeExpectations)
+ item.className += ' large';
- var childContainer = document.createElement('span');
- childContainer.className = 'unloaded';
+ var titleContainer = document.createElement('h3');
+ titleContainer.className = 'expectations-title';
+ titleContainer.textContent = title;
+
+ var itemContainer = document.createElement('span');
+ itemContainer.appendChild(titleContainer);
+ itemContainer.className = 'expectations-item ' + title;
+ itemContainer.appendChild(item);
+
+ // Separate text and image results into separate divs..
+ var typeContainer = getOrCreate(itemType, parent);
+
+ // Insert results in a consistent order.
+ var index = EXPECTATIONS_ORDER.indexOf(title);
+ while (index < EXPECTATIONS_ORDER.length) {
+ index++;
+ var elementAfter = typeContainer.querySelector('.' + EXPECTATIONS_ORDER[index]);
+ if (elementAfter) {
+ typeContainer.insertBefore(itemContainer, elementAfter);
+ break;
+ }
+ }
+ if (!itemContainer.parentNode)
+ typeContainer.appendChild(itemContainer);
+
+ handleFinishedLoadingExpectations(parent);
+}
+
+function addExpectationItem(expectationsContainers, parentContainer, url, opt_builder)
+{
+ // Group expectations by builder, putting test and reference files first.
+ var builder = opt_builder || "Test and reference files";
+ var container = expectationsContainers[builder];
+
+ if (!container) {
+ container = document.createElement('div');
+ container.className = 'expectations-container';
+ container.setAttribute('data-builder', builder);
+ parentContainer.appendChild(container);
+ expectationsContainers[builder] = container;
+ }
+
+ var numUnloaded = container.getAttribute('data-unloaded') || 0;
+ container.setAttribute('data-unloaded', ++numUnloaded);
+
+ var isImage = url.match(/\.png$/);
var appendExpectationsItem = function(item) {
- childContainer.appendChild(expectationsTitle(platformPart + suitePart, path, opt_builder));
- childContainer.className = 'expectations-item';
- item.className = 'expectation ' + fileExtension;
- if (g_history.dashboardSpecificState.showLargeExpectations)
- item.className += ' large';
- childContainer.appendChild(item);
+ var itemType = isImage ? 'image' : 'text';
+ handleExpectationsItemLoad(expectationsTitle(url), item, itemType, container);
+ };
+
+ var handleLoadError = function() {
handleFinishedLoadingExpectations(container);
};
- var url = base + platformPart + path;
if (isImage) {
- var dummyNode = document.createElement(isImage ? 'img' : 'script');
- dummyNode.src = url;
+ var dummyNode = document.createElement('img');
dummyNode.onload = function() {
- var item;
- if (isImage) {
- item = dummyNode;
- maybeAddPngChecksum(item, url);
- } else {
- item = document.createElement('iframe');
- item.src = url;
- }
+ var item = dummyNode;
+ maybeAddPngChecksum(item, url);
appendExpectationsItem(item);
}
- dummyNode.onerror = function() {
- childContainer.parentNode.removeChild(childContainer);
- handleFinishedLoadingExpectations(container);
- }
-
- // Append script elements now so that they load. Images load without being
- // appended to the DOM.
- if (!isImage)
- childContainer.appendChild(dummyNode);
+ dummyNode.onerror = handleLoadError;
+ dummyNode.src = url;
} else {
loader.request(url,
function(xhr) {
var item = document.createElement('pre');
- item.innerText = xhr.responseText;
+ if (string.endsWith(url, '-wdiff.html'))
+ item.innerHTML = xhr.responseText;
+ else
+ item.textContent = xhr.responseText;
appendExpectationsItem(item);
},
- function(xhr) {/* Do nothing on errors since they're expected */});
+ handleLoadError);
}
-
- container.appendChild(childContainer);
}
-
-// Identifies which expectations are used on which platform once all the
-// expectations of a given type have loaded (e.g. the container for png
-// expectations for this test had no child elements with the class
-// "unloaded").
-//
-// @param {string} container Element containing the expectations for a given
-// test and a given type (e.g. png).
function handleFinishedLoadingExpectations(container)
{
- if (container.getElementsByClassName('unloaded').length)
+ var numUnloaded = container.getAttribute('data-unloaded') - 1;
+ container.setAttribute('data-unloaded', numUnloaded);
+ if (numUnloaded)
return;
- var titles = container.getElementsByClassName('expectations-title');
- for (var platform in g_fallbacksMap) {
- var fallbacks = g_fallbacksMap[platform];
- var winner = null;
- var winningIndex = -1;
- for (var i = 0; i < titles.length; i++) {
- var title = titles[i];
-
- if (!winner && title.platform == "") {
- winner = title;
- continue;
- }
-
- var rawPlatform = title.platform && title.platform.replace('platform/', '');
- for (var j = 0; j < fallbacks.length; j++) {
- if ((winningIndex == -1 || winningIndex > j) && rawPlatform == fallbacks[j]) {
- winningIndex = j;
- winner = title;
- break;
- }
- }
- }
- if (winner)
- winner.getElementsByClassName('platforms')[0].innerHTML += '<div class=used-platform>' + platform + '</div>';
- else {
- console.log('No expectations identified for this test. This means ' +
- 'there is a logic bug in the dashboard for which expectations a ' +
- 'platform uses or src.chromium.org is giving 5XXs.');
- }
+ if (!container.firstChild) {
+ container.remove();
+ return;
}
- consolidateUsedPlatforms(container);
+ var builder = container.getAttribute('data-builder');
+ if (!builder)
+ return;
+
+ var header = document.createElement('h2');
+ header.textContent = builder;
+ container.insertBefore(header, container.firstChild);
}
-// Consolidate platforms when all sub-platforms for a given platform are represented.
-// e.g., if all of the WIN- platforms are there, replace them with just WIN.
-function consolidateUsedPlatforms(container)
+function expectationsTitle(url)
{
- var allPlatforms = Object.keys(g_fallbacksMap);
+ var matchingSuffixes = ACTUAL_RESULT_SUFFIXES.filter(function(suffix) {
+ return string.endsWith(url, suffix);
+ });
- var platformElements = container.getElementsByClassName('platforms');
- for (var i = 0, platformsLength = platformElements.length; i < platformsLength; i++) {
- var usedPlatforms = platformElements[i].getElementsByClassName('used-platform');
- if (!usedPlatforms.length)
- continue;
+ if (matchingSuffixes.length)
+ return matchingSuffixes[0].split('.')[0];
- var platforms = {};
- platforms['MAC'] = {};
- platforms['WIN'] = {};
- platforms['LINUX'] = {};
- allPlatforms.forEach(function(platform) {
- if (string.startsWith(platform, 'MAC'))
- platforms['MAC'][platform] = 1;
- else if (string.startsWith(platform, 'WIN'))
- platforms['WIN'][platform] = 1;
- else if (string.startsWith(platform, 'LINUX'))
- platforms['LINUX'][platform] = 1;
- });
-
- for (var j = 0, usedPlatformsLength = usedPlatforms.length; j < usedPlatformsLength; j++) {
- for (var platform in platforms)
- delete platforms[platform][usedPlatforms[j].textContent];
- }
-
- for (var platform in platforms) {
- if (!Object.keys(platforms[platform]).length) {
- var nodesToRemove = [];
- for (var j = 0, usedPlatformsLength = usedPlatforms.length; j < usedPlatformsLength; j++) {
- var usedPlatform = usedPlatforms[j];
- if (string.startsWith(usedPlatform.textContent, platform))
- nodesToRemove.push(usedPlatform);
- }
-
- nodesToRemove.forEach(function(element) { element.parentNode.removeChild(element); });
- platformElements[i].insertAdjacentHTML('afterBegin', '<div class=used-platform>' + platform + '</div>');
- }
- }
- }
-}
-
-function addExpectations(expectationsContainers, container, base,
- platform, text, png, reftest_html_file, reftest_mismatch_html_file, suite)
-{
- var builder = '';
- addExpectationItem(expectationsContainers, container, platform, text, base, builder, suite);
- addExpectationItem(expectationsContainers, container, platform, png, base, builder, suite);
- addExpectationItem(expectationsContainers, container, platform, reftest_html_file, base, builder, suite);
- addExpectationItem(expectationsContainers, container, platform, reftest_mismatch_html_file, base, builder, suite);
-}
-
-function expectationsTitle(platform, path, builder)
-{
- var header = document.createElement('h3');
- header.className = 'expectations-title';
-
- var innerHTML;
- if (builder) {
- var resultsType;
- if (string.endsWith(path, '-crash-log.txt'))
- resultsType = 'STACKTRACE';
- else if (string.endsWith(path, '-actual.txt') || string.endsWith(path, '-actual.png'))
- resultsType = 'ACTUAL RESULTS';
- else if (string.endsWith(path, '-wdiff.html'))
- resultsType = 'WDIFF';
- else
- resultsType = 'DIFF';
-
- innerHTML = resultsType + ': ' + builder;
- } else if (platform === "") {
- var parts = path.split('/');
- innerHTML = parts[parts.length - 1];
- } else
- innerHTML = platform || path;
-
- header.innerHTML = '<div class=title>' + innerHTML +
- '</div><div style="float:left"> </div>' +
- '<div class=platforms style="float:right"></div>';
- header.platform = platform;
- return header;
+ var parts = url.split('/');
+ return parts[parts.length - 1];
}
function loadExpectations(expectationsContainer)
@@ -1136,12 +1009,12 @@
if (g_history.isLayoutTestResults())
loadExpectationsLayoutTests(test, expectationsContainer);
else {
- var results = g_testToResultsMap[test];
- for (var i = 0; i < results.length; i++)
+ var testResults = g_testToResultsMap[test];
+ for (var i = 0; i < testResults.length; i++)
if (g_history.isGPUTestResults())
- loadGPUResultsForBuilder(results[i].builder, test, expectationsContainer);
+ loadGPUResultsForBuilder(testResults[i].builder, test, expectationsContainer);
else
- loadNonWebKitResultsForBuilder(results[i].builder, test, expectationsContainer);
+ loadNonWebKitResultsForBuilder(testResults[i].builder, test, expectationsContainer);
}
}
@@ -1160,7 +1033,7 @@
var failureIndex = indexesForFailures(builder, test)[0];
var buildNumber = g_resultsByBuilder[builder].buildNumbers[failureIndex];
- var pathToLog = builderMaster(builder).logPath(builder, buildNumber) + pathToFailureLog(test);
+ var pathToLog = builders.master(builder).logPath(builder, buildNumber) + pathToFailureLog(test);
var chromeRevision = g_resultsByBuilder[builder].chromeRevision[failureIndex];
var resultsUrl = GPU_RESULTS_BASE_PATH + gpuResultsPath(chromeRevision, builder);
@@ -1182,7 +1055,7 @@
// FIXME: This doesn't seem to work anymore. Did the paths change?
// Once that's resolved, see if we need to try each GTEST_MODIFIERS prefix as well.
var buildNumber = g_resultsByBuilder[builder].buildNumbers[failureIndexes[i]];
- var pathToLog = builderMaster(builder).logPath(builder, buildNumber) + pathToFailureLog(test);
+ var pathToLog = builders.master(builder).logPath(builder, buildNumber) + pathToFailureLog(test);
appendNonWebKitResults(container, pathToLog, 'non-webkit-results');
}
}
@@ -1231,51 +1104,35 @@
return base ? test.replace(suite, base) : test;
}
-function loadBaselinesForTest(expectationsContainers, expectationsContainer, test) {
+function loadTestAndReferenceFiles(expectationsContainers, expectationsContainer, test) {
var testWithoutSuffix = test.substring(0, test.lastIndexOf('.'));
- var text = testWithoutSuffix + "-expected.txt";
- var png = testWithoutSuffix + "-expected.png";
var reftest_html_file = testWithoutSuffix + "-expected.html";
var reftest_mismatch_html_file = testWithoutSuffix + "-expected-mismatch.html";
+
var suite = lookupVirtualTestSuite(test);
-
- if (!suite)
- addExpectationItem(expectationsContainers, expectationsContainer, null, test, TEST_URL_BASE_PATH_FOR_XHR);
-
- addExpectations(expectationsContainers, expectationsContainer,
- TEST_URL_BASE_PATH_FOR_XHR, '', text, png, reftest_html_file, reftest_mismatch_html_file, suite);
-
- var fallbacks = allFallbacks();
- for (var i = 0; i < fallbacks.length; i++) {
- var fallback = 'platform/' + fallbacks[i];
- addExpectations(expectationsContainers, expectationsContainer, TEST_URL_BASE_PATH_FOR_XHR, fallback, text, png,
- reftest_html_file, reftest_mismatch_html_file, suite);
+ if (suite) {
+ loadTestAndReferenceFiles(expectationsContainers, expectationsContainer, baseTest(test, suite));
+ return;
}
- if (suite)
- loadBaselinesForTest(expectationsContainers, expectationsContainer, baseTest(test, suite));
+ addExpectationItem(expectationsContainers, expectationsContainer, TEST_URL_BASE_PATH_FOR_XHR + test);
+ addExpectationItem(expectationsContainers, expectationsContainer, TEST_URL_BASE_PATH_FOR_XHR + reftest_html_file);
+ addExpectationItem(expectationsContainers, expectationsContainer, TEST_URL_BASE_PATH_FOR_XHR + reftest_mismatch_html_file);
}
function loadExpectationsLayoutTests(test, expectationsContainer)
{
// Map from file extension to container div for expectations of that type.
var expectationsContainers = {};
+ loadTestAndReferenceFiles(expectationsContainers, expectationsContainer, test);
- var revisionContainer = document.createElement('div');
- revisionContainer.textContent = "Showing results for: "
- expectationsContainer.appendChild(revisionContainer);
- loadBaselinesForTest(expectationsContainers, expectationsContainer, test);
-
var testWithoutSuffix = test.substring(0, test.lastIndexOf('.'));
- var actualResultSuffixes = ['-actual.txt', '-actual.png', '-crash-log.txt', '-diff.txt', '-wdiff.html', '-diff.png'];
for (var builder in currentBuilders()) {
var actualResultsBase = TEST_RESULTS_BASE_PATH + currentBuilders()[builder] + '/results/layout-test-results/';
-
- for (var i = 0; i < actualResultSuffixes.length; i++) {
- addExpectationItem(expectationsContainers, expectationsContainer, null,
- testWithoutSuffix + actualResultSuffixes[i], actualResultsBase, builder);
- }
+ ACTUAL_RESULT_SUFFIXES.forEach(function(suffix) {{
+ addExpectationItem(expectationsContainers, expectationsContainer, actualResultsBase + testWithoutSuffix + '-' + suffix, builder);
+ }})
}
// Add a clearing element so floated elements don't bleed out of their
@@ -1285,33 +1142,6 @@
expectationsContainer.appendChild(br);
}
-var g_allFallbacks;
-
-// Returns the reverse sorted, deduped list of all platform fallback
-// directories.
-function allFallbacks()
-{
- if (!g_allFallbacks) {
- var holder = {};
- for (var platform in g_fallbacksMap) {
- var fallbacks = g_fallbacksMap[platform];
- for (var i = 0; i < fallbacks.length; i++)
- holder[fallbacks[i]] = 1;
- }
-
- g_allFallbacks = [];
- for (var fallback in holder)
- g_allFallbacks.push(fallback);
-
- g_allFallbacks.sort(function(a, b) {
- if (a == b)
- return 0;
- return a < b;
- });
- }
- return g_allFallbacks;
-}
-
function appendExpectations()
{
var expectations = g_history.dashboardSpecificState.showExpectations ? document.getElementsByClassName('expectations') : [];
@@ -1341,8 +1171,10 @@
performChunkedAction(tests, function(chunk) {
appendHTML(htmlForIndividualTests(chunk));
}, appendExpectations, 500);
- if (g_history.dashboardSpecificState.showChrome)
+ if (g_history.dashboardSpecificState.showChrome) {
$('tests-input').value = g_history.dashboardSpecificState.tests;
+ $('result-input').value = g_history.dashboardSpecificState.result;
+ }
}
function performChunkedAction(tests, handleChunk, onComplete, timeout, opt_index) {
@@ -1423,14 +1255,14 @@
{
processTestRunsForBuilder(builderName);
- var results = g_perBuilderFailures[builderName].filter(shouldShowTest);
- sortTests(results, g_history.dashboardSpecificState.sortColumn, g_history.dashboardSpecificState.sortOrder);
+ var filteredResults = g_perBuilderFailures[builderName].filter(shouldShowTest);
+ sortTests(filteredResults, g_history.dashboardSpecificState.sortColumn, g_history.dashboardSpecificState.sortOrder);
var testsHTML = '';
- if (results.length) {
+ if (filteredResults.length) {
var tableRowsHTML = '';
- for (var i = 0; i < results.length; i++)
- tableRowsHTML += htmlForSingleTestRow(results[i])
+ for (var i = 0; i < filteredResults.length; i++)
+ tableRowsHTML += htmlForSingleTestRow(filteredResults[i])
testsHTML = htmlForTestTable(tableRowsHTML);
} else {
if (g_history.isLayoutTestResults())
@@ -1478,19 +1310,6 @@
legend.parentNode.removeChild(legend);
}
-var g_fallbacksMap = {};
-g_fallbacksMap['WIN-XP'] = ['chromium-win-xp', 'chromium-win', 'chromium'];
-g_fallbacksMap['WIN-7'] = ['chromium-win', 'chromium'];
-g_fallbacksMap['MAC-SNOWLEOPARD'] = ['chromium-mac-snowleopard', 'chromium-mac', 'chromium'];
-g_fallbacksMap['MAC-LION'] = ['chromium-mac', 'chromium'];
-g_fallbacksMap['LINUX-32'] = ['chromium-linux-x86', 'chromium-linux', 'chromium-win', 'chromium'];
-g_fallbacksMap['LINUX-64'] = ['chromium-linux', 'chromium-win', 'chromium'];
-
-function htmlForFallbackHelp(fallbacks)
-{
- return '<ol class=fallback-list><li>' + fallbacks.join('</li><li>') + '</li></ol>';
-}
-
function showLegend()
{
var legend = $('legend');
@@ -1505,7 +1324,7 @@
// Just grab the first failureMap. Technically, different builders can have different maps if they
// haven't all cycled after the map was changed, but meh.
- var failureMap = g_resultsByBuilder[Object.keys(g_resultsByBuilder)[0]][FAILURE_MAP_KEY];
+ var failureMap = g_resultsByBuilder[Object.keys(g_resultsByBuilder)[0]][results.FAILURE_MAP];
for (var expectation in failureMap) {
var failureString = failureMap[expectation];
html += '<div class=' + classNameForFailureString(failureString) + '>' + failureString + '</div>';
@@ -1513,10 +1332,7 @@
if (g_history.isLayoutTestResults()) {
html += '</div><br style="clear:both">' +
- '</div><h3>Test expectations fallback order.</h3>';
-
- for (var platform in g_fallbacksMap)
- html += '<div class=fallback-header>' + platform + '</div>' + htmlForFallbackHelp(g_fallbacksMap[platform]);
+ '</div>';
html += '<div>RELEASE TIMEOUTS:</div>' +
htmlForSlowTimes(RELEASE_TIMEOUT) +
diff --git a/Tools/TestResultServer/static-dashboards/flakiness_dashboard_tests.css b/Tools/TestResultServer/static-dashboards/flakiness_dashboard_tests.css
index edabb5a..91097d2 100644
--- a/Tools/TestResultServer/static-dashboards/flakiness_dashboard_tests.css
+++ b/Tools/TestResultServer/static-dashboards/flakiness_dashboard_tests.css
@@ -180,7 +180,8 @@
padding-left: 20px;
}
.expectations-container {
- clear: both;
+ overflow: hidden;
+ margin-bottom: 10px;
}
.expectations-item {
float: left;
@@ -195,7 +196,6 @@
width: 400px;
height: 300px;
border: 0;
- border-top: 1px solid grey;
overflow: auto;
display: -webkit-box;
display: -moz-box;
@@ -223,13 +223,8 @@
margin: 0 5px;
}
.expectations-title {
- /* Hack to make a containing block for absolute positioned elements. */
- position: relative;
- clear: both;
-}
-.title {
- /* Position absolutely so the container does not grow to contain this. */
- position: absolute;
+ outline: 1px solid grey;
+ text-align: center;
}
.platforms {
position: absolute;
diff --git a/Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js b/Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js
index 1cef5fb..ac4d334 100644
--- a/Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js
+++ b/Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js
@@ -42,16 +42,21 @@
for (var key in history.DEFAULT_CROSS_DASHBOARD_STATE_VALUES)
historyInstance.crossDashboardState[key] = history.DEFAULT_CROSS_DASHBOARD_STATE_VALUES[key];
- LOAD_BUILDBOT_DATA([{
- name: 'ChromiumWebkit',
- url: 'dummyurl',
- tests: {'layout-tests': {'builders': ['WebKit Linux', 'WebKit Linux (dbg)', 'WebKit Mac10.7', 'WebKit Win', 'WebKit Win (dbg)']}}
- }]);
-
- for (var group in LAYOUT_TESTS_BUILDER_GROUPS)
- LAYOUT_TESTS_BUILDER_GROUPS[group] = null;
+ LOAD_BUILDBOT_DATA({
+ 'masters': [{
+ name: 'ChromiumWebkit',
+ url: 'dummyurl',
+ tests: {'layout-tests': {'builders': ['WebKit Linux', 'WebKit Linux (dbg)', 'WebKit Linux (deps)', 'WebKit Mac10.7', 'WebKit Win', 'WebKit Win (dbg)']}},
+ groups: ['@ToT Blink', '@ToT Chromium'],
+ },{
+ name :'ChromiumWin',
+ url: 'dummyurl2',
+ tests: {'interactive_ui_tests': {'builders': ['XP Tests (1)', 'Win7 Tests (1)']}},
+ groups: ['@ToT Chromium'],
+ }],
+ });
- return historyInstance;
+ return historyInstance;
}
var FAILURE_MAP = {"A": "AUDIO", "C": "CRASH", "F": "TEXT", "I": "IMAGE", "O": "MISSING",
@@ -77,17 +82,18 @@
});
test('htmlForTestTypeSwitcherGroup', 6, function() {
+ resetGlobals();
var historyInstance = new history.History(flakinessConfig);
// FIXME(jparent): Remove this once global isn't used.
g_history = historyInstance;
var container = document.createElement('div');
- historyInstance.crossDashboardState.testType = 'ui_tests';
+ historyInstance.crossDashboardState.testType = 'interactive_ui_tests';
container.innerHTML = ui.html.testTypeSwitcher(true);
var selects = container.querySelectorAll('select');
equal(selects.length, 2);
var group = selects[1];
equal(group.parentNode.textContent.indexOf('Group:'), 0);
- equal(group.children.length, 3);
+ equal(group.children.length, 1);
historyInstance.crossDashboardState.testType = 'layout-tests';
container.innerHTML = ui.html.testTypeSwitcher(true);
@@ -95,20 +101,20 @@
equal(selects.length, 2);
var group = selects[1];
equal(group.parentNode.textContent.indexOf('Group:'), 0);
- equal(group.children.length, 3);
+ equal(group.children.length, 2);
});
test('htmlForIndividualTestOnAllBuilders', 1, function() {
resetGlobals();
- loadBuildersList('@ToT - chromium.org', 'layout-tests');
- equal(htmlForIndividualTestOnAllBuilders('foo/nonexistant.html'), '<div class="not-found">Test not found. Either it does not exist, is skipped or passes on all platforms.</div>');
+ builders.loadBuildersList('@ToT Blink', 'layout-tests');
+ equal(htmlForIndividualTestOnAllBuilders('foo/nonexistant.html'), '<div class="not-found">Test not found. Either it does not exist, is skipped or passes on all recorded runs.</div>');
});
test('htmlForIndividualTestOnAllBuildersWithResultsLinksNonexistant', 1, function() {
resetGlobals();
- loadBuildersList('@ToT - chromium.org', 'layout-tests');
+ builders.loadBuildersList('@ToT Blink', 'layout-tests');
equal(htmlForIndividualTestOnAllBuildersWithResultsLinks('foo/nonexistant.html'),
- '<div class="not-found">Test not found. Either it does not exist, is skipped or passes on all platforms.</div>' +
+ '<div class="not-found">Test not found. Either it does not exist, is skipped or passes on all recorded runs.</div>' +
'<div class=expectations test=foo/nonexistant.html>' +
'<div>' +
'<span class=link onclick="g_history.setQueryParameter(\'showExpectations\', true)">Show results</span> | ' +
@@ -120,7 +126,7 @@
test('htmlForIndividualTestOnAllBuildersWithResultsLinks', 1, function() {
resetGlobals();
- loadBuildersList('@ToT - chromium.org', 'layout-tests');
+ builders.loadBuildersList('@ToT Blink', 'layout-tests');
var builderName = 'WebKit Linux';
g_resultsByBuilder[builderName] = {buildNumbers: [2, 1], blinkRevision: [1234, 1233], failure_map: FAILURE_MAP};
@@ -149,7 +155,7 @@
'<td title="NO DATA. Click for more info." class="results NODATA" onclick=\'showPopupForBuild(event, "WebKit Linux",1,"dummytest.html")\'> ' +
'</tbody>' +
'</table>' +
- '<div>The following builders either don\'t run this test (e.g. it\'s skipped) or all runs passed:</div>' +
+ '<div>The following builders either don\'t run this test (e.g. it\'s skipped) or all recorded runs passed:</div>' +
'<div class=skipped-builder-list>' +
'<div class=skipped-builder>WebKit Linux (dbg)</div><div class=skipped-builder>WebKit Mac10.7</div><div class=skipped-builder>WebKit Win</div><div class=skipped-builder>WebKit Win (dbg)</div>' +
'</div>' +
@@ -162,7 +168,7 @@
test('htmlForIndividualTests', 4, function() {
var historyInstance = resetGlobals();
- loadBuildersList('@ToT - chromium.org', 'layout-tests');
+ builders.loadBuildersList('@ToT Blink', 'layout-tests');
var test1 = 'foo/nonexistant.html';
var test2 = 'bar/nonexistant.html';
@@ -171,7 +177,7 @@
var tests = [test1, test2];
equal(htmlForIndividualTests(tests),
'<h2><a href="' + TEST_URL_BASE_PATH_FOR_BROWSING + 'foo/nonexistant.html" target="_blank">foo/nonexistant.html</a></h2>' +
- htmlForIndividualTestOnAllBuilders(test1) +
+ htmlForIndividualTestOnAllBuilders(test1) +
'<div class=expectations test=foo/nonexistant.html>' +
'<div><span class=link onclick=\"g_history.setQueryParameter(\'showExpectations\', true)\">Show results</span> | ' +
'<span class=link onclick=\"g_history.setQueryParameter(\'showLargeExpectations\', true)\">Show large thumbnails</span> | ' +
@@ -219,7 +225,6 @@
test('htmlForSingleTestRow', 1, function() {
var historyInstance = resetGlobals();
var builder = 'dummyBuilder';
- BUILDER_TO_MASTER[builder] = CHROMIUM_WEBKIT_BUILDER_MASTER;
var test = createResultsObjectForTest('foo/exists.html', builder);
historyInstance.dashboardSpecificState.showNonFlaky = true;
g_resultsByBuilder[builder] = {buildNumbers: [2, 1], blinkRevision: [1234, 1233], failure_map: FAILURE_MAP};
@@ -245,49 +250,6 @@
equal(baseTest('virtual/gpu/fast/canvas/foo.html', 'virtual/gpu/fast/canvas'), 'fast/canvas/foo.html');
});
-// FIXME: Create builders_tests.js and move this there.
-
-test('isChromiumWebkitTipOfTreeTestRunner', 1, function() {
- var builderList = ["WebKit Linux", "WebKit Linux (dbg)", "WebKit Linux 32", "WebKit Mac10.6", "WebKit Mac10.6 (dbg)",
- "WebKit Mac10.6 (deps)", "WebKit Mac10.7", "WebKit Win", "WebKit Win (dbg)(1)", "WebKit Win (dbg)(2)", "WebKit Win (deps)",
- "WebKit Win7", "Linux (Content Shell)"];
- var expectedBuilders = ["WebKit Linux", "WebKit Linux (dbg)", "WebKit Linux 32", "WebKit Mac10.6",
- "WebKit Mac10.6 (dbg)", "WebKit Mac10.7", "WebKit Win", "WebKit Win (dbg)(1)", "WebKit Win (dbg)(2)", "WebKit Win7"];
- deepEqual(builderList.filter(isChromiumWebkitTipOfTreeTestRunner), expectedBuilders);
-});
-
-test('isChromiumWebkitDepsTestRunner', 1, function() {
- var builderList = ["Chrome Frame Tests", "GPU Linux (NVIDIA)", "GPU Linux (dbg) (NVIDIA)", "GPU Mac", "GPU Mac (dbg)", "GPU Win7 (NVIDIA)", "GPU Win7 (dbg) (NVIDIA)", "Linux Perf", "Linux Tests",
- "Linux Valgrind", "Mac Builder (dbg)", "Mac10.6 Perf", "Mac10.6 Tests", "Vista Perf", "Vista Tests", "WebKit Linux", "WebKit Linux ASAN", "WebKit Linux (dbg)", "WebKit Linux (deps)", "WebKit Linux 32",
- "WebKit Mac10.6", "WebKit Mac10.6 (dbg)", "WebKit Mac10.6 (deps)", "WebKit Mac10.7", "WebKit Win", "WebKit Win (dbg)(1)", "WebKit Win (dbg)(2)", "WebKit Win (deps)",
- "WebKit Win7", "Win (dbg)", "Win Builder"];
- var expectedBuilders = ["WebKit Linux (deps)", "WebKit Mac10.6 (deps)", "WebKit Win (deps)"];
- deepEqual(builderList.filter(isChromiumWebkitDepsTestRunner), expectedBuilders);
-});
-
-test('builderGroupIsToTWebKitAttribute', 2, function() {
- var dummyMaster = new builders.BuilderMaster('Chromium', 'dummyurl', {'layout-tests': {'builders': ['WebKit Linux', 'WebKit Linux (dbg)', 'WebKit Mac10.7', 'WebKit Win']}});
- var testBuilderGroups = {
- '@ToT - dummy.org': new BuilderGroup(BuilderGroup.TOT_WEBKIT),
- '@DEPS - dummy.org': new BuilderGroup(BuilderGroup.DEPS_WEBKIT),
- }
-
- var testJSONData = "{ \"Dummy Builder 1\": null, \"Dummy Builder 2\": null }";
- requestBuilderList(testBuilderGroups, 'ChromiumWebkit', '@ToT - dummy.org', testBuilderGroups['@ToT - dummy.org'], 'layout-tests');
- equal(testBuilderGroups['@ToT - dummy.org'].isToTWebKit, true);
- requestBuilderList(testBuilderGroups, 'ChromiumWebkit', '@DEPS - dummy.org', testBuilderGroups['@DEPS - dummy.org'], 'layout-tests');
- equal(testBuilderGroups['@DEPS - dummy.org'].isToTWebKit, false);
-});
-
-test('requestBuilderListAddsBuilderGroupEntry', 1, function() {
- var testBuilderGroups = { '@ToT - dummy.org': null };
- var builderGroup = new BuilderGroup(BuilderGroup.TOT_WEBKIT);
- var groupName = '@ToT - dummy.org';
- requestBuilderList(testBuilderGroups, 'ChromiumWebkit', groupName, builderGroup, 'layout-tests');
-
- equal(testBuilderGroups['@ToT - dummy.org'], builderGroup);
-})
-
test('sortTests', 4, function() {
var test1 = createResultsObjectForTest('foo/test1.html', 'dummyBuilder');
var test2 = createResultsObjectForTest('foo/test2.html', 'dummyBuilder');
@@ -392,14 +354,14 @@
test('changeTestTypeInvalidatesGroup', 1, function() {
var historyInstance = resetGlobals();
- var originalGroup = '@ToT - chromium.org';
+ var originalGroup = '@ToT Blink';
var originalTestType = 'layout-tests';
- loadBuildersList(originalGroup, originalTestType);
+ builders.loadBuildersList(originalGroup, originalTestType);
historyInstance.crossDashboardState.group = originalGroup;
historyInstance.crossDashboardState.testType = originalTestType;
historyInstance.invalidateQueryParameters({'testType': 'ui_tests'});
- notEqual(historyInstance.crossDashboardState.group, originalGroup, "group should have been invalidated");
+ notEqual(historyInstance.crossDashboardState.group, originalGroup, "group should have been invalidated");
});
test('shouldShowTest', 9, function() {
diff --git a/Tools/TestResultServer/static-dashboards/history.js b/Tools/TestResultServer/static-dashboards/history.js
index f4814a2..622b76d 100644
--- a/Tools/TestResultServer/static-dashboards/history.js
+++ b/Tools/TestResultServer/static-dashboards/history.js
@@ -36,14 +36,17 @@
showAllRuns: false,
testType: 'layout-tests',
useTestData: false,
-}
+}
history.validateParameter = function(state, key, value, validateFn)
{
- if (validateFn())
+ if (validateFn()) {
state[key] = value;
- else
+ return true;
+ } else {
console.log(key + ' value is not valid: ' + value);
+ return false;
+ }
}
history.isTreeMap = function()
@@ -71,13 +74,27 @@
// FIXME: remove support for mapping from the master parameter to the group
// one once the waterfall starts to pass in the builder name instead.
if (paramsMap.master) {
- paramsMap.group = LEGACY_BUILDER_MASTERS_TO_GROUPS[paramsMap.master];
- if (!paramsMap.group)
- console.log('ERROR: Unknown master name: ' + paramsMap.master);
- window.location.hash = window.location.hash.replace('master=' + paramsMap.master, 'group=' + paramsMap.group);
- delete paramsMap.master;
+ var errors = new ui.Errors();
+ if (paramsMap.master == 'TryServer')
+ errors.addError('ERROR: You got here from the trybot waterfall. The try bots do not record data in the flakiness dashboard. Showing results for the regular waterfall.');
+ else if (!builders.masters[paramsMap.master])
+ errors.addError('ERROR: Unknown master name: ' + paramsMap.master);
+
+ if (errors.hasErrors()) {
+ errors.show();
+ window.location.hash = window.location.hash.replace('master=' + paramsMap.master, '');
+ } else {
+ paramsMap.group = builders.masters[paramsMap.master].groups[0];
+ window.location.hash = window.location.hash.replace('master=' + paramsMap.master, 'group=' + encodeURIComponent(paramsMap.group));
+ delete paramsMap.master;
+ }
}
+ // FIXME: Find a better way to do this. For layout-tests, we want the default group to be
+ // the ToT blink group. For other test types, we want it to be the Deps group.
+ if (!paramsMap.group && (!paramsMap.testType || paramsMap.testType == 'layout-tests'))
+ paramsMap.group = builders.groupNamesForTestType('layout-tests')[1];
+
return paramsMap;
}
@@ -120,7 +137,7 @@
}
}
-var RELOAD_REQUIRING_PARAMETERS = ['showAllRuns', 'group', 'testType'];
+history.reloadRequiringParameters = ['showAllRuns', 'group', 'testType'];
var CROSS_DB_INVALIDATING_PARAMETERS = {
'testType': 'group'
@@ -163,11 +180,11 @@
var oldDashboardSpecificState = this.dashboardSpecificState;
this.parseCrossDashboardParameters();
-
+
// Some parameters require loading different JSON files when the value changes. Do a reload.
if (Object.keys(oldCrossDashboardState).length) {
for (var key in this.crossDashboardState) {
- if (oldCrossDashboardState[key] != this.crossDashboardState[key] && RELOAD_REQUIRING_PARAMETERS.indexOf(key) != -1) {
+ if (oldCrossDashboardState[key] != this.crossDashboardState[key] && history.reloadRequiringParameters.indexOf(key) != -1) {
window.location.reload();
return false;
}
@@ -210,16 +227,13 @@
switch(key) {
case 'testType':
history.validateParameter(this.crossDashboardState, key, value,
- function() { return TEST_TYPES.indexOf(value) != -1; });
+ function() { return builders.testTypes.indexOf(value) != -1; });
return true;
case 'group':
history.validateParameter(this.crossDashboardState, key, value,
function() {
- return value in LAYOUT_TESTS_BUILDER_GROUPS ||
- value in CHROMIUM_GPU_TESTS_BUILDER_GROUPS ||
- value in CHROMIUM_INSTRUMENTATION_TESTS_BUILDER_GROUPS ||
- value in CHROMIUM_GTESTS_BUILDER_GROUPS;
+ return builders.getAllGroupNames().indexOf(value) != -1;
});
return true;
@@ -235,7 +249,7 @@
queryParameterValue: function(parameter)
{
return this.dashboardSpecificState[parameter] || this.crossDashboardState[parameter];
- },
+ },
// Sets the page state. Takes varargs of key, value pairs.
setQueryParameter: function(var_args)
{
@@ -280,7 +294,7 @@
state.push(key + '=' + encodeURIComponent(value));
}
return state.join('&');
- },
+ },
_permaLinkURLHash: function(opt_state)
{
var state = opt_state || this._combinedDashboardState();
@@ -291,7 +305,7 @@
var combinedState = Object.create(this.dashboardSpecificState);
for (var key in this.crossDashboardState)
combinedState[key] = this.crossDashboardState[key];
- return combinedState;
+ return combinedState;
},
_defaultValue: function(key)
{
@@ -307,4 +321,4 @@
}
-})();
\ No newline at end of file
+})();
diff --git a/Tools/TestResultServer/static-dashboards/history_unittests.js b/Tools/TestResultServer/static-dashboards/history_unittests.js
index 4594a61..569841d 100644
--- a/Tools/TestResultServer/static-dashboards/history_unittests.js
+++ b/Tools/TestResultServer/static-dashboards/history_unittests.js
@@ -30,7 +30,7 @@
test('queryHashAsMap', 2, function() {
equal(window.location.hash, '#useTestData=true');
- deepEqual(history.queryHashAsMap(), {useTestData: 'true'});
+ deepEqual(history.queryHashAsMap(), {useTestData: 'true', "group": "@ToT Blink"});
});
test('diffStates', 5, function() {
@@ -61,6 +61,7 @@
var expectedParameters = {};
for (var key in history.DEFAULT_CROSS_DASHBOARD_STATE_VALUES)
expectedParameters[key] = history.DEFAULT_CROSS_DASHBOARD_STATE_VALUES[key];
+ expectedParameters.group = "@ToT Blink";
expectedParameters.useTestData = true;
deepEqual(historyInstance.crossDashboardState, expectedParameters);
diff --git a/Tools/TestResultServer/static-dashboards/loader.js b/Tools/TestResultServer/static-dashboards/loader.js
index 9fd00b8..198a2c0 100644
--- a/Tools/TestResultServer/static-dashboards/loader.js
+++ b/Tools/TestResultServer/static-dashboards/loader.js
@@ -35,7 +35,7 @@
function pathToBuilderResultsFile(builderName) {
return TEST_RESULTS_SERVER + 'testfile?builder=' + builderName +
- '&master=' + builderMaster(builderName).name +
+ '&master=' + builders.master(builderName).name +
'&testtype=' + g_history.crossDashboardState.testType + '&name=';
}
@@ -95,7 +95,7 @@
{
this._loadNext();
},
- showErrors: function()
+ showErrors: function()
{
this._errors.show();
},
@@ -111,13 +111,17 @@
},
_loadBuildersList: function()
{
- loadBuildersList(currentBuilderGroupName(), this._history.crossDashboardState.testType);
+ builders.loadBuildersList(currentBuilderGroupName(), this._history.crossDashboardState.testType);
this._loadNext();
},
_loadResultsFiles: function()
{
- for (var builderName in currentBuilders())
- this._loadResultsFileForBuilder(builderName);
+ var builderNames = Object.keys(currentBuilders());
+ if (builderNames.length)
+ builderNames.forEach(this._loadResultsFileForBuilder.bind(this));
+ else
+ this._loadNext();
+
},
_loadResultsFileForBuilder: function(builderName)
{
@@ -163,6 +167,12 @@
{
var builds = JSON.parse(fileData);
+ if (builderName == 'version' || builderName == 'failure_map')
+ return;
+
+ var ONE_DAY_SECONDS = 60 * 60 * 24;
+ var ONE_WEEK_SECONDS = ONE_DAY_SECONDS * 7;
+
// If a test suite stops being run on a given builder, we don't want to show it.
// Assume any builder without a run in two weeks for a given test suite isn't
// running that suite anymore.
@@ -174,7 +184,7 @@
if ((Date.now() / 1000) - lastRunSeconds > ONE_DAY_SECONDS)
this._staleBuilders.push(builderName);
- builds[builderName][TESTS_KEY] = loader.Loader._flattenTrie(builds[builderName][TESTS_KEY]);
+ builds[builderName][results.TESTS] = loader.Loader._flattenTrie(builds[builderName][results.TESTS]);
g_resultsByBuilder[builderName] = builds[builderName];
},
_handleResultsFileLoadError: function(builderName)
@@ -198,8 +208,8 @@
},
_haveResultsFilesLoaded: function()
{
- for (var builder in currentBuilders()) {
- if (!g_resultsByBuilder[builder])
+ for (var builderName in currentBuilders()) {
+ if (!g_resultsByBuilder[builderName] && this._buildersThatFailedToLoad.indexOf(builderName) < 0)
return false;
}
return true;
diff --git a/Tools/TestResultServer/static-dashboards/loader_unittests.js b/Tools/TestResultServer/static-dashboards/loader_unittests.js
index cfeccd6..fa7e8dc0 100644
--- a/Tools/TestResultServer/static-dashboards/loader_unittests.js
+++ b/Tools/TestResultServer/static-dashboards/loader_unittests.js
@@ -70,8 +70,8 @@
successCallback({responseText: '{"version":4,"' + builderName + '":{"failure_map":{"A":"AUDIO","C":"CRASH","F":"TEXT"},"secondsSinceEpoch":[' + Date.now() + '],"tests":{}}}'});
}
- loadBuildersList('@ToT - chromium.org', 'layout-tests');
-
+ builders.loadBuildersList('@ToT Blink', 'layout-tests');
+
try {
resourceLoader._loadResultsFiles();
} finally {
@@ -81,8 +81,8 @@
test('results file failing to load', 2, function() {
resetGlobals();
- loadBuildersList('@ToT - chromium.org', 'layout-tests');
-
+ builders.loadBuildersList('@ToT Blink', 'layout-tests');
+
var resourceLoader = new loader.Loader();
var resourceLoadCount = 0;
resourceLoader._handleResourceLoad = function() {
@@ -104,11 +104,11 @@
test('Default builder gets set.', 3, function() {
resetGlobals();
- loadBuildersList('@ToT - chromium.org', 'layout-tests');
-
+ builders.loadBuildersList('@ToT Blink', 'layout-tests');
+
var defaultBuilder = currentBuilderGroup().defaultBuilder();
ok(defaultBuilder, "Default builder should exist.");
-
+
// Simulate error loading the default builder data, then make sure
// a new defaultBuilder is set, and isn't the now invalid one.
var resourceLoader = new loader.Loader();
diff --git a/Tools/TestResultServer/static-dashboards/overview.html b/Tools/TestResultServer/static-dashboards/overview.html
new file mode 100644
index 0000000..0bf8d1e
--- /dev/null
+++ b/Tools/TestResultServer/static-dashboards/overview.html
@@ -0,0 +1,69 @@
+<!-- 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.
+-->
+<!DOCTYPE HTML>
+<title>Chromium/WebKit Test History</title>
+<style>
+input[type=range] {
+ width: 400px;
+}
+.flaky-bar {
+ height: 10px;
+ background-color: salmon;
+}
+#flip-slider-container {
+ margin: 10px 0;
+}
+table {
+ border-collapse: collapse;
+}
+th, td {
+ padding: 5px;
+ border: 1px dotted;
+}
+tr:nth-child(even) {
+ background-color: lightgray;
+}
+td:last-child {
+ width: 500px;
+}
+</style>
+<script src="base.js"></script>
+<script src="string.js"></script>
+<script src="builders.js"></script>
+<script src="builders.jsonp"></script>
+<script src="results.js"></script>
+<script src="loader.js"></script>
+<script src="history.js"></script>
+<script src="dashboard_base.js"></script>
+<script src="ui.js"></script>
+<script src="overview.js"></script>
+<body>
+ <div id="navbar"></div>
+ <div id="content"></div>
+</body>
\ No newline at end of file
diff --git a/Tools/TestResultServer/static-dashboards/overview.js b/Tools/TestResultServer/static-dashboards/overview.js
new file mode 100644
index 0000000..bdc9742
--- /dev/null
+++ b/Tools/TestResultServer/static-dashboards/overview.js
@@ -0,0 +1,179 @@
+// 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.
+
+var overview = overview || {};
+
+(function() {
+
+overview._resultsByTestType = {};
+overview._testTypeIndex = 0;
+
+// FIXME: This is a gross hack to make it so that changing the test type in loadNextTestType doesn't reload the page.
+history.reloadRequiringParameters = history.reloadRequiringParameters.filter(function(item) { return item != 'testType'; });
+
+overview.loadNextTestType = function(historyInstance)
+{
+ if (overview._testTypeIndex == builders.testTypes.length) {
+ overview._generatePage();
+ return;
+ }
+
+ historyInstance.crossDashboardState.testType = builders.testTypes[overview._testTypeIndex++];
+
+ $('content').innerHTML = (overview._testTypeIndex - 1) + '/' + builders.testTypes.length + ' loaded. Loading ' + historyInstance.crossDashboardState.testType + '...';
+
+ // FIXME: Gross hack to allow loading all the builders for different test types.
+ // Change loader.js to allow you to pass in the state that it fills instead of setting globals.
+ g_resultsByBuilder = {};
+ overview._resultsByTestType[historyInstance.crossDashboardState.testType] = g_resultsByBuilder;
+ new loader.Loader().load();
+}
+
+overview._getFlakyData = function(allTestTypes, resultsByTestType, flipCountThreshold)
+{
+ var flakyData = {};
+ allTestTypes.forEach(function(testType) {
+ flakyData[testType] = {
+ flakyBelowThreshold: {},
+ flaky: {},
+ testCount: 0
+ }
+
+ var resultsByBuilder = resultsByTestType[testType];
+ for (var builder in resultsByBuilder) {
+ var totalTestCount = results.testCounts(resultsByBuilder[builder][results.NUM_FAILURES_BY_TYPE]).totalTests[0];
+ flakyData[testType].testCount = Math.max(totalTestCount, flakyData[testType].testCount);
+
+ var allTestsForThisBuilder = resultsByBuilder[builder].tests;
+ for (var test in allTestsForThisBuilder) {
+ var resultsForTest = {};
+ var testData = resultsByBuilder[builder].tests[test].results;
+ var failureMap = resultsByBuilder[builder][results.FAILURE_MAP];
+ results.determineFlakiness(failureMap, testData, resultsForTest);
+
+ if (resultsForTest.isFlaky)
+ flakyData[testType].flaky[test] = true;
+
+ if (!resultsForTest.isFlaky || resultsForTest.flipCount <= flipCountThreshold)
+ continue;
+ flakyData[testType].flakyBelowThreshold[test] = true;
+ }
+ }
+ });
+ return flakyData;
+}
+
+overview._generatePage = function()
+{
+ var flipCountThreshold = Number(g_history.dashboardSpecificState.flipCount);
+ var flakyData = overview._getFlakyData(builders.testTypes, overview._resultsByTestType, flipCountThreshold);
+ $('content').innerHTML = overview._htmlForFlakyTests(flakyData, g_history.crossDashboardState.group) +
+ '<div>*Tests that fail due to a bad patch being committed are counted as flaky.</div>';
+}
+
+overview._htmlForFlakyTests = function(flakyData, group)
+{
+ var html = '<table><tr><th>Test type</th><th>flaky count / total count</th><th>percent</th><th></th></tr>';
+
+ Object.keys(flakyData).forEach(function(testType) {
+ var testCount = flakyData[testType].testCount;
+ if (!testCount)
+ return;
+
+ // We want the list of tests to stay stable as you drag the flakiness slider, so only
+ // exclude tests that never flake, even at the lowest flakiness threshold.
+ var flakeCountIgnoringThreshold = Object.keys(flakyData[testType].flaky).length;
+ if (!g_history.dashboardSpecificState.showNoFlakes && !flakeCountIgnoringThreshold)
+ return;
+
+ var tests = Object.keys(flakyData[testType].flakyBelowThreshold);
+ var flakyCount = tests.length;
+ var percentage = Math.round(100 * flakyCount / testCount);
+ html += '<tr>' +
+ '<td><a href="flakiness_dashboard.html#group=' + group + '&testType=' + testType + '&tests=' + tests.join(',') + '" target=_blank>' +
+ testType +
+ '</a></td>' +
+ '<td>' + flakyCount + ' / ' + testCount + '</td>' +
+ '<td>' + percentage + '%</td>' +
+ '<td><div class="flaky-bar" style="width:' + percentage * 5 + 'px"></div>'
+ '</tr>';
+ });
+
+ return html + '</table>';
+}
+
+overview.handleValidHashParameter = function(historyInstance, key, value) {
+ switch(key) {
+ case 'flipCount':
+ return history.validateParameter(historyInstance.dashboardSpecificState, key, value,
+ function() {
+ return !isNaN(Number(value));
+ });
+
+ case 'showNoFlakes':
+ historyInstance.dashboardSpecificState[key] = value == 'true';
+ return true;
+
+ default:
+ return false;
+ }
+}
+
+overview._htmlForNavBar = function(flipCount, showNoFlakes)
+{
+ return ui.html.navbar(ui.html.select('Group', 'group', builders.getAllGroupNames())) +
+ '<div id=flip-slider-container>' +
+ ui.html.range('flipCount', 'Flakiness threshold (low-->high):', 1, 50, flipCount) +
+ ui.html.checkbox('showNoFlakes', 'Show test suites with no flakes', showNoFlakes) +
+ '</div>';
+}
+
+// FIXME: Once dashboard_base, loader and ui stop using the g_history global, we can stop setting it here.
+g_history = new history.History({
+ defaultStateValues: {
+ flipCount: 1,
+ showNoFlakes: false
+ },
+ generatePage: overview.loadNextTestType,
+ handleValidHashParameter: overview.handleValidHashParameter,
+});
+g_history.parseCrossDashboardParameters();
+
+window.addEventListener('load', function() {
+ // FIXME: Come up with a better way to do this. This early return is just to avoid
+ // executing this code when it's loaded in the unittests.
+ if (!$('navbar'))
+ return;
+
+ // Need to parseParameters so that flipCount has the correct value.
+ g_history.parseParameters();
+ $('navbar').innerHTML = overview._htmlForNavBar(g_history.dashboardSpecificState.flipCount);
+ overview.loadNextTestType(g_history);
+}, false);
+
+})();
diff --git a/Tools/TestResultServer/static-dashboards/overview_unittests.js b/Tools/TestResultServer/static-dashboards/overview_unittests.js
new file mode 100644
index 0000000..40950cb
--- /dev/null
+++ b/Tools/TestResultServer/static-dashboards/overview_unittests.js
@@ -0,0 +1,151 @@
+// 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.
+
+module('overview');
+
+test('getFlakyData', 2, function() {
+ var testTypes = ['MockTestType'];
+
+ var failureMap = {
+ 'T': 'TIMEOUT',
+ 'C': 'CRASH',
+ 'P': 'PASS'
+ }
+
+ var resultsByTestType = {
+ 'MockTestType': {
+ 'MockBuilder1': {
+ 'tests': {
+ 'TestSuite.NotFlaky': {
+ 'results': [[1, 'T'], [1, 'C']]
+ },
+ 'TestSuite.Flaky': {
+ 'results': [[1, 'T'], [1, 'C'], [1, 'T']]
+ },
+ 'TestSuite.VeryFlaky': {
+ 'results': [[1, 'T'], [1, 'C'], [1, 'T'], [1, 'C'], [1, 'T'], [1, 'C'], [1, 'T']]
+ }
+ },
+ 'num_failures_by_type': {
+ 'PASS': [10, 12],
+ 'CRASH': [1, 0]
+ },
+ 'failure_map': failureMap
+ }
+ }
+ };
+
+ var flipCountThreshold = 1;
+ deepEqual(overview._getFlakyData(testTypes, resultsByTestType, flipCountThreshold), {
+ 'MockTestType': {
+ "flakyBelowThreshold": {
+ "TestSuite.Flaky": true,
+ "TestSuite.VeryFlaky": true
+ },
+ 'flaky': {
+ 'TestSuite.Flaky': true,
+ 'TestSuite.VeryFlaky': true
+ },
+ 'testCount': 11
+ }
+ })
+
+
+ flipCountThreshold = 5;
+ deepEqual(overview._getFlakyData(testTypes, resultsByTestType, flipCountThreshold), {
+ 'MockTestType': {
+ "flakyBelowThreshold": {
+ "TestSuite.VeryFlaky": true
+ },
+ 'flaky': {
+ "TestSuite.Flaky": true,
+ 'TestSuite.VeryFlaky': true
+ },
+ 'testCount': 11
+ }
+ })
+});
+
+test('htmlForFlakyTests', 6, function() {
+ var flakyData = {
+ 'browser_tests': {
+ 'testCount': 0,
+ "flakyBelowThreshold": {},
+ 'flaky': {}
+ },
+ 'layout-tests': {
+ 'testCount': 4,
+ "flakyBelowThreshold": {
+ 'css3/foo.html': true,
+ 'css3/bar.html': true
+ },
+ 'flaky': {
+ 'css3/foo.html': true,
+ 'css3/bar.html': true
+ }
+ }
+ }
+
+ var container = document.createElement('div');
+ container.innerHTML = overview._htmlForFlakyTests(flakyData, 'MockGroup');
+
+ // There should only be one row other than the header since browser_tests
+ // have testCount of 0.
+ ok(!container.querySelectorAll('tr')[2]);
+
+ var firstRow = container.querySelectorAll('tr')[1];
+ equal(firstRow.querySelector('td:nth-child(1)').textContent, 'layout-tests');
+ equal(firstRow.querySelector('td:nth-child(1) a').hash, '#group=MockGroup&testType=layout-tests&tests=css3/foo.html,css3/bar.html');
+ equal(firstRow.querySelector('td:nth-child(2)').textContent, '2 / 4');
+ equal(firstRow.querySelector('td:nth-child(3)').textContent, '50%');
+ equal(firstRow.querySelector('td:nth-child(4)').innerHTML, '<div class="flaky-bar" style="width:250px"></div>');
+});
+
+test('handleValidHashParameter', 5, function() {
+ var historyInstance = new history.History();
+
+ ok(overview.handleValidHashParameter(historyInstance, 'flipCount', "5"))
+ ok(overview.handleValidHashParameter(historyInstance, 'flipCount', 5))
+ ok(!overview.handleValidHashParameter(historyInstance, 'flipCount', "notanumber"))
+ ok(!overview.handleValidHashParameter(historyInstance, 'flipCount', "5notanumber"))
+ ok(!overview.handleValidHashParameter(historyInstance, 'randomKey', "5"))
+});
+
+test('navbar', 3, function() {
+ var flipCount = 5;
+ var container = document.createElement('div');
+ container.innerHTML = overview._htmlForNavBar(flipCount);
+
+ ok(container.querySelector('select'));
+
+ var sliderContainer = container.querySelector('#flip-slider-container');
+ ok(sliderContainer);
+
+ var range = sliderContainer.querySelector('input');
+ equal(range.value, "5");
+});
diff --git a/Tools/TestResultServer/static-dashboards/results.js b/Tools/TestResultServer/static-dashboards/results.js
new file mode 100644
index 0000000..cc486df
--- /dev/null
+++ b/Tools/TestResultServer/static-dashboards/results.js
@@ -0,0 +1,112 @@
+// 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.
+
+var results = results || {};
+
+(function() {
+
+// Keys in the JSON files.
+results.NUM_FAILURES_BY_TYPE = 'num_failures_by_type';
+results.FAILURE_MAP = 'failure_map';
+results.CHROME_REVISIONS = 'chromeRevision';
+results.BLINK_REVISIONS = 'blinkRevision';
+results.TIMESTAMPS = 'secondsSinceEpoch';
+results.BUILD_NUMBERS = 'buildNumbers';
+results.TESTS = 'tests';
+
+// Failure types.
+results.PASS = 'PASS';
+results.NO_DATA = 'NO DATA';
+results.SKIP = 'SKIP';
+results.NOTRUN = 'NOTRUN';
+
+// FIXME: Create a ResultsJson class or something similar that abstracts out the JSON
+// data format. Code outside this class shouldn't know about the guts of the JSON format.
+
+// Enum for indexing into the run-length encoded results in the JSON files.
+// 0 is where the count is length is stored. 1 is the value.
+results.RLE = {
+ LENGTH: 0,
+ VALUE: 1
+}
+
+var NON_FAILURE_TYPES = [results.PASS, results.NO_DATA, results.SKIP, results.NOTRUN];
+
+results.isFailingResult = function(failureMap, failureType)
+{
+ return NON_FAILURE_TYPES.indexOf(failureMap[failureType]) == -1;
+}
+
+results.testCounts = function(failuresByType)
+{
+ var countData = {
+ totalTests: [],
+ totalFailingTests: []
+ };
+
+ for (var failureType in failuresByType) {
+ var failures = failuresByType[failureType];
+ failures.forEach(function(count, index) {
+ if (!countData.totalTests[index]) {
+ countData.totalTests[index] = 0;
+ countData.totalFailingTests[index] = 0;
+ }
+
+ countData.totalTests[index] += count;
+ if (failureType != results.PASS)
+ countData.totalFailingTests[index] += count;
+ });
+ }
+ return countData;
+}
+
+results.determineFlakiness = function(failureMap, testResults, out)
+{
+ // FIXME: Ideally this heuristic would be a bit smarter and not consider
+ // all passes, followed by a few consecutive failures, followed by all passes
+ // to be flakiness since that's more likely the test actually failing for a
+ // few runs due to a commit.
+ var FAILURE_TYPES_TO_IGNORE = [results.NOTRUN, results.NO_DATA, results.SKIP];
+ var flipCount = 0;
+ var mostRecentNonIgnorableFailureType;
+
+ for (var i = 0; i < testResults.length; i++) {
+ var result = testResults[i][results.RLE.VALUE];
+ var failureType = failureMap[result];
+ if (failureType != mostRecentNonIgnorableFailureType && FAILURE_TYPES_TO_IGNORE.indexOf(failureType) == -1) {
+ if (mostRecentNonIgnorableFailureType)
+ flipCount++;
+ mostRecentNonIgnorableFailureType = failureType;
+ }
+ }
+
+ out.flipCount = flipCount;
+ out.isFlaky = flipCount > 1;
+}
+
+})();
diff --git a/Tools/TestResultServer/static-dashboards/results_unittests.js b/Tools/TestResultServer/static-dashboards/results_unittests.js
new file mode 100644
index 0000000..a3f9758
--- /dev/null
+++ b/Tools/TestResultServer/static-dashboards/results_unittests.js
@@ -0,0 +1,88 @@
+// 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.
+
+module('results');
+
+test('results.testCounts', 2, function() {
+ var failuresByType = {
+ 'PASS': [2, 3],
+ 'TIMEOUT': [4, 2],
+ 'CRASH': [1, 0]
+ }
+
+ deepEqual(results.testCounts(failuresByType), {
+ totalTests: [7, 5],
+ totalFailingTests: [5, 2]
+ });
+
+ failuresByType = {
+ 'PASS': [2, 3]
+ }
+ deepEqual(results.testCounts(failuresByType), {
+ totalTests: [2, 3],
+ totalFailingTests: [0, 0]
+ });
+});
+
+test('results.determineFlakiness', 10, function() {
+ var failureMap = {
+ 'C': 'CRASH',
+ 'P': 'PASS',
+ 'I': 'IMAGE',
+ 'T': 'TIMEOUT',
+ 'N':'NO DATA',
+ 'Y':'NOTRUN',
+ 'X':'SKIP'
+ };
+ var out = {};
+
+ var inputResults = [[1, 'P']];
+ results.determineFlakiness(failureMap, inputResults, out);
+ equal(out.isFlaky, false);
+ equal(out.flipCount, 0);
+
+ inputResults = [[1, 'P'], [1, 'C']];
+ results.determineFlakiness(failureMap, inputResults, out);
+ equal(out.isFlaky, false);
+ equal(out.flipCount, 1);
+
+ inputResults = [[1, 'P'], [1, 'C'], [1, 'P']];
+ results.determineFlakiness(failureMap, inputResults, out);
+ equal(out.isFlaky, true);
+ equal(out.flipCount, 2);
+
+ inputResults = [[1, 'P'], [1, 'C'], [1, 'P'], [1, 'C']];
+ results.determineFlakiness(failureMap, inputResults, out);
+ equal(out.isFlaky, true);
+ equal(out.flipCount, 3);
+
+ inputResults = [[1, 'P'], [1, 'Y'], [1, 'N'], [1, 'X'], [1, 'P'], [1, 'Y'], [1, 'N'], [1, 'X'], [1, 'C']];
+ results.determineFlakiness(failureMap, inputResults, out);
+ equal(out.isFlaky, false);
+ equal(out.flipCount, 1);
+});
diff --git a/Tools/TestResultServer/static-dashboards/run-embedded-unittests.html b/Tools/TestResultServer/static-dashboards/run-embedded-unittests.html
index 08c7b29..3dbd352 100644
--- a/Tools/TestResultServer/static-dashboards/run-embedded-unittests.html
+++ b/Tools/TestResultServer/static-dashboards/run-embedded-unittests.html
@@ -39,7 +39,11 @@
<link rel="stylesheet" href="flakiness_dashboard.css"></link>
<link rel="stylesheet" href="flakiness_dashboard_tests.css"></link>
+<script src="base.js"></script>
+<script src="base_unittests.js"></script>
+<script src="string.js"></script>
<script src="builders.js"></script>
+<script src="builders.jsonp"></script>
<script src="builders_unittests.js"></script>
<script>
@@ -47,14 +51,15 @@
window.parent = null;
</script>
-<script src="string.js"></script>
+<script src="results.js"></script>
+<script src="results_unittests.js"></script>
+<script src="loader.js"></script>
+<script src="loader_unittests.js"></script>
<script src="history.js"></script>
<script src="history_unittests.js"></script>
<script src="dashboard_base.js"></script>
<script src="ui.js"></script>
<script src="ui_unittests.js"></script>
-<script src="loader.js"></script>
-<script src="loader_unittests.js"></script>
<script>
// Mock out loader.request so that we don't actually make xhrs for tests.
loader.request = function(url, successCallback, errorCallback) {};
diff --git a/Tools/TestResultServer/static-dashboards/run-unittests.html b/Tools/TestResultServer/static-dashboards/run-unittests.html
index fb42134..375e149 100644
--- a/Tools/TestResultServer/static-dashboards/run-unittests.html
+++ b/Tools/TestResultServer/static-dashboards/run-unittests.html
@@ -39,16 +39,21 @@
<link rel="stylesheet" href="flakiness_dashboard.css"></link>
<link rel="stylesheet" href="flakiness_dashboard_tests.css"></link>
-<script src="builders.js"></script>
-<script src="builders_unittests.js"></script>
+<script src="base.js"></script>
+<script src="base_unittests.js"></script>
<script src="string.js"></script>
+<script src="builders.js"></script>
+<script src="builders.jsonp"></script>
+<script src="builders_unittests.js"></script>
+<script src="results.js"></script>
+<script src="results_unittests.js"></script>
+<script src="loader.js"></script>
+<script src="loader_unittests.js"></script>
<script src="history.js"></script>
<script src="history_unittests.js"></script>
<script src="dashboard_base.js"></script>
<script src="ui.js"></script>
<script src="ui_unittests.js"></script>
-<script src="loader.js"></script>
-<script src="loader_unittests.js"></script>
<script>
// Mock out loader.request so that we don't actually make xhrs for tests.
loader.request = function(url, successCallback, errorCallback) {};
@@ -64,5 +69,7 @@
<script src="aggregate_results.js"></script>
<script src="aggregate_results_unittest.js"></script>
+<script src="overview.js"></script>
+<script src="overview_unittests.js"></script>
</body>
</html>
diff --git a/Tools/TestResultServer/static-dashboards/timeline_explorer.html b/Tools/TestResultServer/static-dashboards/timeline_explorer.html
index 05d2b51..c1ee08e 100644
--- a/Tools/TestResultServer/static-dashboards/timeline_explorer.html
+++ b/Tools/TestResultServer/static-dashboards/timeline_explorer.html
@@ -96,9 +96,12 @@
}
</style>
<script src="dygraph-combined.js"></script>
-<script src="builders.js"></script>
-<script src="loader.js"></script>
+<script src="base.js"></script>
<script src="string.js"></script>
+<script src="builders.js"></script>
+<script src="builders.jsonp"></script>
+<script src="results.js"></script>
+<script src="loader.js"></script>
<script src="history.js"></script>
<script src="dashboard_base.js"></script>
<script src="timeline_explorer.js"></script>
diff --git a/Tools/TestResultServer/static-dashboards/timeline_explorer.js b/Tools/TestResultServer/static-dashboards/timeline_explorer.js
index 2be0fcd..5756b89 100644
--- a/Tools/TestResultServer/static-dashboards/timeline_explorer.js
+++ b/Tools/TestResultServer/static-dashboards/timeline_explorer.js
@@ -45,13 +45,13 @@
function generatePage(historyInstance)
{
- var results = g_resultsByBuilder[historyInstance.dashboardSpecificState.builder || currentBuilderGroup().defaultBuilder()];
+ var resultsForBuilder = g_resultsByBuilder[historyInstance.dashboardSpecificState.builder || currentBuilderGroup().defaultBuilder()];
- g_totalFailureCount = getTotalTestCounts(results[FAILURES_BY_TYPE_KEY]).totalFailingTests;
+ g_totalFailureCount = results.testCounts(resultsForBuilder[results.NUM_FAILURES_BY_TYPE]).totalFailingTests;
g_buildIndicesByTimestamp = {};
for (var i = 0; i < g_totalFailureCount.length; i++) {
- var buildDate = new Date(results[TIMESTAMPS_KEY][i] * 1000);
+ var buildDate = new Date(resultsForBuilder[results.TIMESTAMPS][i] * 1000);
g_buildIndicesByTimestamp[buildDate.getTime()] = i;
}
@@ -113,20 +113,20 @@
function shouldShowBlinkRevisionsOnly()
{
- return isTipOfTreeWebKitBuilder();
+ return currentBuilderGroup().isToTBlink;
}
function updateTimelineForBuilder()
{
var builder = g_history.dashboardSpecificState.builder || currentBuilderGroup().defaultBuilder();
- var results = g_resultsByBuilder[builder];
+ var resultsForBuilder = g_resultsByBuilder[builder];
var graphData = [];
var annotations = [];
// Dygraph prefers to be handed data in chronological order.
for (var i = g_totalFailureCount.length - 1; i >= 0; i--) {
- var buildDate = new Date(results[TIMESTAMPS_KEY][i] * 1000);
+ var buildDate = new Date(resultsForBuilder[results.TIMESTAMPS][i] * 1000);
// FIXME: Find a better way to exclude outliers. This is just so we
// exclude runs where every test failed.
var failureCount = Math.min(g_totalFailureCount[i], 10000);
@@ -136,12 +136,12 @@
graphData.push([buildDate, failureCount]);
- if (!shouldShowBlinkRevisionsOnly() && (results[BLINK_REVISIONS_KEY][i] != results[BLINK_REVISIONS_KEY][i + 1])) {
+ if (!shouldShowBlinkRevisionsOnly() && (resultsForBuilder[results.BLINK_REVISIONS][i] != resultsForBuilder[results.BLINK_REVISIONS][i + 1])) {
annotations.push({
series: FAILING_TESTS_DATASET_NAME,
x: buildDate,
shortText: 'R',
- text: 'Blink roll: r' + results[BLINK_REVISIONS_KEY][i + 1] + ' to ' + results[BLINK_REVISIONS_KEY][i]
+ text: 'Blink roll: r' + resultsForBuilder[results.BLINK_REVISIONS][i + 1] + ' to ' + resultsForBuilder[results.BLINK_REVISIONS][i]
});
}
}
@@ -165,12 +165,12 @@
width: graphWidth,
height: graphHeight,
clickCallback: function(event, date) {
- selectBuild(results, builder, g_dygraph, g_buildIndicesByTimestamp[date]);
+ selectBuild(resultsForBuilder, builder, g_dygraph, g_buildIndicesByTimestamp[date]);
},
drawCallback: function(dygraph, isInitial) {
if (isInitial)
return;
- updateBuildIndicator(results, dygraph);
+ updateBuildIndicator(resultsForBuilder, dygraph);
},
// xValueParser is necessary for annotations to work, even though we
// already have Date instances
@@ -185,15 +185,15 @@
selectBuild(results, builder, g_dygraph, g_currentBuildIndex);
}
-function selectBuild(results, builder, dygraph, index)
+function selectBuild(resultsForBuilder, builder, dygraph, index)
{
g_currentBuildIndex = index;
updateBuildIndicator(results, dygraph);
updateBuildInspector(results, builder, dygraph, index);
- g_history.setQueryParameter('buildTimestamp', results[TIMESTAMPS_KEY][index] * 1000);
+ g_history.setQueryParameter('buildTimestamp', resultsForBuilder[results.TIMESTAMPS][index] * 1000);
}
-function updateBuildIndicator(results, dygraph)
+function updateBuildIndicator(resultsForBuilder, dygraph)
{
var indicatorNode = $('indicator');
@@ -209,13 +209,13 @@
indicatorNode.style.display = 'none';
else {
indicatorNode.style.display = 'block';
- var buildDate = new Date(results[TIMESTAMPS_KEY][g_currentBuildIndex] * 1000);
+ var buildDate = new Date(resultsForBuilder[results.TIMESTAMPS][g_currentBuildIndex] * 1000);
var domCoords = dygraph.toDomCoords(buildDate, 0);
indicatorNode.style.left = domCoords[0] + 'px';
}
}
-function updateBuildInspector(results, builder, dygraph, index)
+function updateBuildInspector(resultsForBuilder, builder, dygraph, index)
{
var html = '<table id="inspector-table"><caption>Details</caption>';
@@ -225,19 +225,19 @@
}
// Builder and results links
- var buildNumber = results[BUILD_NUMBERS_KEY][index];
+ var buildNumber = resultsForBuilder[results.BUILD_NUMBERS][index];
addRow('', '');
- var master = builderMaster(builder);
- var buildUrl = master.logPath(builder, results[BUILD_NUMBERS_KEY][index]);
+ var master = builders.master(builder);
+ var buildUrl = master.logPath(builder, resultsForBuilder[results.BUILD_NUMBERS][index]);
var resultsUrl = 'http://build.chromium.org/f/chromium/layout_test_results/' +
- currentBuilders()[builder] + '/' + results[CHROME_REVISIONS_KEY][index];
+ currentBuilders()[builder] + '/' + resultsForBuilder[results.CHROME_REVISIONS][index];
addRow('Build:', '<a href="' + buildUrl + '" target="_blank">' + buildNumber + '</a> (<a href="' + resultsUrl + '" target="_blank">results</a>)');
// Revision link(s)
if (!shouldShowBlinkRevisionsOnly())
- addRow('Chromium change:', ui.html.chromiumRevisionLink(results, index));
- addRow('Blink change:', ui.html.blinkRevisionLink(results, index));
+ addRow('Chromium change:', ui.html.chromiumRevisionLink(resultsForBuilder, index));
+ addRow('Blink change:', ui.html.blinkRevisionLink(resultsForBuilder, index));
// Test status/counts
addRow('', '');
@@ -255,7 +255,7 @@
}
var flakyDeltasByBuild = g_currentBuilderTestResults.flakyDeltasByBuild;
- var failures_by_type = results[FAILURES_BY_TYPE_KEY];
+ var failures_by_type = resultsForBuilder[results.NUM_FAILURES_BY_TYPE];
for (var failureType in failures_by_type) {
var failureCount = failures_by_type[failureType];
var currentCount = failureCount[index];
@@ -294,10 +294,10 @@
showResultsDelta(index, buildNumber, buildUrl, resultsUrl);
};
inspectorNode.getElementsByTagName('button')[1].onclick = function() {
- selectBuild(results, builder, dygraph, index + 1);
+ selectBuild(resultsForBuilder, builder, dygraph, index + 1);
};
inspectorNode.getElementsByTagName('button')[2].onclick = function() {
- selectBuild(results, builder, dygraph, index - 1);
+ selectBuild(resultsForBuilder, builder, dygraph, index - 1);
};
}
@@ -375,7 +375,7 @@
// - flakyDeltasByBuild: array of builds, for each build a count of flaky test results by expectation, as well as a total.
function _decompressResults(builderResults)
{
- var builderTestResults = builderResults[TESTS_KEY];
+ var builderTestResults = builderResults[results.TESTS];
var buildCount = g_totalFailureCount.length;
var resultsByBuild = new Array(buildCount);
var flakyDeltasByBuild = new Array(buildCount);
@@ -396,7 +396,7 @@
var testNames = new Array(testCount);
var flakyTests = new Array(testCount);
- var failureMap = builderResults[FAILURE_MAP_KEY];
+ var failureMap = builderResults[results.FAILURE_MAP];
// Decompress and "invert" test results (by build instead of by test) and
// determine which are flaky.
@@ -406,10 +406,10 @@
testNames[testIndex] = testName;
var testResults = builderTestResults[testName].results;
for (var i = 0, rleResult, currentBuildIndex = 0; (rleResult = testResults[i]) && currentBuildIndex < buildCount; i++) {
- var count = rleResult[RLE.LENGTH];
- var value = rleResult[RLE.VALUE];
+ var count = rleResult[results.RLE.LENGTH];
+ var value = rleResult[results.RLE.VALUE];
- if (count == 1 && isFailingResult(failureMap, value))
+ if (count == 1 && results.isFailingResult(failureMap, value))
oneBuildFailureCount++;
for (var j = 0; j < count; j++) {
@@ -434,8 +434,8 @@
var testResults = builderTestResults[testName].results;
for (var i = 0, rleResult, currentBuildIndex = 0; (rleResult = testResults[i]) && currentBuildIndex < buildCount; i++) {
- var count = rleResult[RLE.LENGTH];
- var value = rleResult[RLE.VALUE];
+ var count = rleResult[results.RLE.LENGTH];
+ var value = rleResult[results.RLE.VALUE];
for (var j = 0; j < count; j++) {
var buildTestResults = flakyDeltasByBuild[currentBuildIndex++];
@@ -446,7 +446,7 @@
buildTestResults[key]++;
}
addFlakyDelta(value);
- if (isFailingResult(failureMap, value))
+ if (results.isFailingResult(failureMap, value))
addFlakyDelta('total');
if (currentBuildIndex == buildCount)
break;
diff --git a/Tools/TestResultServer/static-dashboards/treemap.html b/Tools/TestResultServer/static-dashboards/treemap.html
index acf9af9..b9ab016 100644
--- a/Tools/TestResultServer/static-dashboards/treemap.html
+++ b/Tools/TestResultServer/static-dashboards/treemap.html
@@ -107,14 +107,17 @@
font-style: italic;
}
</style>
-<script src="builders.js"></script>
-<script src="loader.js"></script>
+<script src="base.js"></script>
<script src="string.js"></script>
+<script src="builders.js"></script>
+<script src="builders.jsonp"></script>
+<script src="results.js"></script>
+<script src="loader.js"></script>
<script src="history.js"></script>
<script src="dashboard_base.js"></script>
<script src="ui.js"></script>
-<script src="treemap.js"></script>
<script src="webtreemap.js"></script>
+<script src="treemap.js"></script>
<div id='header-container'></div>
<p>Click on a box to zoom in. Click on the outermost box to zoom out. <a href="" onclick="showAverages();return false;">Show averages</a></p>
diff --git a/Tools/TestResultServer/static-dashboards/treemap.js b/Tools/TestResultServer/static-dashboards/treemap.js
index f72b0bb..311d0fd 100644
--- a/Tools/TestResultServer/static-dashboards/treemap.js
+++ b/Tools/TestResultServer/static-dashboards/treemap.js
@@ -36,14 +36,17 @@
'group': 'builder'
};
+var g_haveEverGeneratedPage = false;
+
function generatePage(historyInstance)
{
+ g_haveEverGeneratedPage = true;
$('header-container').innerHTML = ui.html.testTypeSwitcher();
g_isGeneratingPage = true;
var rawTree = g_resultsByBuilder[historyInstance.dashboardSpecificState.builder || currentBuilderGroup().defaultBuilder()];
- g_webTree = convertToWebTreemapFormat('LayoutTests', rawTree);
+ g_webTree = convertToWebTreemapFormat('AllTests', rawTree);
appendTreemap($('map'), g_webTree);
if (historyInstance.dashboardSpecificState.treemapfocus)
@@ -63,9 +66,7 @@
case 'treemapfocus':
history.validateParameter(historyInstance.dashboardSpecificState, key, value,
function() {
- // FIXME: There's probably a simpler regexp here. Just trying to match ascii + forward-slash.
- // e.g. LayoutTests/foo/bar.html
- return (value.match(/^(\w+\/\w*)*$/));
+ return value.match(/^[\w./]+$/);
});
return true;
@@ -77,7 +78,11 @@
function handleQueryParameterChange(historyInstance, params)
{
for (var param in params) {
- if (param != 'treemapfocus') {
+ // When we're first loading the page, if there is a treemapfocus parameter,
+ // it will show up here. After we've generated the page, treemapfocus parameter
+ // changes should just be handled by the treemap code instead of calling through
+ // to generatePage.
+ if (!g_haveEverGeneratedPage || param != 'treemapfocus') {
$('map').innerHTML = 'Loading...';
return true;
}
diff --git a/Tools/TestResultServer/static-dashboards/ui.js b/Tools/TestResultServer/static-dashboards/ui.js
index abce48d..c90165d 100644
--- a/Tools/TestResultServer/static-dashboards/ui.js
+++ b/Tools/TestResultServer/static-dashboards/ui.js
@@ -70,8 +70,8 @@
ui.popup._handleMouseDown = function(e) {
// Clear the open popup, unless the click was inside the popup.
var popup = $('popup');
- if (popup && e.target != popup && !(popup.compareDocumentPosition(e.target) & 16))
- ui.popup.hide();
+ if (popup && e.target != popup && !(popup.compareDocumentPosition(e.target) & 16))
+ ui.popup.hide();
}
ui.html = {};
@@ -82,7 +82,15 @@
return '<label style="padding-left: 2em">' +
'<input type="checkbox" onchange="g_history.toggleQueryParameter(\'' + queryParameter + '\');' + js + '" ' +
(isChecked ? 'checked' : '') + '>' + label +
- '</label> ';
+ '</label>';
+}
+
+ui.html.range = function(queryParameter, label, min, max, initialValue)
+{
+ return '<label>' +
+ label +
+ '<input type=range onchange="g_history.setQueryParameter(\'' + queryParameter + '\', this.value)" min=' + min + ' max=' + max + ' value=' + initialValue + '>' +
+ '</label>';
}
ui.html.select = function(label, queryParameter, options)
@@ -100,18 +108,28 @@
return html;
}
-// Returns the HTML for the select element to switch to different testTypes.
-ui.html.testTypeSwitcher = function(opt_noBuilderMenu, opt_extraHtml, opt_includeNoneBuilder)
+ui.html.navbar = function(opt_extraHtml)
{
var html = '<div style="border-bottom:1px dashed">';
- html += '' +
+ html = ui.html._dashboardLink('Overview', 'overview.html') +
ui.html._dashboardLink('Stats', 'aggregate_results.html') +
ui.html._dashboardLink('Timeline', 'timeline_explorer.html') +
ui.html._dashboardLink('Results', 'flakiness_dashboard.html') +
ui.html._dashboardLink('Treemap', 'treemap.html');
- html += ui.html.select('Test type', 'testType', TEST_TYPES);
+ if (opt_extraHtml)
+ html += opt_extraHtml;
+ if (!history.isTreeMap())
+ html += ui.html.checkbox('showAllRuns', 'Use all recorded runs', g_history.crossDashboardState.showAllRuns);
+
+ return html + '</div>';
+}
+
+// Returns the HTML for the select element to switch to different testTypes.
+ui.html.testTypeSwitcher = function(opt_noBuilderMenu, opt_extraHtml, opt_includeNoneBuilder)
+{
+ var html = ui.html.select('Test type', 'testType', builders.testTypes);
if (!opt_noBuilderMenu) {
var buildersForMenu = Object.keys(currentBuilders());
if (opt_includeNoneBuilder)
@@ -119,15 +137,11 @@
html += ui.html.select('Builder', 'builder', buildersForMenu);
}
- html += ui.html.select('Group', 'group',
- Object.keys(currentBuilderGroupCategory()));
-
- if (!history.isTreeMap())
- html += ui.html.checkbox('showAllRuns', 'Show all runs', g_history.crossDashboardState.showAllRuns);
+ html += ui.html.select('Group', 'group', builders.groupNamesForTestType(g_history.crossDashboardState.testType));
if (opt_extraHtml)
html += opt_extraHtml;
- return html + '</div>';
+ return ui.html.navbar(html);
}
ui.html._loadDashboard = function(fileName)
@@ -153,12 +167,12 @@
return ui.html._topLink(html, onClick, isSelected);
}
-ui.html._revisionLink = function(resultsKey, results, index)
+ui.html._revisionLink = function(resultsKey, testResults, index)
{
- var currentRevision = parseInt(results[resultsKey][index], 10);
- var previousRevision = parseInt(results[resultsKey][index + 1], 10);
+ var currentRevision = parseInt(testResults[resultsKey][index], 10);
+ var previousRevision = parseInt(testResults[resultsKey][index + 1], 10);
- var isChrome = resultsKey == CHROME_REVISIONS_KEY;
+ var isChrome = resultsKey == results.CHROME_REVISIONS;
var singleUrl = 'http://src.chromium.org/viewvc/' + (isChrome ? 'chrome' : 'blink') + '?view=rev&revision=' + currentRevision;
if (currentRevision == previousRevision)
@@ -173,14 +187,14 @@
return '<a href="' + rangeUrl + '">r' + (previousRevision + 1) + ' to r' + currentRevision + '</a>';
}
-ui.html.chromiumRevisionLink = function(results, index)
+ui.html.chromiumRevisionLink = function(testResults, index)
{
- return ui.html._revisionLink(CHROME_REVISIONS_KEY, results, index);
+ return ui.html._revisionLink(results.CHROME_REVISIONS, testResults, index);
}
-ui.html.blinkRevisionLink = function(results, index)
+ui.html.blinkRevisionLink = function(testResults, index)
{
- return ui.html._revisionLink(BLINK_REVISIONS_KEY, results, index);
+ return ui.html._revisionLink(results.BLINK_REVISIONS, testResults, index);
}
@@ -197,7 +211,7 @@
this._containerElement = document.createElement('H2');
this._containerElement.style.color = 'red';
this._containerElement.id = 'errors';
- document.body.appendChild(this._containerElement);
+ document.documentElement.insertBefore(this._containerElement, document.body);
}
this._containerElement.innerHTML = this._messages;
@@ -206,7 +220,11 @@
addError: function(message)
{
this._messages += message + '<br>';
+ },
+ hasErrors: function()
+ {
+ return !!this._messages;
}
}
-})();
\ No newline at end of file
+})();
diff --git a/Tools/TestResultServer/static-dashboards/ui_unittests.js b/Tools/TestResultServer/static-dashboards/ui_unittests.js
index 3a3ff7d..d70fec8 100644
--- a/Tools/TestResultServer/static-dashboards/ui_unittests.js
+++ b/Tools/TestResultServer/static-dashboards/ui_unittests.js
@@ -28,44 +28,61 @@
module('ui');
+test('ui.html.range', 1, function() {
+ equal(ui.html.range('mockParameter', 'mockLabel', 1, 4, 2),
+ '<label>mockLabel' +
+ '<input type=range onchange="g_history.setQueryParameter(\'mockParameter\', this.value)" min=1 max=4 value=2>' +
+ '</label>');
+})
+
+test('ui.html.navbar', 3, function() {
+ var container = document.createElement('div');
+ container.innerHTML = ui.html.navbar();
+ equal(container.querySelectorAll('span').length, 5);
+ equal(container.querySelectorAll('input').length, 1);
+
+ container.innerHTML = ui.html.navbar('<div id="test-div"></div>');
+ ok(container.querySelector('#test-div'));
+})
+
test('chromiumRevisionLinkOneRevision', 1, function() {
- var results = {};
- results[CHROME_REVISIONS_KEY] = [3, 2, 1];
- var html = ui.html.chromiumRevisionLink(results, 1);
+ var testResults = {};
+ testResults[results.CHROME_REVISIONS] = [3, 2, 1];
+ var html = ui.html.chromiumRevisionLink(testResults, 1);
equal(html, '<a href="http://src.chromium.org/viewvc/chrome?view=rev&revision=2">r2</a>');
});
test('chromiumRevisionLinkAtRevision', 1, function() {
- var results = {};
- results[CHROME_REVISIONS_KEY] = [3, 2, 2];
- var html = ui.html.chromiumRevisionLink(results, 1);
+ var testResults = {};
+ testResults[results.CHROME_REVISIONS] = [3, 2, 2];
+ var html = ui.html.chromiumRevisionLink(testResults, 1);
equal(html, 'At <a href="http://src.chromium.org/viewvc/chrome?view=rev&revision=2">r2</a>');
});
test('chromiumRevisionLinkRevisionRange', 1, function() {
- var results = {};
- results[CHROME_REVISIONS_KEY] = [5, 2];
- var html = ui.html.chromiumRevisionLink(results, 0);
+ var testResults = {};
+ testResults[results.CHROME_REVISIONS] = [5, 2];
+ var html = ui.html.chromiumRevisionLink(testResults, 0);
equal(html, '<a href="http://build.chromium.org/f/chromium/perf/dashboard/ui/changelog.html?url=/trunk/src&range=3:5&mode=html">r3 to r5</a>');
});
test('blinkRevisionLinkOneRevision', 1, function() {
- var results = {};
- results[BLINK_REVISIONS_KEY] = [3, 2, 1];
- var html = ui.html.blinkRevisionLink(results, 1);
+ var testResults = {};
+ testResults[results.BLINK_REVISIONS] = [3, 2, 1];
+ var html = ui.html.blinkRevisionLink(testResults, 1);
equal(html, '<a href="http://src.chromium.org/viewvc/blink?view=rev&revision=2">r2</a>');
});
test('blinkRevisionLinkAtRevision', 1, function() {
- var results = {};
- results[BLINK_REVISIONS_KEY] = [3, 2, 2];
- var html = ui.html.blinkRevisionLink(results, 1);
+ var testResults = {};
+ testResults[results.BLINK_REVISIONS] = [3, 2, 2];
+ var html = ui.html.blinkRevisionLink(testResults, 1);
equal(html, 'At <a href="http://src.chromium.org/viewvc/blink?view=rev&revision=2">r2</a>');
});
test('blinkRevisionLinkRevisionRange', 1, function() {
- var results = {};
- results[BLINK_REVISIONS_KEY] = [5, 2];
- var html = ui.html.blinkRevisionLink(results, 0);
+ var testResults = {};
+ testResults[results.BLINK_REVISIONS] = [5, 2];
+ var html = ui.html.blinkRevisionLink(testResults, 0);
equal(html, '<a href="http://build.chromium.org/f/chromium/perf/dashboard/ui/changelog_blink.html?url=/trunk&range=3:5&mode=html">r3 to r5</a>');
});
diff --git a/Tools/TestResultServer/templates/showfilelist.html b/Tools/TestResultServer/templates/showfilelist.html
index d292fe2..f7b233f 100644
--- a/Tools/TestResultServer/templates/showfilelist.html
+++ b/Tools/TestResultServer/templates/showfilelist.html
@@ -37,11 +37,21 @@
</a>
{% endif %}
</td>
- <td><a href="/testfile?builder={{ file.builder }}&name={{ file.name }}" >
+ <td><a href="/testfile?builder={{ file.builder }}&name={{ file.name }}&master={{ file.master }}&testtype={{ file.test_type }}" >
{{ file.name }}
</a>
</td>
- <td>{{ file.date|date:"d-M-Y H:i:s" }}
+ <td>
+ <script>
+ // This date format needs to match the format string used in model/testfile.py:get_files.
+ var beforeQueryParameter = 'before={{ file.date|date:"Y-m-d\TH:i:s" }}Z';
+ var url = location.toString();
+ if (url.indexOf('before') == -1)
+ url += (url.indexOf('?') == -1 ? '?' : '&') + beforeQueryParameter;
+ else
+ url = url.replace(/before=[^&]*/, beforeQueryParameter);
+ document.write('<a href="' + url + '">' + new Date('{{ file.date|date:"c" }}').toLocaleString() + '</a>')
+ </script>
</td>
{% if admin %}
<td><a href="/testfile/delete?key={{ file.key }}&builder={{ builder }}&name={{ name }}" >