summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAlex Grönholm <alex.gronholm@nextday.fi>2018-01-03 22:25:57 +0200
committerAlex Grönholm <alex.gronholm@nextday.fi>2018-01-03 22:25:57 +0200
commit01dcea45ade6962f9f2aee8a552f7be39dc40af3 (patch)
tree0cbe806171bd5b32db9e221275e7600997d559a1 /tests
parentc385f948e9f5b4004023bca5cc19a40f3a19af75 (diff)
downloadapscheduler-01dcea45ade6962f9f2aee8a552f7be39dc40af3.tar.gz
Fixed CronTrigger with jitter producing fire times beyond end_date
Fixes #269.
Diffstat (limited to 'tests')
-rw-r--r--tests/test_triggers.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/test_triggers.py b/tests/test_triggers.py
index 6c81127..dffc71d 100644
--- a/tests/test_triggers.py
+++ b/tests/test_triggers.py
@@ -373,6 +373,15 @@ class TestCronTrigger(object):
next_fire_time = trigger.get_next_fire_time(None, start_date)
assert abs(next_fire_time - correct_next_date) <= timedelta(seconds=5)
+ def test_jitter_with_end_date(self, timezone):
+ now = timezone.localize(datetime(2017, 11, 12, 6, 55, 30))
+ end_date = timezone.localize(datetime(2017, 11, 12, 6, 56, 0))
+ trigger = CronTrigger(minute='*', jitter=5, end_date=end_date)
+
+ for _ in range(0, 100):
+ next_fire_time = trigger.get_next_fire_time(None, now)
+ assert next_fire_time is None or next_fire_time <= end_date
+
@pytest.mark.parametrize('values, expected', [
(dict(day='*/31'), "Error validating expression '\*/31': the step value \(31\) is higher "
"than the total range of the expression \(30\)"),
@@ -575,6 +584,15 @@ class TestIntervalTrigger(object):
next_fire_time = trigger.get_next_fire_time(None, start_date + epsilon)
assert abs(next_fire_time - correct_next_date) <= timedelta(seconds=5)
+ def test_jitter_with_end_date(self, timezone):
+ now = timezone.localize(datetime(2017, 11, 12, 6, 55, 58))
+ end_date = timezone.localize(datetime(2017, 11, 12, 6, 56, 0))
+ trigger = IntervalTrigger(seconds=5, jitter=5, end_date=end_date)
+
+ for _ in range(0, 100):
+ next_fire_time = trigger.get_next_fire_time(None, now)
+ assert next_fire_time is None or next_fire_time <= end_date
+
class TestAndTrigger(object):
@pytest.fixture