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

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

Issue 2536953002: [Findit] Add link to swarming tasks. (Closed)
Patch Set: Add change to template Created 4 years 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
« no previous file with comments | « appengine/findit/templates/flake/result.html ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 24 matching lines...) Expand all
35 test_name (string): Name of test of swarming rerun. 35 test_name (string): Name of test of swarming rerun.
36 version_number (int): The version to save analysis results and ` to. 36 version_number (int): The version to save analysis results and ` to.
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,
46 self)._CheckTestsRunStatuses(output_json)
stgao 2016/11/30 00:36:01 Good catch.
47 # Should query by test name, because some test has dependencies which 45 # Should query by test name, because some test has dependencies which
48 # are also run, like TEST and PRE_TEST in browser_tests. 46 # are also run, like TEST and PRE_TEST in browser_tests.
49 tests_statuses = super(ProcessFlakeSwarmingTaskResultPipeline, 47 tests_statuses = super(ProcessFlakeSwarmingTaskResultPipeline,
50 self)._CheckTestsRunStatuses(output_json) 48 self)._CheckTestsRunStatuses(output_json)
51 49
52 tries = tests_statuses.get(test_name, {}).get('total_run', 0) 50 tries = tests_statuses.get(test_name, {}).get('total_run', 0)
53 successes = tests_statuses.get(test_name, {}).get('SUCCESS', 0) 51 successes = tests_statuses.get(test_name, {}).get('SUCCESS', 0)
54 52
55 if tries > 0: 53 if tries > 0:
56 pass_rate = successes * 1.0 / tries 54 pass_rate = successes * 1.0 / tries
57 else: 55 else:
58 pass_rate = -1 # Special value to indicate test is not existing. 56 pass_rate = -1 # Special value to indicate test is not existing.
59 57
60 master_flake_analysis = MasterFlakeAnalysis.GetVersion( 58 master_flake_analysis = MasterFlakeAnalysis.GetVersion(
61 master_name, builder_name, master_build_number, step_name, test_name, 59 master_name, builder_name, master_build_number, step_name, test_name,
62 version=version_number) 60 version=version_number)
63 logging.info( 61 logging.info(
64 'Updating MasterFlakeAnalysis data %s/%s/%s/%s/%s', 62 'Updating MasterFlakeAnalysis data %s/%s/%s/%s/%s',
65 master_name, builder_name, master_build_number, step_name, test_name) 63 master_name, builder_name, master_build_number, step_name, test_name)
66 64
67 logging.info('MasterFlakeAnalysis %s version %s', 65 logging.info('MasterFlakeAnalysis %s version %s',
68 master_flake_analysis, master_flake_analysis.version_number) 66 master_flake_analysis, master_flake_analysis.version_number)
69 67
70 data_point = DataPoint()
71 data_point.build_number = build_number
72 data_point.pass_rate = pass_rate
73 master_flake_analysis.data_points.append(data_point)
74
75 flake_swarming_task = FlakeSwarmingTask.Get( 68 flake_swarming_task = FlakeSwarmingTask.Get(
76 master_name, builder_name, build_number, step_name, test_name) 69 master_name, builder_name, build_number, step_name, test_name)
77 flake_swarming_task.tries = tries 70 flake_swarming_task.tries = tries
78 flake_swarming_task.successes = successes 71 flake_swarming_task.successes = successes
79 flake_swarming_task.put() 72 flake_swarming_task.put()
80 73
74 data_point = DataPoint()
75 data_point.build_number = build_number
76 data_point.pass_rate = pass_rate
77 data_point.task_id = flake_swarming_task.task_id
78 master_flake_analysis.data_points.append(data_point)
79
81 results = flake_swarming_task.GetFlakeSwarmingTaskData() 80 results = flake_swarming_task.GetFlakeSwarmingTaskData()
82 # TODO(lijeffrey): Determine whether or not this flake swarming task 81 # TODO(lijeffrey): Determine whether or not this flake swarming task
83 # was a cache hit (already ran results for more iterations than were 82 # was a cache hit (already ran results for more iterations than were
84 # requested) and update results['cache_hit'] accordingly. 83 # requested) and update results['cache_hit'] accordingly.
85 master_flake_analysis.swarming_rerun_results.append(results) 84 master_flake_analysis.swarming_rerun_results.append(results)
86 master_flake_analysis.put() 85 master_flake_analysis.put()
87 86
88 return tests_statuses 87 return tests_statuses
89 88
90 def _GetArgs(self, master_name, builder_name, build_number, 89 def _GetArgs(self, master_name, builder_name, build_number,
91 step_name, *args): 90 step_name, *args):
92 master_build_number = args[0] 91 master_build_number = args[0]
93 test_name = args[1] 92 test_name = args[1]
94 version_number = args[2] 93 version_number = args[2]
95 return (master_name, builder_name, build_number, step_name, 94 return (master_name, builder_name, build_number, step_name,
96 master_build_number, test_name, version_number) 95 master_build_number, test_name, version_number)
97 96
98 # Unused Argument - pylint: disable=W0612,W0613 97 # Unused Argument - pylint: disable=W0612,W0613
99 # Arguments number differs from overridden method - pylint: disable=W0221 98 # Arguments number differs from overridden method - pylint: disable=W0221
100 def _GetSwarmingTask(self, master_name, builder_name, build_number, 99 def _GetSwarmingTask(self, master_name, builder_name, build_number,
101 step_name, master_build_number, test_name, _): 100 step_name, master_build_number, test_name, _):
102 # Gets the appropriate kind of swarming task (FlakeSwarmingTask). 101 # Gets the appropriate kind of swarming task (FlakeSwarmingTask).
103 return FlakeSwarmingTask.Get(master_name, builder_name, build_number, 102 return FlakeSwarmingTask.Get(master_name, builder_name, build_number,
104 step_name, test_name) 103 step_name, test_name)
OLDNEW
« no previous file with comments | « appengine/findit/templates/flake/result.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698