diff options
author | Alex Grönholm <alex.gronholm@nextday.fi> | 2018-01-03 22:25:57 +0200 |
---|---|---|
committer | Alex Grönholm <alex.gronholm@nextday.fi> | 2018-01-03 22:25:57 +0200 |
commit | 01dcea45ade6962f9f2aee8a552f7be39dc40af3 (patch) | |
tree | 0cbe806171bd5b32db9e221275e7600997d559a1 /tests | |
parent | c385f948e9f5b4004023bca5cc19a40f3a19af75 (diff) | |
download | apscheduler-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.py | 18 |
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 |