[Libreoffice-commits] buildbot.git: 3 commits - tb3/dist-packages tb3/tests

Bjoern Michaelsen bjoern.michaelsen at canonical.com
Thu Aug 1 17:54:57 PDT 2013


 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.michaelsen at 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.michaelsen at 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.michaelsen at 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):


More information about the Libreoffice-commits mailing list