Chromium Code Reviews| Index: Tools/AutoSheriff/ui/filters.js |
| diff --git a/Tools/AutoSheriff/ui/filters.js b/Tools/AutoSheriff/ui/filters.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..9b2e9924c52b7764da0ebbe96d86255d72f78aec |
| --- /dev/null |
| +++ b/Tools/AutoSheriff/ui/filters.js |
| @@ -0,0 +1,73 @@ |
| +// Needed to make filters visible inside sortable-table. |
|
ojan
2014/07/22 02:01:26
Copyright
|
| +PolymerExpressions.prototype.since_string = function(value) { |
|
ojan
2014/07/22 02:01:27
Why do you need to do this? Can't you define a sin
|
| + // Buildbot talks to us in seconds, js expect milliseconds |
| + date = new Date(value * 1000.0); |
| + return humanized_time_span(date); |
| +} |
| +PolymerExpressions.prototype.falsy_to_empty = function(value) { |
| + return value ? value : ''; |
|
ojan
2014/07/22 02:01:27
Nit: Idiomatic JS for this is:
return value || '';
|
| +} |
| +PolymerExpressions.prototype.master_name = function(value) { |
| + if (!value) |
| + return 'foo'; |
|
ojan
2014/07/22 02:01:26
Log a warning and return something better?
|
| + var url_parts = value.split('/'); |
| + var long_name = url_parts[url_parts.length - 1]; |
| + if (long_name.indexOf('chromium.') == 0) { |
| + return long_name.slice('chromium.'.length); |
| + } |
| + return long_name; |
| +} |
| +PolymerExpressions.prototype.builder_url = function(failure) { |
| + return failure.master_url + '/builders/' + failure.builder_name; |
| +} |
| +PolymerExpressions.prototype.build_url = function(failure, build_number) { |
| + return PolymerExpressions.prototype.builder_url(failure) + '/builds/' + build_number; |
| +} |
| +PolymerExpressions.prototype.step_url = function(failure, build_number) { |
| + return PolymerExpressions.prototype.build_url(failure, build_number) + '/steps/' + failure.step_name; |
| +} |
| +PolymerExpressions.prototype.stdio_url = function(failure, build_number) { |
| + return PolymerExpressions.prototype.step_url(failure, build_number) + '/logs/stdio'; |
| +} |
| + |
| +// This map is matches the test-results code: |
| +// https://code.google.com/p/chromium/codesearch#chromium/src/third_party/WebKit/Tools/TestResultServer/handlers/buildershandler.py&l=40 |
| +var MASTERS = [ |
|
ojan
2014/07/22 02:01:26
This is fine for now, but add a FIXME to use test-
|
| + {'name': 'ChromiumWin', 'url_name': 'chromium.win', 'groups': ['@ToT Chromium']}, |
| + {'name': 'ChromiumMac', 'url_name': 'chromium.mac', 'groups': ['@ToT Chromium']}, |
| + {'name': 'ChromiumLinux', 'url_name': 'chromium.linux', 'groups': ['@ToT Chromium']}, |
| + {'name': 'ChromiumChromiumOS', 'url_name': 'chromium.chromiumos', 'groups': ['@ToT ChromeOS']}, |
| + {'name': 'ChromiumGPU', 'url_name': 'chromium.gpu', 'groups': ['@ToT Chromium']}, |
| + {'name': 'ChromiumGPUFYI', 'url_name': 'chromium.gpu.fyi', 'groups': ['@ToT Chromium FYI']}, |
| + {'name': 'ChromiumWebkit', 'url_name': 'chromium.webkit', 'groups': ['@ToT Chromium', '@ToT Blink']}, |
| + {'name': 'ChromiumFYI', 'url_name': 'chromium.fyi', 'groups': ['@ToT Chromium FYI']}, |
| + {'name': 'GpuTryServer', 'url_name': 'tryserver.chromium.gpu', 'groups': ['TryServers']}, |
| + {'name': 'V8', 'url_name': 'client.v8', 'groups': ['@ToT V8']}, |
| +]; |
| + |
| +function masterNameFromURL(master_url) { |
| + var parts = master_url.trimRight('/').split('/') |
| + return parts[parts.length - 1] |
| +} |
| + |
| +// FIXME: test-results supports multiple 'groups' but it's an unused feature. |
| +// It's not clear that any given waterfall should ever be in more than one 'tree'. |
| +function groupForMaster(master_url) { |
| + var name = masterNameFromURL(master_url); |
| + for (var x = 0; x < MASTERS.length; ++x) { |
| + var record = MASTERS[x]; |
| + if (record['url_name'] == name) |
| + return record['groups'][0]; |
| + } |
| +} |
| + |
| +PolymerExpressions.prototype.flakiness_dashboard_url = function(test_name, step_name, master_url) { |
| + if (!test_name) |
| + return ''; |
| + if (step_name.indexOf('test') == -1) |
| + return ''; |
| + return "http://test-results.appspot.com/dashboards/flakiness_dashboard.html#" |
| + + "testType=" + step_name |
| + + "&tests=" + encodeURIComponent(test_name) |
| + + "&group=" + groupForMaster(master_url); |
|
ojan
2014/07/22 02:01:26
This also needs to be encoded. FWIW, with sugarjs
|
| +} |