def testValidValues(self): self.assertEqual(2, job_state.Mean([1, 2, 3]))
def testNoValues(self): self.assertTrue(math.isnan(job_state.Mean([None])))
def _FormatAndPostBugCommentOnComplete(self): logging.debug('Processing outputs.') if self._IsTryJob(): # There is no comparison metric. title = '<b>%s Job complete. See results below.</b>' % _ROUND_PUSHPIN deferred.defer(_PostBugCommentDeferred, self.bug_id, '\n'.join((title, self.url)), _retry_options=RETRY_OPTIONS) return # There is a comparison metric. differences = [] result_values = {} if not self.use_execution_engine: differences = self.state.Differences() for change_a, change_b in differences: result_values.setdefault(change_a, self.state.ResultValues(change_a)) result_values.setdefault(change_b, self.state.ResultValues(change_b)) else: logging.debug('Execution Engine: Finding culprits.') context = task_module.Evaluate( self, event_module.SelectEvent(), evaluators.Selector( event_type='select', include_keys={'culprits', 'change', 'result_values'})) differences = [ (change_module.ReconstituteChange(change_a), change_module.ReconstituteChange(change_b)) for change_a, change_b in context.get('performance_bisection', {}).get('culprits', []) ] result_values = { change_module.ReconstituteChange(v.get('change')): v.get('result_values') for v in context.values() if 'change' in v and 'result_values' in v } if not differences: title = "<b>%s Couldn't reproduce a difference.</b>" % _ROUND_PUSHPIN deferred.defer(_PostBugCommentDeferred, self.bug_id, '\n'.join((title, self.url)), _retry_options=RETRY_OPTIONS) return # Collect the result values for each of the differences difference_details = [] commit_infos = [] commits_with_deltas = {} for change_a, change_b in differences: if change_b.patch: commit_info = change_b.patch.AsDict() else: commit_info = change_b.last_commit.AsDict() values_a = result_values[change_a] values_b = result_values[change_b] difference = _FormatDifferenceForBug(commit_info, values_a, values_b, self.state.metric) difference_details.append(difference) commit_infos.append(commit_info) if values_a and values_b: mean_delta = job_state.Mean(values_b) - job_state.Mean( values_a) commits_with_deltas[commit_info['git_hash']] = (mean_delta, commit_info) deferred.defer(_UpdatePostAndMergeDeferred, difference_details, commit_infos, commits_with_deltas, self.bug_id, self.tags, self.url, _retry_options=RETRY_OPTIONS)
def testInvalidValues(self): self.assertEqual(2, job_state.Mean([1, 2, 3, None]))
def MeanDelta(self): return job_state.Mean(self.values_b) - job_state.Mean(self.values_a)