Skip to content

Commit

Permalink
Add tests for ensuring schedule changes are detected
Browse files Browse the repository at this point in the history
  • Loading branch information
brianmay authored and thedrow committed Apr 10, 2017
1 parent 53531f5 commit b27c0f1
Showing 1 changed file with 62 additions and 1 deletion.
63 changes: 62 additions & 1 deletion t/unit/app/test_beat.py
Expand Up @@ -8,7 +8,7 @@
from celery import uuid
from celery.beat import event_t
from celery.five import keys, string_t
from celery.schedules import schedule
from celery.schedules import schedule, crontab
from celery.utils.objects import Bunch


Expand Down Expand Up @@ -315,6 +315,23 @@ def test_ticks(self):
scheduler.update_from_dict(s)
assert scheduler.tick() == min(nums) - 0.010

def test_ticks_schedule_change(self):
# initialise schedule and check heap is not initialized
scheduler = mScheduler(app=self.app)
assert scheduler._heap is None

# set initial schedule and check heap is updated
schedule_5 = schedule(5)
scheduler.add(name='test_schedule', schedule=schedule_5)
scheduler.tick()
assert scheduler._heap[0].entry.schedule == schedule_5

# update schedule and check heap is updated
schedule_10 = schedule(10)
scheduler.add(name='test_schedule', schedule=schedule(10))
scheduler.tick()
assert scheduler._heap[0].entry.schedule == schedule_10

def test_schedule_no_remain(self):
scheduler = mScheduler(app=self.app)
scheduler.add(name='test_schedule_no_remain',
Expand Down Expand Up @@ -349,6 +366,50 @@ def test_populate_heap(self, _when):
scheduler.populate_heap()
assert scheduler._heap == [event_t(1, 5, scheduler.schedule['foo'])]

def create_schedule_entry(self, schedule):
entry = dict(
name='celery.unittest.add',
schedule=schedule,
app=self.app,
)
return beat.ScheduleEntry(**dict(entry))

def test_schedule_equal_schedule_vs_schedule_success(self):
scheduler = beat.Scheduler(app=self.app)
a = {'a': self.create_schedule_entry(schedule(5))}
b = {'a': self.create_schedule_entry(schedule(5))}
assert scheduler.schedules_equal(a, b)

def test_schedule_equal_schedule_vs_schedule_fail(self):
scheduler = beat.Scheduler(app=self.app)
a = {'a': self.create_schedule_entry(schedule(5))}
b = {'a': self.create_schedule_entry(schedule(10))}
assert not scheduler.schedules_equal(a, b)

def test_schedule_equal_crontab_vs_crontab_success(self):
scheduler = beat.Scheduler(app=self.app)
a = {'a': self.create_schedule_entry(crontab(minute=5))}
b = {'a': self.create_schedule_entry(crontab(minute=5))}
assert scheduler.schedules_equal(a, b)

def test_schedule_equal_crontab_vs_crontab_fail(self):
scheduler = beat.Scheduler(app=self.app)
a = {'a': self.create_schedule_entry(crontab(minute=5))}
b = {'a': self.create_schedule_entry(crontab(minute=10))}
assert not scheduler.schedules_equal(a, b)

def test_schedule_equal_crontab_vs_schedule_fail(self):
scheduler = beat.Scheduler(app=self.app)
a = {'a': self.create_schedule_entry(crontab(minute=5))}
b = {'a': self.create_schedule_entry(schedule(5))}
assert not scheduler.schedules_equal(a, b)

def test_schedule_equal_different_key_fail(self):
scheduler = beat.Scheduler(app=self.app)
a = {'a': self.create_schedule_entry(schedule(5))}
b = {'b': self.create_schedule_entry(schedule(5))}
assert not scheduler.schedules_equal(a, b)


def create_persistent_scheduler(shelv=None):
if shelv is None:
Expand Down

0 comments on commit b27c0f1

Please sign in to comment.