Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 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 | |
| 3 # found in the LICENSE file. | |
| 4 | |
| 5 from google.appengine.ext import ndb | |
| 6 | |
| 7 from common.time_util import GetUTCNow | |
| 8 from model.versioned_model import VersionedModel | |
| 9 | |
| 10 class ConfidenceInformation(ndb.Model): | |
|
stgao
2016/10/07 22:52:08
One more line above.
chanli
2016/10/07 23:25:01
Done.
| |
| 11 correct = ndb.IntegerProperty() | |
| 12 total = ndb.IntegerProperty() | |
| 13 confidence = ndb.FloatProperty() | |
| 14 | |
| 15 # score is specific for confidence of heuristic results. | |
| 16 score = ndb.IntegerProperty(default=None) | |
| 17 | |
| 18 def ToDict(self): | |
| 19 dict_format = { | |
| 20 'correct': self.correct, | |
| 21 'total': self.total, | |
| 22 'confidence': self.confidence | |
|
stgao
2016/10/07 22:52:08
No need to add score here?
chanli
2016/10/07 23:25:01
This ToDict is for results, score is the key.
| |
| 23 } | |
| 24 return dict_format | |
| 25 | |
| 26 | |
| 27 class SuspectedCLConfidence(VersionedModel): | |
| 28 """Stores confidence data of different types of suspected CLs. | |
| 29 | |
| 30 Confidence data includes confidence scores and the numbers we used to get | |
| 31 those scores. | |
| 32 | |
| 33 The types of suspected CLs are: | |
| 34 1. CLs for compile failures found by Heuristic approach. | |
| 35 a. The score has been further refined by the top score of hints. | |
| 36 2. CLs for compile failures found by Try Job approach. | |
| 37 3. CLs for compile failures found by both approaches. | |
| 38 4. CLs for test failures found by Heuristic approach. | |
| 39 a. The score has been further refined by the top score of hints. | |
| 40 5. CLs for test failures found by Try Job approach. | |
| 41 6. CLs for test failures found by both approaches. | |
| 42 """ | |
| 43 | |
| 44 # Start date of querying suspected CLs. | |
| 45 # Note: the confidence scores will be for all the CLs up until end_date, | |
|
stgao
2016/10/07 22:52:08
Should this be updated after the change as we disc
chanli
2016/10/07 23:25:01
Done.
| |
| 46 # not just for CLs from start date to end_date. | |
| 47 start_date = ndb.DateTimeProperty(indexed=False) | |
| 48 | |
| 49 # End date of querying suspected CLs. | |
| 50 end_date = ndb.DateTimeProperty(indexed=True) | |
| 51 | |
| 52 # Time when the instance is updated. | |
| 53 updated_time = ndb.DateTimeProperty(indexed=True) | |
| 54 | |
| 55 # Confidence scores for CLs for compile failures found by Heuristic approach. | |
| 56 compile_heuristic = ndb.LocalStructuredProperty( | |
| 57 ConfidenceInformation, repeated=True) | |
| 58 | |
| 59 # Confidence score for CLs for compile failures found by Try Job approach. | |
| 60 compile_try_job = ndb.LocalStructuredProperty(ConfidenceInformation) | |
| 61 | |
| 62 # Confidence score for CLs for compile failures found by both approaches. | |
| 63 compile_heuristic_try_job = ndb.LocalStructuredProperty(ConfidenceInformation) | |
| 64 | |
| 65 # Confidence scores for CLs for test failures found by Heuristic approach. | |
| 66 test_heuristic = ndb.LocalStructuredProperty( | |
| 67 ConfidenceInformation, repeated=True) | |
| 68 | |
| 69 # Confidence score for CLs for test failures found by Try Job approach. | |
| 70 test_try_job = ndb.LocalStructuredProperty(ConfidenceInformation) | |
| 71 | |
| 72 # Confidence score for CLs for test failures found by both approaches. | |
| 73 test_heuristic_try_job = ndb.LocalStructuredProperty(ConfidenceInformation) | |
| 74 | |
| 75 @classmethod | |
| 76 def Get(cls, version=None): | |
| 77 confidences = cls.GetVersion(version=version) | |
| 78 return confidences or cls() if version is None else confidences | |
|
stgao
2016/10/07 22:52:08
Use VersionedModel.Create to create new instance.
chanli
2016/10/07 23:25:01
Done.
| |
| 79 | |
| 80 def Update( | |
| 81 self, start_date, end_date, | |
| 82 compile_heuristic, compile_try_job, compile_heuristic_try_job, | |
| 83 test_heuristic, test_try_job, test_heuristic_try_job): | |
| 84 | |
| 85 self.start_date = start_date | |
| 86 self.end_date = end_date | |
| 87 self.updated_time = GetUTCNow() | |
| 88 self.compile_heuristic = compile_heuristic | |
| 89 self.compile_try_job = compile_try_job | |
| 90 self.compile_heuristic_try_job = compile_heuristic_try_job | |
| 91 self.test_heuristic = test_heuristic | |
| 92 self.test_try_job = test_try_job | |
| 93 self.test_heuristic_try_job = test_heuristic_try_job | |
| 94 | |
| 95 if self.end_date <= end_date: | |
|
stgao
2016/10/07 22:52:08
Why we have this check?
chanli
2016/10/07 23:25:01
I use this so that we can only save one version ea
| |
| 96 self.put() | |
| 97 else: | |
| 98 self.Save() | |
| OLD | NEW |