Add support for build category in BuildEvent
R=dsansome@chromium.org, sergeyberezin@chromium.org
BUG=596226
Review-Url: https://codereview.chromium.org/2108803004
Cr-Mirrored-From: https://chromium.googlesource.com/infra/infra
Cr-Mirrored-Commit: c454ffb119edc355e22430622213ff95dd4012d5
diff --git a/event_mon/monitoring.py b/event_mon/monitoring.py
index b896d58..d5e5547 100644
--- a/event_mon/monitoring.py
+++ b/event_mon/monitoring.py
@@ -272,7 +272,8 @@
goma_error=None,
goma_crash_report_id=None,
patch_url=None,
- bbucket_id=None):
+ bbucket_id=None,
+ category=None):
"""Compute a ChromeInfraEvent filled with a BuildEvent.
Arguments are identical to those in send_build_event(), please refer
@@ -345,6 +346,14 @@
except (ValueError, TypeError):
pass
+ if category:
+ event.build_event.category = {
+ 'cq': BuildEvent.CATEGORY_CQ,
+ 'cq_experimental': BuildEvent.CATEGORY_CQ_EXPERIMENTAL,
+ 'git_cl_try': BuildEvent.CATEGORY_GIT_CL_TRY,
+ }.get(category.lower(), BuildEvent.CATEGORY_UNKNOWN)
+
+
if event.build_event.step_name:
if event_type != 'STEP':
logging.error('step_name should be provided only for type "STEP", '
@@ -439,7 +448,8 @@
goma_error=None,
goma_crash_report_id=None,
patch_url=None,
- bbucket_id=None):
+ bbucket_id=None,
+ category=None):
"""Send a ChromeInfraEvent filled with a BuildEvent
Args:
@@ -468,6 +478,7 @@
goma_crash_report_id (string): id of goma crash report.
patch_url (string): URL of the patch that triggered build
bbucket_id (long): Buildbucket ID of the build.
+ category (string): Build category, e.g. cq or git_cl_try.
Returns:
success (bool): False if some error happened.
@@ -488,7 +499,8 @@
goma_error=goma_error,
goma_crash_report_id=goma_crash_report_id,
patch_url=patch_url,
- bbucket_id=bbucket_id).send()
+ bbucket_id=bbucket_id,
+ category=category).send()
def send_events(events):
diff --git a/event_mon/test/monitoring_test.py b/event_mon/test/monitoring_test.py
index 055122b..51316be 100644
--- a/event_mon/test/monitoring_test.py
+++ b/event_mon/test/monitoring_test.py
@@ -328,6 +328,35 @@
'BUILD', 'bot.host.name', 'build_name', bbucket_id='foo').log_event()
self.assertIsInstance(log_event, LogRequestLite.LogEventLite)
+ def test_get_build_event_with_category(self):
+ log_event = monitoring.get_build_event(
+ 'BUILD', 'bot.host.name', 'build_name',
+ category='git_cl_try').log_event()
+ self.assertIsInstance(log_event, LogRequestLite.LogEventLite)
+
+ # Check that source_extension deserializes to the right thing.
+ event = ChromeInfraEvent.FromString(log_event.source_extension)
+ self.assertTrue(event.HasField('build_event'))
+ self.assertEquals(
+ event.build_event.category, BuildEvent.CATEGORY_GIT_CL_TRY)
+
+ # Try unknown value. Should produce CATEGORY_UNKNOWN.
+ log_event = monitoring.get_build_event(
+ 'BUILD', 'bot.host.name', 'build_name', category='foobar').log_event()
+ self.assertIsInstance(log_event, LogRequestLite.LogEventLite)
+ event = ChromeInfraEvent.FromString(log_event.source_extension)
+ self.assertTrue(event.HasField('build_event'))
+ self.assertEquals(
+ event.build_event.category, BuildEvent.CATEGORY_UNKNOWN)
+
+ # Try empty value. Should not set category.
+ log_event = monitoring.get_build_event(
+ 'BUILD', 'bot.host.name', 'build_name', category='').log_event()
+ self.assertIsInstance(log_event, LogRequestLite.LogEventLite)
+ event = ChromeInfraEvent.FromString(log_event.source_extension)
+ self.assertTrue(event.HasField('build_event'))
+ self.assertFalse(event.build_event.HasField('category'))
+
def test_get_build_event_invalid_type(self):
# An invalid type is a critical error.
log_event = monitoring.get_build_event('INVALID_TYPE',