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

Unified Diff: appengine/findit/waterfall/process_flake_swarming_task_result_pipeline.py

Issue 2369333002: [Findit] Capture versionized metadata for master_flake_analysis (Closed)
Patch Set: Fixing nits Created 4 years, 2 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: appengine/findit/waterfall/process_flake_swarming_task_result_pipeline.py
diff --git a/appengine/findit/waterfall/process_flake_swarming_task_result_pipeline.py b/appengine/findit/waterfall/process_flake_swarming_task_result_pipeline.py
index 0eb8285f6e4e80b21d659998dbdb4780eb171b8c..e89ae89c12c9a887983b74cb0512d5204f0bb8c2 100644
--- a/appengine/findit/waterfall/process_flake_swarming_task_result_pipeline.py
+++ b/appengine/findit/waterfall/process_flake_swarming_task_result_pipeline.py
@@ -2,12 +2,13 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-from collections import defaultdict
+import logging
-from common.pipeline_wrapper import BasePipeline
+from collections import defaultdict
-from model.flake.master_flake_analysis import MasterFlakeAnalysis
from model.flake.flake_swarming_task import FlakeSwarmingTask
+from model.flake.master_flake_analysis import DataPoint
+from model.flake.master_flake_analysis import MasterFlakeAnalysis
from waterfall.process_base_swarming_task_result_pipeline import (
ProcessBaseSwarmingTaskResultPipeline)
@@ -23,7 +24,7 @@ class ProcessFlakeSwarmingTaskResultPipeline(
# Arguments number differs from overridden method - pylint: disable=W0221
def _CheckTestsRunStatuses(self, output_json, master_name,
builder_name, build_number, step_name,
- master_build_number, test_name):
+ master_build_number, test_name, version_number):
"""Checks result status for each test run and saves the numbers accordingly.
Args:
@@ -32,8 +33,9 @@ class ProcessFlakeSwarmingTaskResultPipeline(
builder_name (dict): Name of builder of swarming rerun.
build_number (int): Build Number of swarming rerun.
step_name (dict): Name of step of swarming rerun.
- master_build_number (int): Build number of corresponding mfa
- test_name (string): Name of test of swarming rerun
+ master_build_number (int): Build number of corresponding mfa.
+ test_name (string): Name of test of swarming rerun.
+ version_number (int): The version to save analysis results and ` to.
Returns:
tests_statuses (dict): A dict of different statuses for each test.
@@ -59,21 +61,35 @@ class ProcessFlakeSwarmingTaskResultPipeline(
successes = tests_statuses.get(test_name, {}).get('SUCCESS', 0)
if tries > 0:
- success_rate = successes * 1.0 / tries
+ pass_rate = successes * 1.0 / tries
else:
- success_rate = -1 # Special value to indicate test is not existing.
+ pass_rate = -1 # Special value to indicate test is not existing.
- master_flake_analysis = MasterFlakeAnalysis.Get(master_name, builder_name,
- master_build_number,
- step_name, test_name)
- flake_swarming_task = FlakeSwarmingTask.Get(
+ master_flake_analysis = MasterFlakeAnalysis.GetVersion(
+ master_name, builder_name, master_build_number, step_name, test_name,
+ version=version_number)
+ logging.info(
+ 'Updating MasterFlakeAnalysis data %s/%s/%s/%s/%s',
master_name, builder_name, build_number, step_name, test_name)
+ logging.info('MasterFlakeAnalysis %s version %s',
+ master_flake_analysis, master_flake_analysis.version_number)
- master_flake_analysis.build_numbers.append(build_number)
- master_flake_analysis.success_rates.append(success_rate)
+ data_point = DataPoint()
+ data_point.build_number = build_number
+ data_point.pass_rate = pass_rate
+ master_flake_analysis.data_points.append(data_point)
+
+ flake_swarming_task = FlakeSwarmingTask.Get(
+ master_name, builder_name, build_number, step_name, test_name)
flake_swarming_task.tries = tries
flake_swarming_task.successes = successes
flake_swarming_task.put()
+
+ results = flake_swarming_task.GetFlakeSwarmingTaskData()
+ # TODO(lijeffrey): Determine whether or not this flake swarming task
+ # was a cache hit (already ran results for more iterations than were
+ # requested) and update results['cache_hit'] accordingly.
+ master_flake_analysis.swarming_rerun_results.append(results)
master_flake_analysis.put()
return tests_statuses
@@ -81,12 +97,13 @@ class ProcessFlakeSwarmingTaskResultPipeline(
step_name, *args):
master_build_number = args[0]
test_name = args[1]
+ version_number = args[2]
return (master_name, builder_name, build_number, step_name,
- master_build_number, test_name)
+ master_build_number, test_name, version_number)
# Unused Argument - pylint: disable=W0612,W0613
def _GetSwarmingTask(self, master_name, builder_name, build_number,
- step_name, master_build_number, test_name):
+ step_name, master_build_number, test_name, _):
# Get the appropriate kind of Swarming Task (Flake).
return FlakeSwarmingTask.Get(master_name, builder_name,
build_number, step_name, test_name)

Powered by Google App Engine
This is Rietveld 408576698