Ejemplo n.º 1
0
 def testAllAttemptsFail(self):
   quests = [quest_test.QuestCycle(
       quest_test.QuestFail(), quest_test.QuestFail(),
       quest_test.QuestFail2())]
   state = job_state.JobState(quests)
   state.AddChange(change_test.Change(123))
   expected_regexp = '7/10.*\nException: Expected error for testing.$'
   self.assertTrue(state.ScheduleWork())
   with self.assertRaisesRegexp(Exception, expected_regexp):
     self.assertFalse(state.ScheduleWork())
Ejemplo n.º 2
0
    def testDifferentWithMidpoint(self):
        quests = [
            quest_test.QuestByChange({
                change_test.Change(1):
                quest_test.QuestPass(),
                change_test.Change(9):
                quest_test.QuestFail(),
            })
        ]
        state = job_state.JobState(quests,
                                   comparison_mode=job_state.PERFORMANCE)
        state.AddChange(change_test.Change(1))
        state.AddChange(change_test.Change(9))

        state.ScheduleWork()
        state.Explore()

        # The Changes are different. Add the midpoint.
        expected = [
            change_test.Change(1),
            change_test.Change(5),
            change_test.Change(9)
        ]
        self.assertEqual(state._changes, expected)
        attempt_count_1 = len(state._attempts[change_test.Change(1)])
        attempt_count_2 = len(state._attempts[change_test.Change(5)])
        attempt_count_3 = len(state._attempts[change_test.Change(9)])
        self.assertEqual(attempt_count_1, attempt_count_2)
        self.assertEqual(attempt_count_2, attempt_count_3)
        self.assertEqual([], state.Differences())
Ejemplo n.º 3
0
  def testDifferentNoMidpoint(self):
    quests = [quest_test.QuestByChange({
        change_test.Change(1): quest_test.QuestPass(),
        change_test.Change(2): quest_test.QuestFail(),
    })]
    state = job_state.JobState(quests, comparison_mode=job_state.PERFORMANCE)
    state.AddChange(change_test.Change(1))
    state.AddChange(change_test.Change(2))

    state.ScheduleWork()
    state.Explore()

    # The Changes are different, but there's no midpoint. We're done.
    self.assertEqual(len(state._changes), 2)
    attempt_count_1 = len(state._attempts[change_test.Change(1)])
    attempt_count_2 = len(state._attempts[change_test.Change(2)])
    self.assertEqual(attempt_count_1, attempt_count_2)
Ejemplo n.º 4
0
    def testDifferentWithMidpoint(self):
        quests = [
            quest_test.QuestByChange({
                change_test.Change(1):
                quest_test.QuestPass(),
                change_test.Change(9):
                quest_test.QuestFail(),
            })
        ]
        state = job_state.JobState(quests,
                                   comparison_mode=job_state.PERFORMANCE)
        state.AddChange(change_test.Change(1))
        state.AddChange(change_test.Change(9))

        state.ScheduleWork()
        state.Explore()

        # The Changes are different. Add the speculated modpoints in a two-level
        # deep bisection tree, which include 3, 5 (the midpoint between 0 and 9),
        # and 7.
        expected = [
            change_test.Change(1),
            change_test.Change(3),
            change_test.Change(5),
            change_test.Change(7),
            change_test.Change(9),
        ]

        # View the whole diff in case of failure.
        self.maxDiff = None
        self.assertEqual(state._changes, expected)
        attempt_count_1 = len(state._attempts[change_test.Change(1)])
        attempt_count_2 = len(state._attempts[change_test.Change(3)])
        attempt_count_3 = len(state._attempts[change_test.Change(5)])
        attempt_count_4 = len(state._attempts[change_test.Change(7)])
        attempt_count_5 = len(state._attempts[change_test.Change(9)])
        self.assertEqual(attempt_count_1, attempt_count_2)
        self.assertEqual(attempt_count_2, attempt_count_3)
        self.assertEqual(attempt_count_3, attempt_count_4)
        self.assertEqual(attempt_count_4, attempt_count_5)
        self.assertEqual([], state.Differences())