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

Side by Side Diff: appengine/findit/waterfall/process_flake_swarming_task_result_pipeline.py

Issue 2491473002: [Findit] Implementing swarming task error detection (Closed)
Patch Set: Rebase Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
1 # Copyright 2016 The Chromium Authors. All rights reserved. 1 # Copyright 2016 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import logging 5 import logging
6 6
7 from model.flake.flake_swarming_task import FlakeSwarmingTask 7 from model.flake.flake_swarming_task import FlakeSwarmingTask
8 from model.flake.master_flake_analysis import DataPoint 8 from model.flake.master_flake_analysis import DataPoint
9 from model.flake.master_flake_analysis import MasterFlakeAnalysis 9 from model.flake.master_flake_analysis import MasterFlakeAnalysis
10 from waterfall.process_base_swarming_task_result_pipeline import ( 10 from waterfall.process_base_swarming_task_result_pipeline import (
(...skipping 26 matching lines...) Expand all
37 37
38 Returns: 38 Returns:
39 tests_statuses (dict): A dict of different statuses for each test. 39 tests_statuses (dict): A dict of different statuses for each test.
40 40
41 Currently for each test, we are saving number of total runs, 41 Currently for each test, we are saving number of total runs,
42 number of succeeded runs and number of failed runs. 42 number of succeeded runs and number of failed runs.
43 """ 43 """
44 44
45 tests_statuses = super(ProcessFlakeSwarmingTaskResultPipeline, 45 tests_statuses = super(ProcessFlakeSwarmingTaskResultPipeline,
46 self)._CheckTestsRunStatuses(output_json) 46 self)._CheckTestsRunStatuses(output_json)
47
48 # Should query by test name, because some test has dependencies which 47 # Should query by test name, because some test has dependencies which
49 # are also run, like TEST and PRE_TEST in browser_tests. 48 # are also run, like TEST and PRE_TEST in browser_tests.
49 tests_statuses = super(ProcessFlakeSwarmingTaskResultPipeline,
50 self)._CheckTestsRunStatuses(output_json)
51
50 tries = tests_statuses.get(test_name, {}).get('total_run', 0) 52 tries = tests_statuses.get(test_name, {}).get('total_run', 0)
51 successes = tests_statuses.get(test_name, {}).get('SUCCESS', 0) 53 successes = tests_statuses.get(test_name, {}).get('SUCCESS', 0)
52 54
53 if tries > 0: 55 if tries > 0:
54 pass_rate = successes * 1.0 / tries 56 pass_rate = successes * 1.0 / tries
55 else: 57 else:
56 pass_rate = -1 # Special value to indicate test is not existing. 58 pass_rate = -1 # Special value to indicate test is not existing.
57 59
58 master_flake_analysis = MasterFlakeAnalysis.GetVersion( 60 master_flake_analysis = MasterFlakeAnalysis.GetVersion(
59 master_name, builder_name, master_build_number, step_name, test_name, 61 master_name, builder_name, master_build_number, step_name, test_name,
60 version=version_number) 62 version=version_number)
61 logging.info( 63 logging.info(
62 'Updating MasterFlakeAnalysis data %s/%s/%s/%s/%s', 64 'Updating MasterFlakeAnalysis data %s/%s/%s/%s/%s',
63 master_name, builder_name, master_build_number, step_name, test_name) 65 master_name, builder_name, master_build_number, step_name, test_name)
66
64 logging.info('MasterFlakeAnalysis %s version %s', 67 logging.info('MasterFlakeAnalysis %s version %s',
65 master_flake_analysis, master_flake_analysis.version_number) 68 master_flake_analysis, master_flake_analysis.version_number)
66 69
67 data_point = DataPoint() 70 data_point = DataPoint()
68 data_point.build_number = build_number 71 data_point.build_number = build_number
69 data_point.pass_rate = pass_rate 72 data_point.pass_rate = pass_rate
70 master_flake_analysis.data_points.append(data_point) 73 master_flake_analysis.data_points.append(data_point)
71 74
72 flake_swarming_task = FlakeSwarmingTask.Get( 75 flake_swarming_task = FlakeSwarmingTask.Get(
73 master_name, builder_name, build_number, step_name, test_name) 76 master_name, builder_name, build_number, step_name, test_name)
(...skipping 18 matching lines...) Expand all
92 return (master_name, builder_name, build_number, step_name, 95 return (master_name, builder_name, build_number, step_name,
93 master_build_number, test_name, version_number) 96 master_build_number, test_name, version_number)
94 97
95 # Unused Argument - pylint: disable=W0612,W0613 98 # Unused Argument - pylint: disable=W0612,W0613
96 # Arguments number differs from overridden method - pylint: disable=W0221 99 # Arguments number differs from overridden method - pylint: disable=W0221
97 def _GetSwarmingTask(self, master_name, builder_name, build_number, 100 def _GetSwarmingTask(self, master_name, builder_name, build_number,
98 step_name, master_build_number, test_name, _): 101 step_name, master_build_number, test_name, _):
99 # Gets the appropriate kind of swarming task (FlakeSwarmingTask). 102 # Gets the appropriate kind of swarming task (FlakeSwarmingTask).
100 return FlakeSwarmingTask.Get(master_name, builder_name, build_number, 103 return FlakeSwarmingTask.Get(master_name, builder_name, build_number,
101 step_name, test_name) 104 step_name, test_name)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698