tb3/dist-packages/tb3/scheduler.py | 2 tb3/tests/tb3/scheduler.py | 76 +++++++++++++------------------------ 2 files changed, 29 insertions(+), 49 deletions(-)
New commits: commit b0fa2467b9458a4d16f0a53573329ab8410dd49d Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Fri Aug 2 02:52:21 2013 +0200 more test tweaks diff --git a/tb3/tests/tb3/scheduler.py b/tb3/tests/tb3/scheduler.py index 0e766c1..a90d07b 100755 --- a/tb3/tests/tb3/scheduler.py +++ b/tb3/tests/tb3/scheduler.py @@ -33,12 +33,12 @@ class TestScheduler(unittest.TestCase): proposals = scheduler.get_proposals(time) self.assertEqual(len(proposals), expected_count) proposals = sorted(proposals, key = lambda proposal: -proposal.score) - self._show_proposals(proposals) + #self._show_proposals(proposals) if expect_in_order: for idx in range(len(proposals)-1): self.assertEqual(self.git('merge-base', '--is-ancestor', proposals[idx+1].commit, proposals[idx].commit, _ok_code=[0,1]).exit_code, 0) commit_msg = ''.join([line for line in self.git("log", "-1", "--pretty=%s", proposals[0].commit)]).strip('\n') - self.assertEqual(commit_msg, expected_message) + self.assertRegex(commit_msg, expected_message) return proposals[0] def setUp(self): (self.testdir, self.git) = helpers.createTestRepo() @@ -65,14 +65,14 @@ class TestHeadScheduler(TestScheduler): self.assertEqual(best_proposal.commit, self.head) self.assertEqual(best_proposal.score, 9) self.updater.set_scheduled(best_proposal.commit, 'box', datetime.timedelta(hours=2)) - best_proposal = self._get_best_proposal(self.scheduler, now, 'commit 5', 9, False) + best_proposal = self._get_best_proposal(self.scheduler, now, 'commit [45]', 9, False) self.assertEqual(best_proposal.scheduler, 'HeadScheduler') precommits = self.scheduler.count_commits(self.preb1, best_proposal.commit) postcommits = self.scheduler.count_commits(best_proposal.commit, self.head) self.assertLessEqual(abs(precommits-postcommits),1) self.updater.set_scheduled(best_proposal.commit, 'box', datetime.timedelta(hours=2)) last_proposal = best_proposal - best_proposal = self._get_best_proposal(self.scheduler, now, 'commit 2', 9, False) + best_proposal = self._get_best_proposal(self.scheduler, now, 'commit [27]', 9, False) def test_with_should_have_finished(self): #self._show_log(self.head) self.scheduler = tb3.scheduler.HeadScheduler('linux', 'master', self.testdir) @@ -82,15 +82,15 @@ class TestHeadScheduler(TestScheduler): self.assertEqual(best_proposal.scheduler, 'HeadScheduler') self.assertEqual(best_proposal.commit, self.head) self.assertEqual(best_proposal.score, 9) - self.updater.set_scheduled(best_proposal.commit, 'box', datetime.timedelta(hours=4)) + self.updater.set_scheduled(best_proposal.commit, 'box', datetime.timedelta(hours=1)) best_proposal = self._get_best_proposal(self.scheduler, intwohours, 'commit 5', 9, False) self.assertEqual(best_proposal.scheduler, 'HeadScheduler') precommits = self.scheduler.count_commits(self.preb1, best_proposal.commit) postcommits = self.scheduler.count_commits(best_proposal.commit, self.head) self.assertLessEqual(abs(precommits-postcommits),1) - self.updater.set_scheduled(best_proposal.commit, 'box', datetime.timedelta(hours=4)) + self.updater.set_scheduled(best_proposal.commit, 'box', datetime.timedelta(hours=1)) last_proposal = best_proposal - best_proposal = self._get_best_proposal(self.scheduler, intwohours, 'commit 3', 9, False) + best_proposal = self._get_best_proposal(self.scheduler, intwohours, 'commit 7', 9, False) self.assertEqual(best_proposal.scheduler, 'HeadScheduler') class TestBisectScheduler(TestScheduler): @@ -99,7 +99,7 @@ class TestBisectScheduler(TestScheduler): self.state.set_first_bad(self.postb2) self.state.set_last_bad(self.postb2) self.scheduler = tb3.scheduler.BisectScheduler('linux', 'master', self.testdir) - best_proposal = self._get_best_proposal(self.scheduler, datetime.datetime.now(), 'commit 4', 8, False) + best_proposal = self._get_best_proposal(self.scheduler, datetime.datetime.now(), 'commit [45]', 8, False) self.assertEqual(best_proposal.scheduler, 'BisectScheduler') self.git('merge-base', '--is-ancestor', self.preb1, best_proposal.commit) self.git('merge-base', '--is-ancestor', best_proposal.commit, self.postb2) @@ -107,7 +107,7 @@ class TestBisectScheduler(TestScheduler): postcommits = self.scheduler.count_commits(best_proposal.commit, self.postb2) self.assertLessEqual(abs(precommits-postcommits),1) self.updater.set_scheduled(best_proposal.commit, 'box', datetime.timedelta(hours=4)) - best_proposal = self._get_best_proposal(self.scheduler, datetime.datetime.now(), 'commit 6', 8, False) + best_proposal = self._get_best_proposal(self.scheduler, datetime.datetime.now(), 'commit [36]', 8, False) class TestMergeScheduler(TestScheduler): def test_get_proposal(self): @@ -129,9 +129,8 @@ class TestMergeScheduler(TestScheduler): self.assertEqual(len(proposals), 4) self.assertEqual(set((p.scheduler for p in proposals)), set(['HeadScheduler', 'BisectScheduler'])) proposal = proposals[0] - self.git('merge-base', '--is-ancestor', proposal.commit, self.preb2) - self.git('merge-base', '--is-ancestor', self.preb1, proposal.commit) - self.assertEqual(proposal.scheduler, 'BisectScheduler') + self.git('merge-base', '--is-ancestor', self.preb2, proposal.commit) + self.assertEqual(proposal.scheduler, 'HeadScheduler') if __name__ == '__main__': commit 5ef5a8554035a5113d43723d15a961914b1e3015 Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Fri Aug 2 02:50:33 2013 +0200 fixing bias in bisectscheduler * there are two kinds of errors: off-by one errors diff --git a/tb3/dist-packages/tb3/scheduler.py b/tb3/dist-packages/tb3/scheduler.py index 0f85b4b..962ca0d 100644 --- a/tb3/dist-packages/tb3/scheduler.py +++ b/tb3/dist-packages/tb3/scheduler.py @@ -92,7 +92,7 @@ class BisectScheduler(Scheduler): for commit in commits: proposals.append(self.make_proposal(1.0, commit[1])) for idx in range(len(proposals)): - proposals[idx].score *= (1-1/(float(idx)**2+1)) * (1-1/((float(idx-len(proposals)))**2+1)) + proposals[idx].score *= (1-1/(float(idx)**2+1)) * (1-1/((float(idx+1-len(proposals)))**2+1)) reduce_all = self.dampen_running_commits(commits, proposals, time) self.norm_results(proposals, reduce_all) return proposals commit 5ddbbefee4314fe9e8d316aab6ebcbf71a00b6bb Author: Bjoern Michaelsen <bjoern.michael...@canonical.com> Date: Fri Aug 2 02:15:30 2013 +0200 refactor tests diff --git a/tb3/tests/tb3/scheduler.py b/tb3/tests/tb3/scheduler.py index 91b77dd..0e766c1 100755 --- a/tb3/tests/tb3/scheduler.py +++ b/tb3/tests/tb3/scheduler.py @@ -27,8 +27,19 @@ class TestScheduler(unittest.TestCase): print() def _show_proposals(self, proposals): for proposal in proposals: - sys.stdout.write("%f %s" %(proposal.score, self.git("log", "-1", "--pretty=oneline", proposal.commit))) + sys.stdout.write("%f %s %s" %(proposal.score, proposal.scheduler, self.git("log", "-1", "--pretty=oneline", proposal.commit))) print() + def _get_best_proposal(self, scheduler, time, expected_message, expected_count, expect_in_order): + proposals = scheduler.get_proposals(time) + self.assertEqual(len(proposals), expected_count) + proposals = sorted(proposals, key = lambda proposal: -proposal.score) + self._show_proposals(proposals) + if expect_in_order: + for idx in range(len(proposals)-1): + self.assertEqual(self.git('merge-base', '--is-ancestor', proposals[idx+1].commit, proposals[idx].commit, _ok_code=[0,1]).exit_code, 0) + commit_msg = ''.join([line for line in self.git("log", "-1", "--pretty=%s", proposals[0].commit)]).strip('\n') + self.assertEqual(commit_msg, expected_message) + return proposals[0] def setUp(self): (self.testdir, self.git) = helpers.createTestRepo() self.state = tb3.repostate.RepoState('linux', 'master', self.testdir) @@ -48,65 +59,38 @@ class TestHeadScheduler(TestScheduler): #self._show_log(self.head) self.scheduler = tb3.scheduler.HeadScheduler('linux', 'master', self.testdir) self.state.set_last_good(self.preb1) - proposals = self.scheduler.get_proposals(datetime.datetime.now()) - self.assertEqual(len(proposals), 9) - proposals = sorted(proposals, key = lambda proposal: -proposal.score) - #self._show_proposals(proposals) - best_proposal = proposals[0] + now = datetime.datetime.now() + best_proposal = self._get_best_proposal(self.scheduler, now, 'commit 9', 9, True) self.assertEqual(best_proposal.scheduler, 'HeadScheduler') self.assertEqual(best_proposal.commit, self.head) self.assertEqual(best_proposal.score, 9) - for idx in range(len(proposals)-1): - self.assertEqual(self.git('merge-base', '--is-ancestor', proposals[idx+1].commit, proposals[idx].commit, _ok_code=[0,1]).exit_code, 0) - self.updater.set_scheduled(self.head, 'box', datetime.timedelta(hours=2)) - proposals = self.scheduler.get_proposals(datetime.datetime.now()) - self.assertEqual(len(proposals), 9) - #self._show_proposals(proposals) - proposals = sorted(proposals, key = lambda proposal: -proposal.score) - best_proposal = proposals[0] + self.updater.set_scheduled(best_proposal.commit, 'box', datetime.timedelta(hours=2)) + best_proposal = self._get_best_proposal(self.scheduler, now, 'commit 5', 9, False) self.assertEqual(best_proposal.scheduler, 'HeadScheduler') precommits = self.scheduler.count_commits(self.preb1, best_proposal.commit) postcommits = self.scheduler.count_commits(best_proposal.commit, self.head) self.assertLessEqual(abs(precommits-postcommits),1) self.updater.set_scheduled(best_proposal.commit, 'box', datetime.timedelta(hours=2)) last_proposal = best_proposal - proposals = self.scheduler.get_proposals(datetime.datetime.now()) - self.assertEqual(len(proposals), 9) - #self._show_proposals(proposals) - proposals = sorted(proposals, key = lambda proposal: -proposal.score) - best_proposal = proposals[0] - self.assertEqual(best_proposal.scheduler, 'HeadScheduler') + best_proposal = self._get_best_proposal(self.scheduler, now, 'commit 2', 9, False) def test_with_should_have_finished(self): #self._show_log(self.head) self.scheduler = tb3.scheduler.HeadScheduler('linux', 'master', self.testdir) self.state.set_last_good(self.preb1) - proposals = self.scheduler.get_proposals(datetime.datetime.now()) - self.assertEqual(len(proposals), 9) - proposals = sorted(proposals, key = lambda proposal: -proposal.score) - #self._show_proposals(proposals) - best_proposal = proposals[0] + intwohours = datetime.datetime.now()+datetime.timedelta(hours=2) + best_proposal = self._get_best_proposal(self.scheduler, intwohours, 'commit 9', 9, True) self.assertEqual(best_proposal.scheduler, 'HeadScheduler') self.assertEqual(best_proposal.commit, self.head) self.assertEqual(best_proposal.score, 9) - for idx in range(len(proposals)-1): - self.assertEqual(self.git('merge-base', '--is-ancestor', proposals[idx+1].commit, proposals[idx].commit, _ok_code=[0,1]).exit_code, 0) - self.updater.set_scheduled(self.head, 'box', datetime.timedelta(hours=4)) - proposals = self.scheduler.get_proposals(datetime.datetime.now()+datetime.timedelta(hours=2)) - self.assertEqual(len(proposals), 9) - #self._show_proposals(proposals) - proposals = sorted(proposals, key = lambda proposal: -proposal.score) - best_proposal = proposals[0] + self.updater.set_scheduled(best_proposal.commit, 'box', datetime.timedelta(hours=4)) + best_proposal = self._get_best_proposal(self.scheduler, intwohours, 'commit 5', 9, False) self.assertEqual(best_proposal.scheduler, 'HeadScheduler') precommits = self.scheduler.count_commits(self.preb1, best_proposal.commit) postcommits = self.scheduler.count_commits(best_proposal.commit, self.head) self.assertLessEqual(abs(precommits-postcommits),1) self.updater.set_scheduled(best_proposal.commit, 'box', datetime.timedelta(hours=4)) last_proposal = best_proposal - proposals = self.scheduler.get_proposals(datetime.datetime.now()+datetime.timedelta(hours=2)) - self.assertEqual(len(proposals), 9) - #self._show_proposals(proposals) - proposals = sorted(proposals, key = lambda proposal: -proposal.score) - best_proposal = proposals[0] + best_proposal = self._get_best_proposal(self.scheduler, intwohours, 'commit 3', 9, False) self.assertEqual(best_proposal.scheduler, 'HeadScheduler') class TestBisectScheduler(TestScheduler): @@ -115,18 +99,15 @@ class TestBisectScheduler(TestScheduler): self.state.set_first_bad(self.postb2) self.state.set_last_bad(self.postb2) self.scheduler = tb3.scheduler.BisectScheduler('linux', 'master', self.testdir) - proposals = self.scheduler.get_proposals(datetime.datetime.now()) - self.assertEqual(len(proposals), 8) - best_proposal = proposals[0] - for proposal in proposals: - if proposal.score > best_proposal.score: - best_proposal = proposal + best_proposal = self._get_best_proposal(self.scheduler, datetime.datetime.now(), 'commit 4', 8, False) self.assertEqual(best_proposal.scheduler, 'BisectScheduler') self.git('merge-base', '--is-ancestor', self.preb1, best_proposal.commit) self.git('merge-base', '--is-ancestor', best_proposal.commit, self.postb2) precommits = self.scheduler.count_commits(self.preb1, best_proposal.commit) postcommits = self.scheduler.count_commits(best_proposal.commit, self.postb2) self.assertLessEqual(abs(precommits-postcommits),1) + self.updater.set_scheduled(best_proposal.commit, 'box', datetime.timedelta(hours=4)) + best_proposal = self._get_best_proposal(self.scheduler, datetime.datetime.now(), 'commit 6', 8, False) class TestMergeScheduler(TestScheduler): def test_get_proposal(self): _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits