Beispiel #1
0
    def makeScheduler(self,
                      firstBuildDuration=0,
                      firstBuildError=False,
                      exp_branch=None,
                      **kwargs):
        self.sched = sched = timed.Periodic(**kwargs)
        sched._reactor = self.reactor

        self.attachScheduler(self.sched, self.OBJECTID, self.SCHEDULERID)

        # keep track of builds in self.events
        self.events = []

        def addBuildsetForSourceStampsWithDefaults(reason,
                                                   sourcestamps,
                                                   waited_for=False,
                                                   properties=None,
                                                   builderNames=None,
                                                   **kw):
            self.assertIn('Periodic scheduler named', reason)
            # TODO: check branch
            isFirst = not self.events
            if self.reactor.seconds() == 0 and firstBuildError:
                raise TestException()
            self.events.append(f'B@{int(self.reactor.seconds())}')
            if isFirst and firstBuildDuration:
                d = defer.Deferred()
                self.reactor.callLater(firstBuildDuration, d.callback, None)
                return d
            return defer.succeed(None)

        sched.addBuildsetForSourceStampsWithDefaults = addBuildsetForSourceStampsWithDefaults

        # handle state locally
        self.state = {}

        def getState(k, default):
            return defer.succeed(self.state.get(k, default))

        sched.getState = getState

        def setState(k, v):
            self.state[k] = v
            return defer.succeed(None)

        sched.setState = setState

        return sched
    def makeScheduler(self, firstBuildDuration=0, exp_branch=None, **kwargs):
        self.sched = sched = timed.Periodic(**kwargs)
        self.attachScheduler(self.sched, self.OBJECTID, self.SCHEDULERID)

        # add a Clock to help checking timing issues
        self.clock = sched._reactor = task.Clock()

        # keep track of builds in self.events
        self.events = []

        def addBuildsetForSourceStampsWithDefaults(reason,
                                                   sourcestamps,
                                                   waited_for=False,
                                                   properties=None,
                                                   builderNames=None,
                                                   **kw):
            self.assertIn('Periodic scheduler named', reason)
            # TODO: check branch
            isFirst = (self.events == [])
            self.events.append('B@%d' % self.clock.seconds())
            if isFirst and firstBuildDuration:
                d = defer.Deferred()
                self.clock.callLater(firstBuildDuration, d.callback, None)
                return d
            else:
                return defer.succeed(None)

        sched.addBuildsetForSourceStampsWithDefaults = addBuildsetForSourceStampsWithDefaults

        # handle state locally
        self.state = {}

        def getState(k, default):
            return defer.succeed(self.state.get(k, default))

        sched.getState = getState

        def setState(k, v):
            self.state[k] = v
            return defer.succeed(None)

        sched.setState = setState

        return sched
Beispiel #3
0
    def makeScheduler(self, firstBuildDuration=0, exp_branch=None, **kwargs):
        self.sched = sched = timed.Periodic(**kwargs)
        self.attachScheduler(self.sched, self.OBJECTID)

        # add a Clock to help checking timing issues
        self.clock = sched._reactor = task.Clock()

        # keep track of builds in self.events
        self.events = []

        def addBuildsetForLatest(reason=None, branch=None):
            self.assertIn('Periodic scheduler named', reason)
            self.assertEqual(branch, exp_branch)
            isFirst = (self.events == [])
            self.events.append('B@%d' % self.clock.seconds())
            if isFirst and firstBuildDuration:
                d = defer.Deferred()
                self.clock.callLater(firstBuildDuration, d.callback, None)
                return d
            else:
                return defer.succeed(None)

        sched.addBuildsetForLatest = addBuildsetForLatest

        # handle state locally
        self.state = {}

        def getState(k, default):
            return defer.succeed(self.state.get(k, default))

        sched.getState = getState

        def setState(k, v):
            self.state[k] = v
            return defer.succeed(None)

        sched.setState = setState

        return sched
Beispiel #4
0
 def test_constructor_invalid(self):
     self.assertRaises(
         config.ConfigErrors, lambda: timed.Periodic(
             name='test', builderNames=['test'], periodicBuildTimer=-2))