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

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: Addressing comments 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
12
13 class FlakeSwarmingTaskData(ndb.Model):
14 task_id = ndb.StringProperty(indexed=True)
stgao 2016/10/01 01:36:59 No index for all of these.
lijeffrey 2016/10/01 02:51:45 Done.
15 status = ndb.IntegerProperty(indexed=False)
16 error = ndb.JsonProperty(indexed=False)
17 created_time = ndb.DateTimeProperty(indexed=True)
18 started_time = ndb.DateTimeProperty(indexed=False)
19 completed_time = ndb.DateTimeProperty(indexed=False)
20 cache_hit = ndb.IntegerProperty(indexed=False)
21 number_of_iterations = ndb.IntegerProperty(indexed=False)
22 number_of_passes = ndb.IntegerProperty(indexed=False)
23
13 24
14 class FlakeSwarmingTask(BaseSwarmingTask, BaseBuildModel): 25 class FlakeSwarmingTask(BaseSwarmingTask, BaseBuildModel):
15 """Represents a swarming task for a step w/candidate flaky tests. 26 """Represents a swarming task for a step w/candidate flaky tests.
16 """ 27 """
17 28
18 @staticmethod 29 @staticmethod
19 def _CreateSwarmingTaskId( 30 def _CreateSwarmingTaskId(master_name, builder_name, build_number,
20 master_name, builder_name, build_number, 31 step_name, test_name): # pragma: no cover
21 step_name, test_name): # pragma: no cover
22 encoded_test_name = base64.urlsafe_b64encode(test_name) 32 encoded_test_name = base64.urlsafe_b64encode(test_name)
23 return '%s/%s/%s/%s/%s' % (master_name, builder_name, 33 return '%s/%s/%s/%s/%s' % (master_name, builder_name,
24 build_number, step_name, encoded_test_name) 34 build_number, step_name, encoded_test_name)
25 35
26 @staticmethod 36 @staticmethod
27 def _CreateKey( 37 def _CreateKey(master_name, builder_name, build_number,
28 master_name, builder_name, build_number, 38 step_name, test_name): # pragma: no cover
29 step_name, test_name): # pragma: no cover
30 return ndb.Key('FlakeSwarmingTask', 39 return ndb.Key('FlakeSwarmingTask',
31 FlakeSwarmingTask._CreateSwarmingTaskId( 40 FlakeSwarmingTask._CreateSwarmingTaskId(
32 master_name, builder_name, build_number, 41 master_name, builder_name, build_number,
33 step_name, test_name)) 42 step_name, test_name))
34 43
35 @staticmethod 44 @staticmethod
36 def Create( 45 def Create(master_name, builder_name, build_number,
37 master_name, builder_name, build_number, 46 step_name, test_name): # pragma: no cover
38 step_name, test_name): # pragma: no cover
39 return FlakeSwarmingTask(key=FlakeSwarmingTask._CreateKey( 47 return FlakeSwarmingTask(key=FlakeSwarmingTask._CreateKey(
40 master_name, builder_name, build_number, step_name, test_name)) 48 master_name, builder_name, build_number, step_name, test_name))
41 49
42 @ndb.ComputedProperty 50 @ndb.ComputedProperty
43 def step_name(self): 51 def step_name(self):
44 return self.key.pairs()[0][1].split('/')[3] 52 return self.key.pairs()[0][1].split('/')[3]
45 53
46 @ndb.ComputedProperty 54 @ndb.ComputedProperty
47 def test_name(self): 55 def test_name(self):
48 return base64.urlsafe_b64decode(self.key.pairs()[0][1].split('/')[4]) 56 return base64.urlsafe_b64decode(self.key.pairs()[0][1].split('/')[4])
49 57
50
51 @staticmethod 58 @staticmethod
52 def Get( 59 def Get(master_name, builder_name, build_number,
53 master_name, builder_name, build_number, 60 step_name, test_name): # pragma: no cover
54 step_name, test_name): # pragma: no cover
55 return FlakeSwarmingTask._CreateKey( 61 return FlakeSwarmingTask._CreateKey(
56 master_name, builder_name, build_number, step_name, test_name).get() 62 master_name, builder_name, build_number, step_name, test_name).get()
57 63
64 def GetFlakeSwarmingTaskData(self):
65 flake_swarming_task_data = FlakeSwarmingTaskData()
66 flake_swarming_task_data.task_id = self.task_id
67 flake_swarming_task_data.created_time = self.created_time
68 flake_swarming_task_data.started_time = self.started_time
69 flake_swarming_task_data.completed_time = self.completed_time
70 flake_swarming_task_data.error = self.error
71 flake_swarming_task_data.number_of_iterations = self.tries
72 flake_swarming_task_data.number_of_passes = self.successes
73 flake_swarming_task_data.status = self.status
74 # TODO(lijeffrey): Determine cache_hit.
75 return flake_swarming_task_data
76
58 # Number of runs the test passed. 77 # Number of runs the test passed.
59 successes = ndb.IntegerProperty(default=0, indexed=False) 78 successes = ndb.IntegerProperty(default=0, indexed=False)
60 # How many times the test was rerun. 79 # How many times the test was rerun.
61 tries = ndb.IntegerProperty(default=0, indexed=False) 80 tries = ndb.IntegerProperty(default=0, indexed=False)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698