| Index: appengine/findit/model/flake/flake_swarming_task.py
|
| diff --git a/appengine/findit/model/flake/flake_swarming_task.py b/appengine/findit/model/flake/flake_swarming_task.py
|
| index 8c4f7803d2483d0db89d8ad84184de7c777188a5..63cd971141038f778f6365e78b115c392924474d 100644
|
| --- a/appengine/findit/model/flake/flake_swarming_task.py
|
| +++ b/appengine/findit/model/flake/flake_swarming_task.py
|
| @@ -6,38 +6,46 @@ import base64
|
|
|
| from google.appengine.ext import ndb
|
|
|
| -from common import constants
|
| -from model import analysis_status
|
| -from model.base_swarming_task import BaseSwarmingTask
|
| from model.base_build_model import BaseBuildModel
|
| +from model.base_swarming_task import BaseSwarmingTask
|
| +
|
| +
|
| +class FlakeSwarmingTaskData(ndb.Model):
|
| + task_id = ndb.StringProperty(indexed=False)
|
| + status = ndb.IntegerProperty(indexed=False)
|
| + error = ndb.JsonProperty(indexed=False)
|
| + created_time = ndb.DateTimeProperty(indexed=False)
|
| + started_time = ndb.DateTimeProperty(indexed=False)
|
| + completed_time = ndb.DateTimeProperty(indexed=False)
|
| + cache_hit = ndb.IntegerProperty(indexed=False)
|
| + number_of_iterations = ndb.IntegerProperty(indexed=False)
|
| + number_of_passes = ndb.IntegerProperty(indexed=False)
|
| +
|
|
|
| class FlakeSwarmingTask(BaseSwarmingTask, BaseBuildModel):
|
| """Represents a swarming task for a step w/candidate flaky tests.
|
| """
|
|
|
| @staticmethod
|
| - def _CreateSwarmingTaskId(
|
| - master_name, builder_name, build_number,
|
| - step_name, test_name): # pragma: no cover
|
| + def _CreateSwarmingTaskId(master_name, builder_name, build_number,
|
| + step_name, test_name): # pragma: no cover
|
| encoded_test_name = base64.urlsafe_b64encode(test_name)
|
| return '%s/%s/%s/%s/%s' % (master_name, builder_name,
|
| build_number, step_name, encoded_test_name)
|
|
|
| @staticmethod
|
| - def _CreateKey(
|
| - master_name, builder_name, build_number,
|
| - step_name, test_name): # pragma: no cover
|
| + def _CreateKey(master_name, builder_name, build_number,
|
| + step_name, test_name): # pragma: no cover
|
| return ndb.Key('FlakeSwarmingTask',
|
| FlakeSwarmingTask._CreateSwarmingTaskId(
|
| master_name, builder_name, build_number,
|
| step_name, test_name))
|
|
|
| @staticmethod
|
| - def Create(
|
| - master_name, builder_name, build_number,
|
| - step_name, test_name): # pragma: no cover
|
| + def Create(master_name, builder_name, build_number,
|
| + step_name, test_name): # pragma: no cover
|
| return FlakeSwarmingTask(key=FlakeSwarmingTask._CreateKey(
|
| - master_name, builder_name, build_number, step_name, test_name))
|
| + master_name, builder_name, build_number, step_name, test_name))
|
|
|
| @ndb.ComputedProperty
|
| def step_name(self):
|
| @@ -47,14 +55,25 @@ class FlakeSwarmingTask(BaseSwarmingTask, BaseBuildModel):
|
| def test_name(self):
|
| return base64.urlsafe_b64decode(self.key.pairs()[0][1].split('/')[4])
|
|
|
| -
|
| @staticmethod
|
| - def Get(
|
| - master_name, builder_name, build_number,
|
| - step_name, test_name): # pragma: no cover
|
| + def Get(master_name, builder_name, build_number,
|
| + step_name, test_name): # pragma: no cover
|
| return FlakeSwarmingTask._CreateKey(
|
| master_name, builder_name, build_number, step_name, test_name).get()
|
|
|
| + def GetFlakeSwarmingTaskData(self):
|
| + flake_swarming_task_data = FlakeSwarmingTaskData()
|
| + flake_swarming_task_data.task_id = self.task_id
|
| + flake_swarming_task_data.created_time = self.created_time
|
| + flake_swarming_task_data.started_time = self.started_time
|
| + flake_swarming_task_data.completed_time = self.completed_time
|
| + flake_swarming_task_data.error = self.error
|
| + flake_swarming_task_data.number_of_iterations = self.tries
|
| + flake_swarming_task_data.number_of_passes = self.successes
|
| + flake_swarming_task_data.status = self.status
|
| + # TODO(lijeffrey): Determine cache_hit.
|
| + return flake_swarming_task_data
|
| +
|
| # Number of runs the test passed.
|
| successes = ndb.IntegerProperty(default=0, indexed=False)
|
| # How many times the test was rerun.
|
|
|