Ejemplo n.º 1
0
    def test_get_schedules_no_previous_run(self):
        current_run = timeutils.isotime()

        epoch = timeutils.isotime(datetime.datetime(1970, 1, 1))
        filter_args = {'next_run_after': epoch,
                       'next_run_before': current_run}
        self.client.list_schedules(filter_args=filter_args).AndReturn([])
        self.mox.ReplayAll()
        self.scheduler.get_schedules(current_run=current_run)
        self.mox.VerifyAll()
Ejemplo n.º 2
0
    def test_get_schedules(self):
        timeutils.set_time_override()
        start_time = timeutils.isotime()
        timeutils.advance_time_seconds(30)
        end_time = timeutils.isotime()

        filter_args = {"next_run_after": start_time, "next_run_before": end_time}
        self.client.list_schedules(filter_args=filter_args).AndReturn([])
        self.mox.ReplayAll()
        self.scheduler.get_schedules(start_time, end_time)
        self.mox.VerifyAll()
Ejemplo n.º 3
0
    def test_get_schedules(self):
        timeutils.set_time_override()
        previous_run = timeutils.isotime()
        timeutils.advance_time_seconds(30)
        current_run = timeutils.isotime()

        filter_args = {'next_run_after': previous_run,
                       'next_run_before': current_run}
        self.client.list_schedules(filter_args=filter_args).AndReturn([])
        self.mox.ReplayAll()
        self.scheduler.get_schedules(previous_run, current_run)
        self.mox.VerifyAll()
Ejemplo n.º 4
0
    def test_get_schedules_no_previous_run(self):
        end_time = timeutils.isotime()

        filter_args = {"next_run_before": end_time}
        self.client.list_schedules(filter_args=filter_args).AndReturn([])
        self.mox.ReplayAll()
        self.scheduler.get_schedules(end_time=end_time)
        self.mox.VerifyAll()
Ejemplo n.º 5
0
    def get_schedules(self, previous_run=None, current_run=None):
        filter_args = {'next_run_before': current_run}

        # TODO(ameade): change api to not require both query params
        year_one = timeutils.isotime(datetime.datetime(1970, 1, 1))
        filter_args['next_run_after'] = previous_run or year_one

        return self.client.list_schedules(filter_args=filter_args)
Ejemplo n.º 6
0
def serialize_datetimes(data):
    """Serializes datetimes to strings in the top level values of a dict."""
    for (k, v) in data.iteritems():
        if isinstance(v, datetime.datetime):
            data[k] = timeutils.isotime(v)
        elif isinstance(v, list):
            for item in v:
                serialize_datetimes(item)
        elif isinstance(v, dict):
            serialize_datetimes(v)
Ejemplo n.º 7
0
    def test_run_loop(self):
        self.config(job_schedule_interval=5, group="scheduler")
        timeutils.set_time_override()
        current_time = timeutils.isotime()
        called = {"enqueue_jobs": False}

        def fake(end_time=None):  # assert only end_time kwarg is passed
            self.assertEqual(end_time, current_time)
            called["enqueue_jobs"] = True

        self.stubs.Set(self.scheduler, "enqueue_jobs", fake)
        fake_sleep = lambda x: None
        self.stubs.Set(time, "sleep", fake_sleep)

        self.scheduler.run(run_once=True)
        self.assertTrue(called["enqueue_jobs"])
Ejemplo n.º 8
0
    def _run_loop(self, run_once=False):
        next_run = None
        current_run = None

        while True:
            current_run = timeutils.isotime()
            next_run = time.time() + CONF.scheduler.job_schedule_interval

            # do work
            self.enqueue_jobs(end_time=current_run)

            # do nothing until next run
            seconds = next_run - time.time()
            if seconds > 0:
                time.sleep(seconds)
            else:
                LOG.warn(_('Scheduling of jobs took longer than expected.'))

            if run_once:
                break
Ejemplo n.º 9
0
 def test_get_heartbeat(self):
     request = unit_test_utils.get_fake_request(method='GET')
     response = self.controller.get_heartbeat(request, self.job_1['id'])
     heartbeat = response.get('heartbeat')
     self.assertEqual(heartbeat,
                      timeutils.isotime(self.job_1['updated_at']))
Ejemplo n.º 10
0
 def job_heartbeat(self, job_id):
     body = {'heartbeat': timeutils.isotime()}
     path = '/v1/jobs/%s/heartbeat' % job_id
     return self._do_request('PUT', path, body)