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

Side by Side Diff: appengine/findit/waterfall/flake/test/recursive_flake_pipeline_test.py

Issue 2130543004: Waterfall components of regression range finder. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: linted, tests Created 4 years, 5 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 unified diff | Download patch
OLDNEW
(Empty)
1 # Copyright 2015 The Chromium Authors. All rights reserved.
chanli 2016/07/26 17:41:05 2016
caiw 2016/07/26 20:19:44 Done.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 from common import constants
6 from common.pipeline_wrapper import pipeline_handlers
7 from model import analysis_status
8 from model.flake.master_flake_analysis import MasterFlakeAnalysis
9 from waterfall.flake import recursive_flake_pipeline
10 from waterfall.flake.recursive_flake_pipeline import NextBuildNumberPipeline
11 from waterfall.flake.recursive_flake_pipeline import RecursiveFlakePipeline
12 from waterfall.test import wf_testcase
13
14
15 class RecursiveFlakePipelineTest(wf_testcase.WaterfallTestCase):
16 app_module = pipeline_handlers._APP
17
18 def _CreateAndSaveMasterFlakeAnalysis(
19 self, master_name, builder_name, build_number,
20 step_name, test_name, status):
21 analysis = MasterFlakeAnalysis.Create(
22 master_name, builder_name, build_number, step_name, test_name)
23 analysis.status = status
24 analysis.put()
25
26 def testRecursiveFlakePipeline(self):
27 master_name = 'm'
28 builder_name = 'b'
29 master_build_number = 124
30 build_number = 124
31 run_build_number = 124
32 step_name = 's'
33 test_name = 't'
34 test_result_future = 'test_result_future'
35 queue_name = constants.DEFAULT_QUEUE
36 task_id = 'task_id'
37
38 self.MockPipeline(
39 recursive_flake_pipeline.TriggerFlakeSwarmingTaskPipeline,
40 'task_id',
41 expected_args=[master_name, builder_name,
42 run_build_number, step_name, [test_name]],
43 expected_kwargs={})
44 self.MockPipeline(
45 recursive_flake_pipeline.ProcessFlakeSwarmingTaskResultPipeline,
46 'test_result_future',
47 expected_args=[master_name, builder_name,
48 run_build_number, step_name, task_id,
49 master_build_number, test_name],
50 expected_kwargs={})
51 self.MockPipeline(
52 recursive_flake_pipeline.NextBuildNumberPipeline,
53 '',
54 expected_args=[master_name, builder_name, master_build_number,
55 step_name, test_name, test_result_future,
56 queue_name],
57 expected_kwargs={})
58
59 rfp = RecursiveFlakePipeline(master_name, builder_name, build_number,
60 step_name, test_name, master_build_number,
61 queue_name=queue_name)
62 rfp.start(queue_name=queue_name)
63 self.execute_queued_tasks()
64
65 def testNextBuildPipelineForNewRecursion(self):
66 master_name = 'm'
67 builder_name = 'b'
68 master_build_number = 124
69 build_number = 124
70 step_name = 's'
71 test_name = 't'
72 test_result_future = 'trf'
73 queue_name = constants.DEFAULT_QUEUE
74
75 self._CreateAndSaveMasterFlakeAnalysis(
76 master_name, builder_name, build_number, step_name,
77 test_name, status=analysis_status.PENDING
78 )
79 analysis = MasterFlakeAnalysis.Get(master_name, builder_name,
80 build_number, step_name, test_name)
81 analysis.build_numbers.append(124)
82 analysis.put()
83
84 queue_name = {'x': False}
85 # Unused argument (class method calls in python) - pylint: disable=W0613
86 def my_mocked_run(arg1, queue_name):
chanli 2016/07/26 17:41:05 I'm not sure if that'll work, but maybe you can tr
caiw 2016/07/26 20:19:44 Done.
87 queue_name['x'] = True
88
89 self.mock(
90 recursive_flake_pipeline.RecursiveFlakePipeline, 'start', my_mocked_run)
91 NextBuildNumberPipeline.run(
92 NextBuildNumberPipeline(), master_name, builder_name,
93 master_build_number, step_name, test_name, test_result_future,
94 queue_name)
95 self.assertTrue(queue_name['x'])
96
97 def testNextBuildPipelineForNewRecursionWhenDone(self):
98 master_name = 'm'
99 builder_name = 'b'
100 master_build_number = 124
101 build_number = 124
102 step_name = 's'
103 test_name = 't'
104 test_result_future = 'trf'
105 queue_name = constants.DEFAULT_QUEUE
106
107 self._CreateAndSaveMasterFlakeAnalysis(
108 master_name, builder_name, build_number, step_name,
109 test_name, status=analysis_status.PENDING
110 )
111 analysis = MasterFlakeAnalysis.Get(master_name, builder_name,
112 build_number, step_name, test_name)
113 for _ in range(10):
114 analysis.build_numbers.append(124)
115 analysis.put()
116
117 queue_name = {'x': False}
118
119 # Unused argument (class method calls in python) - pylint: disable=W0613
120 def my_mocked_run(arg1, queue_name):
121 queue_name['x'] = True # pragma: no cover
122
123 self.mock(
124 recursive_flake_pipeline.RecursiveFlakePipeline, 'start', my_mocked_run)
125 NextBuildNumberPipeline.run(
126 NextBuildNumberPipeline(), master_name, builder_name,
127 master_build_number, step_name, test_name, test_result_future,
128 queue_name)
129 self.assertFalse(queue_name['x'])
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698