Chromium Code Reviews| Index: scripts/slave/send_analyze_event.py |
| diff --git a/scripts/slave/send_analyze_event.py b/scripts/slave/send_analyze_event.py |
| new file mode 100755 |
| index 0000000000000000000000000000000000000000..3dee89922903287402a54424fb4d6f5591019300 |
| --- /dev/null |
| +++ b/scripts/slave/send_analyze_event.py |
| @@ -0,0 +1,96 @@ |
| +#!/usr/bin/env python |
| +# Copyright 2016 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. |
| + |
| +"""Sends analyze results to event_mon. |
| + |
| +Needs to be run via tools/scripts/runit.py""" |
|
chrishall
2016/10/07 06:36:26
is it worth giving an example invocation?
Paweł Hajdan Jr.
2016/10/07 10:50:54
Recipe expectations contain some examples.
|
| + |
| + |
| +import argparse |
| +import json |
| +import sys |
| + |
| +from infra_libs import event_mon |
| + |
| + |
| +def inner_main(args): |
| + event = event_mon.Event(timestamp_kind='POINT') |
| + analyze_event = event.proto.analyze_event |
| + |
| + if args.master_name: |
| + analyze_event.master_name = args.master_name |
| + if args.builder_name: |
| + analyze_event.builder_name = args.builder_name |
| + if args.build_id: |
| + analyze_event.build_id = args.build_id |
| + if args.analyze_input: |
| + analyze_input = json.load(args.analyze_input) |
| + analyze_event.affected_files.extend(analyze_input['files']) |
| + analyze_event.input_test_targets.extend(analyze_input['test_targets']) |
| + analyze_event.input_compile_targets.extend(analyze_input[ |
| + 'additional_compile_targets']) |
| + if args.analyze_output: |
| + analyze_output = json.load(args.analyze_output) |
| + |
| + if 'test_targets' in analyze_output: |
| + analyze_event.output_test_targets.extend(analyze_output['test_targets']) |
| + if 'compile_targets' in analyze_output: |
| + analyze_event.output_compile_targets.extend( |
| + analyze_output['compile_targets']) |
| + |
| + if 'error' in analyze_output: |
| + analyze_event.result = analyze_event.AnalyzeResult.Value('ERROR') |
| + elif 'invalid_targets' in analyze_output: |
| + analyze_event.result = analyze_event.AnalyzeResult.Value( |
| + 'INVALID_TARGETS') |
| + analyze_event.invalid_targets.extend(analyze_output['invalid_targets']) |
| + elif analyze_output.get('status') == 'Found dependency': |
| + analyze_event.result = analyze_event.AnalyzeResult.Value( |
| + 'FOUND_DEPENDENCY') |
| + elif analyze_output.get('status') == 'Found dependency (all)': |
| + analyze_event.result = analyze_event.AnalyzeResult.Value( |
| + 'FOUND_DEPENDENCY_ALL') |
| + elif (analyze_output.get('status') == |
| + 'No compile necessary (all files ignored)'): |
| + analyze_event.result = analyze_event.AnalyzeResult.Value( |
| + 'ALL_FILES_IGNORED') |
| + elif (analyze_output.get('status') == |
| + 'Analyze disabled: matched exclusion'): |
| + analyze_event.result = analyze_event.AnalyzeResult.Value( |
| + 'MATCHED_EXCLUSION') |
| + elif (analyze_output.get('status') == |
| + 'No dependency'): |
| + analyze_event.result = analyze_event.AnalyzeResult.Value( |
| + 'NO_COMPILE_NECESSARY') |
| + |
| + print event.proto |
|
chrishall
2016/10/07 06:36:26
should this print be here?
is this print statemen
Paweł Hajdan Jr.
2016/10/07 10:50:54
I find it useful, at least for now.
|
| + |
| + if event.send(): |
| + return 0 |
| + |
| + return 1 |
| + |
| + |
| +def main(argv): |
| + parser = argparse.ArgumentParser() |
| + parser.add_argument('--master-name', help='Buildbot master name') |
| + parser.add_argument('--builder-name', help='Buildbot builder name') |
| + parser.add_argument('--build-id', help='Build ID (buildnumber)') |
| + parser.add_argument('--analyze-input', help='JSON input passed to analyze', |
| + type=argparse.FileType('r')) |
| + parser.add_argument('--analyze-output', help='JSON output from analyze', |
| + type=argparse.FileType('r')) |
| + event_mon.add_argparse_options(parser) |
| + args = parser.parse_args(argv) |
| + event_mon.process_argparse_options(args) |
| + |
| + try: |
| + return inner_main(args) |
| + finally: |
| + event_mon.close() |
| + |
| + |
| +if __name__ == '__main__': |
| + sys.exit(main(sys.argv[1:])) |