Beispiel #1
0
    def test_cron_make_up(self):
        task = make_task()
        queue = make_queue()
        now = datetime.utcnow()
        s = CronSchedule(encoding='o*d*w*h*m*s%s' % ((now.second - 1) % 60),
                         task=task,
                         queue=queue,
                         repetitions=0,
                         remaining=0,
                         make_up=False)
        s.base = now - timedelta(seconds=2)
        s.save()
        self._scheduler.flag.set()
        wait_until(lambda: s.instances.count() == 1, 3)

        now = datetime.utcnow()
        s = CronSchedule(encoding='o*d*w*h*m*s*',
                         task=task,
                         queue=queue,
                         repetitions=0,
                         remaining=0,
                         make_up=True)
        s.base = now - timedelta(seconds=5)
        s.save()
        self._scheduler.flag.set()
        wait_until(lambda: s.instances.count() == 6, 1)
Beispiel #2
0
 def test_pretty_name(self):
     make = lambda p: CronSchedule.create(self.t, self.q, p)
     self.assertEqual(make('HALFHOURLY').pretty_name(), 'HALFHOURLY')
     self.assertEqual(make('HOURLY').pretty_name(), 'HOURLY')
     self.assertEqual(make('DAILY').pretty_name(), 'DAILY')
     self.assertEqual(make('WEEKLY').pretty_name(), 'WEEKLY')
     self.assertEqual(make('MONTHLY').pretty_name(), 'MONTHLY')
Beispiel #3
0
 def test_pretty_name(self):
     make = lambda p: CronSchedule.create(self.t, self.q, p)
     self.assertEqual(make('HALFHOURLY').pretty_name(), 'HALFHOURLY')
     self.assertEqual(make('HOURLY').pretty_name(), 'HOURLY')
     self.assertEqual(make('DAILY').pretty_name(), 'DAILY')
     self.assertEqual(make('WEEKLY').pretty_name(), 'WEEKLY')
     self.assertEqual(make('MONTHLY').pretty_name(), 'MONTHLY')
Beispiel #4
0
 def test_bad_schedule(self):
     task = make_task()
     queue = make_queue()
     s = CronSchedule.create(task, queue, "o*d*w*h*m*s*")
     s.encoding = "gibberish"
     s.save()
     self._scheduler.flag.set()
     wait_until(lambda: CronSchedule.objects.get(pk=s.pk).deleted, 2)
Beispiel #5
0
 def test_bad_schedule(self):
     task = make_task()
     queue = make_queue()
     s = CronSchedule.create(task, queue, "o*d*w*h*m*s*")
     s.encoding = "gibberish"
     s.save()
     self._scheduler.flag.set()
     wait_until(lambda: CronSchedule.objects.get(pk=s.pk).deleted, 2)
Beispiel #6
0
 def test_validate(self):
     v = lambda s: CronSchedule.validate(s)[0]
     self.assertEqual(v('o1d1w1h1m1s1'), 'o1d1w1h1m1s1')
     self.assertTrue(re.match(r'^o\*d\*w\*h\*m\*s\d+$', v('')))
     self.assertEqual(v('d1w1h1m1s1'), 'o*d1w1h1m1s1')
     self.assertEqual(v(' d 1 , 2 s 1 '), 'o*d1,2w*h*m*s1')
     
     self.assertRaises(AssertionError, lambda: v('adf'))
     self.assertRaises(AssertionError, lambda: v('o1,13'))
Beispiel #7
0
def convert_schedule(st, task, queue):
    o = st.month if st.__month_r__ != CronSchedule.MONTHS else '*'
    d = st.day_of_month if st.__day_of_month_r__ != CronSchedule.DAYS else '*'
    w = st.day_of_week if st.__day_of_week_r__ != CronSchedule.DAYSOFWEEK else '*'
    h = st.hour if st.__hour_r__ != CronSchedule.HOURS else '*'
    m = st.minute if st.__minute_r__ != CronSchedule.MINUTES else '*'
    s = random.choice(CronSchedule.SECONDS)
    encoding = 'o%sd%sw%sh%sm%ss%s' % (o, d, w, h, m, s)
    return CronSchedule.create(task, queue, encoding)
Beispiel #8
0
def convert_schedule(st, task, queue):
    o = st.month if st.__month_r__ != CronSchedule.MONTHS else '*'
    d = st.day_of_month if st.__day_of_month_r__ != CronSchedule.DAYS else '*'
    w = st.day_of_week if st.__day_of_week_r__ != CronSchedule.DAYSOFWEEK else '*'
    h = st.hour if st.__hour_r__ != CronSchedule.HOURS else '*'
    m = st.minute if st.__minute_r__ != CronSchedule.MINUTES else '*'
    s = random.choice(CronSchedule.SECONDS)
    encoding = 'o%sd%sw%sh%sm%ss%s' % (o, d, w, h, m, s)
    return CronSchedule.create(task, queue, encoding)
Beispiel #9
0
    def test_validate(self):
        v = lambda s: CronSchedule.validate(s)[0]
        self.assertEqual(v('o1d1w1h1m1s1'), 'o1d1w1h1m1s1')
        self.assertTrue(re.match(r'^o\*d\*w\*h\*m\*s\d+$', v('')))
        self.assertEqual(v('d1w1h1m1s1'), 'o*d1w1h1m1s1')
        self.assertEqual(v(' d 1 , 2 s 1 '), 'o*d1,2w*h*m*s1')

        self.assertRaises(AssertionError, lambda: v('adf'))
        self.assertRaises(AssertionError, lambda: v('o1,13'))
Beispiel #10
0
 def test_update_schedule(self):
     task = make_task()
     queue = make_queue()
     s = CronSchedule.create(task, queue, 'o*d*w*h*m*s*', 10)
     self._scheduler.flag.set()
     wait_until(lambda: queue.count() == 2, 5)
     s.encoding = 'o*d*w*h*m*s4'
     s.save()
     self.assertRaises(Exception,
         lambda: wait_until(lambda: s.instances.count() > 3, 3))
Beispiel #11
0
 def test_update_schedule(self):
     task = make_task()
     queue = make_queue()
     s = CronSchedule.create(task, queue, 'o*d*w*h*m*s*', 10)
     self._scheduler.flag.set()
     wait_until(lambda: queue.count() == 2, 5)
     s.encoding = 'o*d*w*h*m*s4'
     s.save()
     self.assertRaises(
         Exception, lambda: wait_until(lambda: s.instances.count() > 3, 3))
Beispiel #12
0
 def test_cron(self):
     task = make_task()
     queue = make_queue()
     s = CronSchedule.create(task, queue, 'o*d*w*h*m*s*', 3)
     self._scheduler.flag.set()
     wait_until(lambda: queue.count() == 3, 8)
     enqueued = map(lambda i: i.enqueued, s.instances)
     def fold(acc, e):
         self.assertEqual(e - acc, timedelta(seconds=1))
         return e
     reduce(fold, enqueued)
Beispiel #13
0
 def test_reload(self):
     task = make_task()
     queue = make_queue()
     now = datetime.utcnow()
     s = CronSchedule.create(task, queue, 'o*d*w*h*m*s%s' %
         ((now.second - 1) % 60), 1)
     self._scheduler.flag.set()
     wait_until(lambda: self.scheduler.cronschedules.count() == 1, 5)
     CronSchedule.objects.get(pk=s.pk).reschedule('o*d*w*h*m*s*')
     self.scheduler.make_request(Request.RELOAD)
     self._scheduler.flag.set()
     wait_until(lambda: s.instances.count() == 1, 10)
Beispiel #14
0
 def test_reload(self):
     task = make_task()
     queue = make_queue()
     now = datetime.utcnow()
     s = CronSchedule.create(task, queue,
                             'o*d*w*h*m*s%s' % ((now.second - 1) % 60), 1)
     self._scheduler.flag.set()
     wait_until(lambda: self.scheduler.cronschedules.count() == 1, 5)
     CronSchedule.objects.get(pk=s.pk).reschedule('o*d*w*h*m*s*')
     self.scheduler.make_request(Request.RELOAD)
     self._scheduler.flag.set()
     wait_until(lambda: s.instances.count() == 1, 10)
Beispiel #15
0
    def test_cron(self):
        task = make_task()
        queue = make_queue()
        s = CronSchedule.create(task, queue, 'o*d*w*h*m*s*', 3)
        self._scheduler.flag.set()
        wait_until(lambda: queue.count() == 3, 8)
        enqueued = map(lambda i: i.enqueued, s.instances)

        def fold(acc, e):
            self.assertEqual(e - acc, timedelta(seconds=1))
            return e

        reduce(fold, enqueued)
Beispiel #16
0
 def test_cron_make_up(self):
     task = make_task()
     queue = make_queue()
     now = datetime.utcnow()
     s = CronSchedule(encoding='o*d*w*h*m*s%s' % ((now.second - 1) % 60),
         task=task, queue=queue, repetitions=0, remaining=0, make_up=False)
     s.base = now - timedelta(seconds=2)
     s.save()
     self._scheduler.flag.set()
     wait_until(lambda: s.instances.count() == 1, 3)
     
     now = datetime.utcnow()
     s = CronSchedule(encoding='o*d*w*h*m*s*',
         task=task, queue=queue, repetitions=0, remaining=0, make_up=True)
     s.base = now - timedelta(seconds=5)
     s.save()
     self._scheduler.flag.set()
     wait_until(lambda: s.instances.count() == 6, 1)