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

Side by Side Diff: appengine/findit/model/flake/flake_swarming_task.py

Issue 2369333002: [Findit] Capture versionized metadata for master_flake_analysis (Closed)
Patch Set: Fixing passing version through pipelines 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 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 base64 5 import base64
6 6
7 from google.appengine.ext import ndb 7 from google.appengine.ext import ndb
8 8
9 from common import constants 9 from model.base_build_model import BaseBuildModel
10 from model import analysis_status
11 from model.base_swarming_task import BaseSwarmingTask 10 from model.base_swarming_task import BaseSwarmingTask
12 from model.base_build_model import BaseBuildModel 11
13 12
14 class FlakeSwarmingTask(BaseSwarmingTask, BaseBuildModel): 13 class FlakeSwarmingTask(BaseSwarmingTask, BaseBuildModel):
15 """Represents a swarming task for a step w/candidate flaky tests. 14 """Represents a swarming task for a step w/candidate flaky tests.
16 """ 15 """
17 16
18 @staticmethod 17 @staticmethod
19 def _CreateSwarmingTaskId( 18 def _CreateSwarmingTaskId(master_name, builder_name, build_number,
20 master_name, builder_name, build_number, 19 step_name, test_name): # pragma: no cover
21 step_name, test_name): # pragma: no cover
22 encoded_test_name = base64.urlsafe_b64encode(test_name) 20 encoded_test_name = base64.urlsafe_b64encode(test_name)
23 return '%s/%s/%s/%s/%s' % (master_name, builder_name, 21 return '%s/%s/%s/%s/%s' % (master_name, builder_name,
24 build_number, step_name, encoded_test_name) 22 build_number, step_name, encoded_test_name)
25 23
26 @staticmethod 24 @staticmethod
27 def _CreateKey( 25 def _CreateKey(master_name, builder_name, build_number,
28 master_name, builder_name, build_number, 26 step_name, test_name): # pragma: no cover
29 step_name, test_name): # pragma: no cover
30 return ndb.Key('FlakeSwarmingTask', 27 return ndb.Key('FlakeSwarmingTask',
31 FlakeSwarmingTask._CreateSwarmingTaskId( 28 FlakeSwarmingTask._CreateSwarmingTaskId(
32 master_name, builder_name, build_number, 29 master_name, builder_name, build_number,
33 step_name, test_name)) 30 step_name, test_name))
34 31
35 @staticmethod 32 @staticmethod
36 def Create( 33 def Create(master_name, builder_name, build_number,
37 master_name, builder_name, build_number, 34 step_name, test_name): # pragma: no cover
38 step_name, test_name): # pragma: no cover
39 return FlakeSwarmingTask(key=FlakeSwarmingTask._CreateKey( 35 return FlakeSwarmingTask(key=FlakeSwarmingTask._CreateKey(
40 master_name, builder_name, build_number, step_name, test_name)) 36 master_name, builder_name, build_number, step_name, test_name))
41 37
42 @ndb.ComputedProperty 38 @ndb.ComputedProperty
43 def step_name(self): 39 def step_name(self):
44 return self.key.pairs()[0][1].split('/')[3] 40 return self.key.pairs()[0][1].split('/')[3]
45 41
46 @ndb.ComputedProperty 42 @ndb.ComputedProperty
47 def test_name(self): 43 def test_name(self):
48 return base64.urlsafe_b64decode(self.key.pairs()[0][1].split('/')[4]) 44 return base64.urlsafe_b64decode(self.key.pairs()[0][1].split('/')[4])
49 45
50
51 @staticmethod 46 @staticmethod
52 def Get( 47 def Get(master_name, builder_name, build_number,
53 master_name, builder_name, build_number, 48 step_name, test_name): # pragma: no cover
54 step_name, test_name): # pragma: no cover
55 return FlakeSwarmingTask._CreateKey( 49 return FlakeSwarmingTask._CreateKey(
56 master_name, builder_name, build_number, step_name, test_name).get() 50 master_name, builder_name, build_number, step_name, test_name).get()
57 51
52 def ResultsToJsonDict(self):
53 return {
54 'created_time': str(self.created_time),
stgao 2016/09/30 21:07:31 Convert to UTC timestamp instead?
stgao 2016/09/30 21:10:54 If use LocalStructuredProperty, no change for the
lijeffrey 2016/10/01 01:28:04 Done.
55 'started_time': str(self.started_time),
56 'completed_time': str(self.completed_time),
57 'build_number': self.build_number,
58 'number_of_iterations': self.tries,
59 'number_of_passes': self.successes
60 }
61
58 # Number of runs the test passed. 62 # Number of runs the test passed.
59 successes = ndb.IntegerProperty(default=0, indexed=False) 63 successes = ndb.IntegerProperty(default=0, indexed=False)
60 # How many times the test was rerun. 64 # How many times the test was rerun.
61 tries = ndb.IntegerProperty(default=0, indexed=False) 65 tries = ndb.IntegerProperty(default=0, indexed=False)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698