def testGetSimilarHistoricalTimings_Same(self): now = datetime.datetime.now() self._RecordTiming( { 'configuration': 'linux', 'benchmark': 'foo', 'story': 'bar1' }, now - datetime.timedelta(minutes=1), now) median = math_utils.Median([i for i in range(0, 10)]) std_dev = math_utils.StandardDeviation([i for i in range(0, 10)]) p90 = math_utils.Percentile([i for i in range(0, 10)], 0.9) for i in range(0, 10): j = self._RecordTiming( { 'configuration': 'linux', 'benchmark': 'foo', 'story': 'bar2' }, now - datetime.timedelta(seconds=i), now) timings, tags = timing_record.GetSimilarHistoricalTimings(j) self.assertEqual(['try', 'linux', 'foo', 'bar2'], tags) self.assertClose(median, timings[0].total_seconds()) self.assertClose(std_dev, timings[1].total_seconds()) self.assertClose(p90, timings[2].total_seconds())
def _Estimate(tags, completed_before=None): records = _QueryTimingRecords(tags, completed_before) if not records: if tags: return _Estimate(tags[:-1]) return None times = [(r.completed - r.started).total_seconds() for r in records] median = math_utils.Median(times) std_dev = math_utils.StandardDeviation(times) p90 = math_utils.Percentile(times, 0.9) timings = Timings(datetime.timedelta(seconds=median), datetime.timedelta(seconds=std_dev), datetime.timedelta(seconds=p90)) return EstimateResult(timings, tags)
def testPercentile_Interpolation(self): self.assertEqual(5.1, math_utils.Percentile(range(8), 0.7))
def testPercentile_RoundIndex(self): self.assertEqual(2, math_utils.Percentile(range(5), 0.5))
def testPercentile_Max(self): self.assertEqual(7, math_utils.Percentile(range(8), 1))
def testPercentile_Min(self): self.assertEqual(0, math_utils.Percentile(range(8), 0))