def testSchedulers(self): s1 = scheduler.Scheduler(name='quick', branch=None, treeStableTimer=30, builderNames=['quick']) s2 = scheduler.Scheduler(name="all", branch=None, treeStableTimer=5 * 60, builderNames=["a", "b"]) s3 = scheduler.Try_Userpass("try", ["a", "b"], port=9989, userpass=[("foo", "bar")]) s1a = scheduler.Scheduler(name='quick', branch=None, treeStableTimer=30, builderNames=['quick']) s2a = scheduler.Scheduler(name="all", branch=None, treeStableTimer=5 * 60, builderNames=["a", "b"]) s3a = scheduler.Try_Userpass("try", ["a", "b"], port=9989, userpass=[("foo", "bar")]) self.failUnless(s1 == s1) self.failUnless(s1 == s1a) self.failUnless(s1a in [s1, s2, s3]) self.failUnless(s2a in [s1, s2, s3]) self.failUnless(s3a in [s1, s2, s3])
def testCategory(self): s1 = scheduler.Scheduler("b1", "branch1", 2, ["a", "b"], categories=["categoryA", "both"]) self.addScheduler(s1) s2 = scheduler.Scheduler("b2", "branch1", 2, ["a", "b"], categories=["categoryB", "both"]) self.addScheduler(s2) c0 = Change("carol", ["important"], "branch1", branch="branch1", category="categoryA") s1.addChange(c0) s2.addChange(c0) c1 = Change("carol", ["important"], "branch1", branch="branch1", category="categoryB") s1.addChange(c1) s2.addChange(c1) c2 = Change("carol", ["important"], "branch1", branch="branch1") s1.addChange(c2) s2.addChange(c2) c3 = Change("carol", ["important"], "branch1", branch="branch1", category="both") s1.addChange(c3) s2.addChange(c3) self.failUnlessEqual(s1.importantChanges, [c0, c3]) self.failUnlessEqual(s2.importantChanges, [c1, c3]) s = scheduler.Scheduler("b3", "branch1", 2, ["a", "b"]) self.addScheduler(s) c0 = Change("carol", ["important"], "branch1", branch="branch1", category="categoryA") s.addChange(c0) c1 = Change("carol", ["important"], "branch1", branch="branch1", category="categoryB") s.addChange(c1) self.failUnlessEqual(s.importantChanges, [c0, c1])
def testOffBranch(self): self.basedir = 'scheduler/Scheduling/OffBranch' self.create_master() s = scheduler.Scheduler("b1", branch="branch1", treeStableTimer=2, builderNames=["a", "b"], fileIsImportant=self.isImportant) d = self.setSchedulers(s) def _addChange(ign, c): self.master.change_svc.addChange(c) return self.master.scheduler_manager.when_quiet() c0 = Change("carol", ["important"], "other branch", branch="other") d.addCallback(_addChange, c0) def _check(ign): important, unimportant = self.master.db.runInteractionNow( lambda t: self.master.db.scheduler_get_classified_changes( s.schedulerid, t)) self.failIf(important) self.failIf(unimportant) d.addCallback(_check)
def testBranch(self): s = scheduler.Scheduler("b1", "branch1", 2, ["a", "b"], fileIsImportant=self.isImportant) self.addScheduler(s) c0 = Change("carol", ["important"], "other branch", branch="other") s.addChange(c0) self.failIf(s.timer) self.failIf(s.importantChanges) c1 = Change("alice", ["important", "not important"], "some changes", branch="branch1") s.addChange(c1) c2 = Change("bob", ["not important", "boring"], "some more changes", branch="branch1") s.addChange(c2) c3 = Change("carol", ["important", "dull"], "even more changes", branch="branch1") s.addChange(c3) self.failUnlessEqual(s.importantChanges, [c1, c3]) self.failUnlessEqual(s.allChanges, [c1, c2, c3]) self.failUnless(s.timer) d = defer.Deferred() reactor.callLater(4, d.callback, None) d.addCallback(self._testBranch_1) return d
def testImportantChanges(self): self.basedir = 'scheduler/Scheduling/ImportantChanges' self.create_master() s = scheduler.Scheduler("b1", branch="branch1", treeStableTimer=2, builderNames=["a", "b"], fileIsImportant=self.isImportant) # Hijack run to prevent changes from being processed oldrun = s.run s.run = lambda: None d = self.setSchedulers(s) def _addChange(ign, c): self.master.change_svc.addChange(c) self.master.scheduler_manager.trigger() return self.master.db.runInteraction(s.classify_changes) c1 = Change("alice", ["important", "not important"], "some changes", branch="branch1") d.addCallback(_addChange, c1) c2 = Change("bob", ["not important", "boring"], "some more changes", branch="branch1") d.addCallback(_addChange, c2) c3 = Change("carol", ["important", "dull"], "even more changes", branch="branch1") d.addCallback(_addChange, c3) def _check(ign): important, unimportant = self.master.db.runInteractionNow( lambda t: self.master.db.scheduler_get_classified_changes( s.schedulerid, t)) important = [c.number for c in important] unimportant = [c.number for c in unimportant] self.failUnlessEqual(important, [c1.number, c3.number]) self.failUnlessEqual(unimportant, [c2.number]) s.run = oldrun d1 = s.run() d1.addCallback(lambda ign: self.master.scheduler_manager.trigger()) d1.addCallback( lambda ign: self.master.scheduler_manager.when_quiet()) return d1 d.addCallback(_check) d.addCallback(self._testBranch_1) return d