Exemplo n.º 1
0
 def test_pasync_queue_cleanup_before_job(self):
     old_now = datetime.datetime.now()
     job, job_infos = self.make_simpleOne(self.cqueue.get_job_infos())
     self.assertEquals(len(self.queue), 1)
     self.cqueue.cleanup_before_job(job_infos)
     self.assertEquals(len(self.queue), 1)
     self.cqueue.cleanup_before_job(job_infos, force=True)
     self.assertEquals(len(self.queue), 0)
     job, job_infos = self.make_simpleOne(self.cqueue.get_job_infos())
     self.assertEquals(len(self.queue), 1)
     dt = job.begin_after
     dt_minus_5 = dt - datetime.timedelta(minutes=5)
     dt_plus_5 = dt + datetime.timedelta(minutes=5)
     job_infos["begin_after"] = dt_minus_5
     self.cqueue.cleanup_before_job(job_infos, force=True)
     self.assertEquals(len(self.queue), 0)
     job, job_infos = self.make_simpleOne(self.cqueue.get_job_infos())
     set_now(dt_plus_5)
     job_infos["begin_after"] = dt
     self.cqueue.cleanup_before_job(job_infos, force=True)
     self.assertEquals(len(self.queue), 0)
     job_infos = self.cron_manager.get_job_infos()
     job, job_infos = self.make_simpleOne(job_infos)
     cron = job.args[5]
     ncron = crontab.Cron(**cron.dump())
     self.cqueue.cleanup_before_job(job_infos)
     self.assertEquals(len(self.queue), 1)
     ncron.name = u"othercron"
     job_infos["args"] = [ncron]
     self.cqueue.cleanup_before_job(job_infos)
     self.assertEquals(len(self.queue), 0)
     set_now(old_now)
Exemplo n.º 2
0
 def test_pasync_queue_is_job_pending_running_and_finished(self):
     transaction.commit()
     job_infos = self.cqueue.get_job_infos(job=test_job)
     job, job_infos = self.make_simpleOne(job_infos)
     self.assertTrue(self.cqueue.is_job_pending(job_infos))
     self.assertFalse(self.cqueue.is_job_running(job_infos))
     transaction.commit()
     wait_for_start(job)
     self.assertTrue(self.cqueue.is_job_running(job_infos))
     wait_for_result(job)
     self.assertTrue(self.cqueue.is_job_finished(job_infos))
     fjob = self.cqueue.get_job_present(job_infos)
     # run another job and verify that the related one is
     # this job and not the first run
     now = datetime.datetime.now() + datetime.timedelta(minutes=5)
     set_now(now)
     transaction.commit()
     job1_infos = self.cqueue.get_job_infos(job=test_job)
     job1, job1_infos = self.make_simpleOne(job1_infos)
     self.assertFalse(self.cqueue.is_job_running(job1_infos))
     transaction.commit()
     wait_for_start(job1)
     self.assertTrue(self.cqueue.is_job_running(job1_infos))
     wait_for_result(job1)
     self.assertTrue(self.cqueue.is_job_finished(job1_infos))
     # we cant determine which was first anyway, those are the same job
     ffjob = self.cqueue.get_job_in_agents(job_infos)
     sjob = self.cqueue.get_job_in_agents(job1_infos)
     self.assertTrue(ffjob.key == sjob.key)
     self.assertTrue(job1.key == sjob.key)
Exemplo n.º 3
0
 def test_pasync_startup_relaunch(self):
     """Test the startup event which needs to relaunch
     all jobs which are actived"""
     old_now = datetime.datetime.now()
     nextR = datetime.datetime(2008, 1, 1, 3, 1)
     set_now(pytz.UTC.localize(nextR))
     self.assertTrue(self.marker.marked)
     self.crontab.save()
     [self.queue.remove(j) for j in self.queue]
     e = QueueReady(self.queue)
     self.assertEquals(len(self.queue), 0)
     notify(e)
     dt1 = datetime.datetime(2008, 1, 1, 15, 0)
     set_now(pytz.UTC.localize(dt1))
     transaction.commit()
     e = QueueReady(self.queue)
     notify(e)
     dt2 = datetime.datetime(2008, 1, 1, 17, 0)
     set_now(pytz.UTC.localize(dt2))
     transaction.commit()
     notify(e)
     transaction.commit()
     self.assertEquals(len(self.queue), 1)
     [self.queue.remove(j) for j in self.queue]
     set_now(old_now)
     transaction.commit()
Exemplo n.º 4
0
 def test_cron_register_job(self):
     transaction.commit()
     now = pytz.UTC.localize(datetime.datetime(2008,1,4))
     set_now(now)
     transaction.commit()
     ba = pytz.UTC.localize(datetime.datetime(2008,1,4))
     r = self.cron_manager.register_job(begin_after = ba)
     self.assertTrue(r)
     # force a new run which will replace our cron job
     # as it will be runned sooner
     r = self.cron_manager.register_job(force=True)
     self.assertEquals(len(self.queue), 1)
     self.assertEquals(self.queue[0].begin_after, ba)
     self.cron_manager.remove_jobs()
     self.assertEquals(len(self.queue), 0)
     # if we deactivate the crontab or the cron
     # we will not have any job queued
     self.cron.activated = False
     r = self.cron_manager.register_job()
     self.assertEquals(len(self.queue), 0)
     self.assertTrue(r == False)
     self.assertEquals(len(self.queue), 0)
     self.cron.activated = True
     self.crontab.activated = False
     r = self.cron_manager.register_job()
     self.assertTrue(r == False)
     self.assertEquals(len(self.queue), 0) 
     # first resiter a job
     # then register a job with a smaller datetime delay
     self.crontab.activated = True
     r = self.cron_manager.register_job()
     self.cron.periodicity = u'1 23 * * *'
     r = self.cron_manager.register_job()
     self.cron.periodicity = u'1 22 * * *'
     r = self.cron_manager.register_job()
     job3 = self.queue[-1]
     self.assertTrue(self.cron.next, job3.begin_after)
     [self.queue.remove(j) for j in self.queue]
Exemplo n.º 5
0
 def test_cron_register_or_remove(self):
     transaction.commit()
     now = pytz.UTC.localize(datetime.datetime(2008,1,4))
     set_now(now)
     self.crontab.activated = self.cron.activated = True
     transaction.commit()
     ret = self.cron_manager.register_or_remove()
     job = self.queue[-1]
     self.assertTrue(self.queue[0] is job)
     self.cron.activated = False
     self.assertTrue(ret[0])
     ret = self.cron_manager.register_or_remove()
     self.assertEquals(len(self.queue), 0)
     self.assertTrue(not ret[0])
     self.cron.activated = True
     ret = self.cron_manager.register_or_remove()
     self.assertTrue(ret[0])
     job = self.queue[-1]
     self.assertTrue(self.queue[0] is job)
     self.cron.crontab.activated = False
     ret = self.cron_manager.register_or_remove()
     self.assertTrue(not ret[0])
     self.assertEquals(len(self.queue), 0)