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

Unified Diff: Tools/AutoSheriff/gatekeeper_extras.py

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/gatekeeper_extras.py
diff --git a/Tools/AutoSheriff/gatekeeper_extras.py b/Tools/AutoSheriff/gatekeeper_extras.py
new file mode 100644
index 0000000000000000000000000000000000000000..553d8b9bf1ef73c4afb5923b1566ca0213bad700
--- /dev/null
+++ b/Tools/AutoSheriff/gatekeeper_extras.py
@@ -0,0 +1,92 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# FIXME: Everything in this file belongs in gatekeeper_ng_config.py
+
+import logging
+
+# Python logging is stupidly verbose to configure.
+def setup_logging():
+ logger = logging.getLogger(__name__)
+ logger.setLevel(logging.DEBUG)
+ handler = logging.StreamHandler()
+ handler.setLevel(logging.DEBUG)
+ formatter = logging.Formatter('%(levelname)s: %(message)s')
+ handler.setFormatter(formatter)
+ logger.addHandler(handler)
+ return logger, handler
+
+
+log, logging_handler = setup_logging()
+
+
+def excluded_builders(master_config):
+ return master_config[0].get('*', {}).get('excluded_builders', set())
+
+
+# FIXME: This is currently baked into:
+# https://chromium.googlesource.com/chromium/tools/build/+/master/scripts/slave/gatekeeper_launch.py
+# http://crbug.com/394961
ojan 2014/07/22 02:01:25 We should change the flakiness dashboard concept o
+MASTER_CONFIG = {
+ 'chromium-status': [
+ 'chromium',
+ 'chromium.chrome',
+ 'chromium.chromiumos',
+ 'chromium.gpu',
+ 'chromium.linux',
+ 'chromium.mac',
+ 'chromium.memory',
+ 'chromium.win',
+ ],
+ 'blink-status': [
+ 'chromium.webkit',
+ ],
+}
+
+
+def tree_for_master(master_name):
+ for tree_name, master_names in MASTER_CONFIG.items():
+ if master_name in master_names:
+ return tree_name
+
+
+def would_close_tree(master_config, builder_name, step_name):
+ # FIXME: Section support should be removed:
+ master_config = master_config[0]
+ builder_config = master_config.get(builder_name, {})
+ if not builder_config:
+ builder_config = master_config.get('*', {})
+
+ # close_tree is currently unused in gatekeeper.json but planned to be.
+ close_tree = builder_config.get('close_tree', True)
+ if not close_tree:
+ log.debug('close_tree is false')
+ return False
+
+ # Excluded steps never close.
+ excluded_steps = set(builder_config.get('excluded_steps', []))
+ if step_name in excluded_steps:
+ log.debug('%s is an excluded_step' % step_name)
+ return False
+
+ # See gatekeeper_ng_config.py for documentation of
+ # the config format.
+ # forgiving/closing controls if mails are sent on close.
+ # steps/optional controls if step-absence indicates failure.
+ # this function assumes the step is present and failing
+ # and thus doesn't care between these 4 types:
+ closing_steps = (builder_config.get('forgiving_steps', set()) |
+ builder_config.get('forgiving_optional', set()) |
+ builder_config.get('closing_steps', set()) |
+ builder_config.get('closing_optional', set()))
+
+ # A '*' in any of the above types means it applies to all steps.
+ if '*' in closing_steps:
+ return True
+
+ if step_name in closing_steps:
+ return True
+
+ log.debug('%s not in closing_steps: %s' % (step_name, closing_steps))
+ return False

Powered by Google App Engine
This is Rietveld 408576698