Example #1
0
  def testRecord_Estimate_Recorded(self):
    now = datetime.datetime.now()
    j1 = self._Job(
        {
            'configuration': 'linux',
            'benchmark': 'foo',
            'story': 'bar'
        }, now - datetime.timedelta(minutes=5),
        now - datetime.timedelta(minutes=4))
    e1 = timing_record.GetSimilarHistoricalTimings(j1)
    timing_record.RecordJobTiming(j1)

    t1 = timing_record.TimingRecord.get_by_id(j1.job_id)

    self.assertIsNone(e1)
    self.assertIsNone(t1.estimate)

    j2 = self._RecordTiming(
        {
            'configuration': 'linux',
            'benchmark': 'foo',
            'story': 'bar'
        }, now - datetime.timedelta(minutes=3),
        now - datetime.timedelta(minutes=2))
    e2 = timing_record.GetSimilarHistoricalTimings(j2)
    timing_record.RecordJobTiming(j2)

    t2 = timing_record.TimingRecord.get_by_id(j2.job_id)

    self.assertEqual(
        int(e2[0][0].total_seconds()),
        int((t2.estimate - j2.started_time).total_seconds()))
Example #2
0
  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())
Example #3
0
  def testGetSimilarHistoricalTimings_NoConfiguration_MatchesAnyTry(self):
    now = datetime.datetime.now()

    self._RecordTiming(
        {
            'configuration': 'mac',
            'benchmark': 'foo1',
            'story': 'bar1'
        }, now - datetime.timedelta(seconds=14), now)

    self._RecordTiming(
        {
            'configuration': 'windows',
            'benchmark': 'foo1',
            'story': 'bar1'
        }, now - datetime.timedelta(seconds=12), now)

    self._RecordTiming(
        {
            'configuration': 'linux',
            'benchmark': 'foo2',
            'story': 'bar2'
        }, now - datetime.timedelta(seconds=10), now)

    j = job.Job.New((), ())
    j.arguments = {
        'configuration': 'coco',
        'benchmark': 'foo1',
        'story': 'bar1'
    }

    timings, tags = timing_record.GetSimilarHistoricalTimings(j)

    self.assertEqual(['try'], tags)
    self.assertEqual(12, timings[0].total_seconds())
Example #4
0
  def testGetSimilarHistoricalTimings_NoStory_MatchesBenchmark(self):
    now = datetime.datetime.now()

    self._RecordTiming(
        {
            'configuration': 'linux',
            'benchmark': 'foo1',
            'story': 'bar1'
        }, now - datetime.timedelta(hours=1), now)

    self._RecordTiming(
        {
            'configuration': 'linux',
            'benchmark': 'foo2',
            'story': 'bar1'
        }, now - datetime.timedelta(seconds=12), now)

    self._RecordTiming(
        {
            'configuration': 'linux',
            'benchmark': 'foo2',
            'story': 'bar2'
        }, now - datetime.timedelta(seconds=10), now)

    j = job.Job.New((), ())
    j.arguments = {
        'configuration': 'linux',
        'benchmark': 'foo2',
        'story': 'bar3'
    }

    timings, tags = timing_record.GetSimilarHistoricalTimings(j)

    self.assertEqual(['try', 'linux', 'foo2'], tags)
    self.assertEqual(11, timings[0].total_seconds())
Example #5
0
  def testRecord_Performance_Success(self):
    j = self._RecordTiming(
        {'configuration': 'linux', 'benchmark': 'foo', 'story': 'bar'},
        datetime.datetime.now() - datetime.timedelta(minutes=1),
        datetime.datetime.now(), comparison_mode=job_state.PERFORMANCE)

    _, tags = timing_record.GetSimilarHistoricalTimings(j)
    self.assertEqual(['performance', 'linux', 'foo', 'bar'], tags)
Example #6
0
  def _GetRunTimeEstimate(self):
    result = timing_record.GetSimilarHistoricalTimings(self)
    if not result:
      return {}

    timings = [t.total_seconds() for t in result.timings]
    return {
        'estimate': {'timings': timings, 'tags': result.tags},
        'queue_stats': scheduler.QueueStats(self.configuration)
    }
Example #7
0
  def testRecord_Try_Success(self):
    j = self._RecordTiming(
        {'configuration': 'linux', 'benchmark': 'foo', 'story': 'bar'},
        datetime.datetime.now() - datetime.timedelta(minutes=1),
        datetime.datetime.now())

    q = timing_record.TimingRecord.query()
    results = q.fetch()

    self.assertEqual(1, len(results))

    _, tags = timing_record.GetSimilarHistoricalTimings(j)
    self.assertEqual(['try', 'linux', 'foo', 'bar'], tags)