Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1952)

Unified Diff: Tools/AutoSheriff/ui/filters.js

Issue 398823008: WIP: Add auto-sheriff.appspot.com code to Blink Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
+}

Powered by Google App Engine
This is Rietveld 408576698