Exemple #1
0
    def test_dst_change(self):
        """
        Making sure that IntervalTrigger works during the ambiguous "fall-back" DST period.
        Note that you should explicitly compare datetimes as strings to avoid the internal datetime
        comparison which would test for equality in the UTC timezone.

        """
        eastern = pytz.timezone('US/Eastern')
        start_date = datetime(2013, 3, 1)  # Start within EDT
        trigger = IntervalTrigger(hours=1,
                                  start_date=start_date,
                                  timezone=eastern)

        datetime_edt = eastern.localize(datetime(2013, 3, 10, 1, 5),
                                        is_dst=False)
        correct_next_date = eastern.localize(datetime(2013, 3, 10, 3),
                                             is_dst=True)
        assert str(trigger.get_next_fire_time(
            None, datetime_edt)) == str(correct_next_date)

        datetime_est = eastern.localize(datetime(2013, 11, 3, 1, 5),
                                        is_dst=True)
        correct_next_date = eastern.localize(datetime(2013, 11, 3, 1),
                                             is_dst=False)
        assert str(trigger.get_next_fire_time(
            None, datetime_est)) == str(correct_next_date)
 def test_end_date(self, timezone):
     """Tests that the interval trigger won't return any datetimes past the set end time."""
     start_date = timezone.localize(datetime(2014, 5, 26))
     trigger = IntervalTrigger(minutes=5, start_date=start_date,
                               end_date=datetime(2014, 5, 26, 0, 7), timezone=timezone)
     assert trigger.get_next_fire_time(None, start_date + timedelta(minutes=2)) == \
         start_date.replace(minute=5)
     assert trigger.get_next_fire_time(None, start_date + timedelta(minutes=6)) is None
 def test_end_date(self, timezone):
     """Tests that the interval trigger won't return any datetimes past the set end time."""
     start_date = timezone.localize(datetime(2014, 5, 26))
     trigger = IntervalTrigger(minutes=5, start_date=start_date,
                               end_date=datetime(2014, 5, 26, 0, 7), timezone=timezone)
     assert trigger.get_next_fire_time(None, start_date + timedelta(minutes=2)) == \
         start_date.replace(minute=5)
     assert trigger.get_next_fire_time(None, start_date + timedelta(minutes=6)) is None
Exemple #4
0
    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
    def test_dst_change(self):
        """
        Making sure that IntervalTrigger works during the ambiguous "fall-back" DST period.
        Note that you should explicitly compare datetimes as strings to avoid the internal datetime
        comparison which would test for equality in the UTC timezone.

        """
        eastern = pytz.timezone('US/Eastern')
        start_date = datetime(2013, 3, 1)  # Start within EDT
        trigger = IntervalTrigger(hours=1, start_date=start_date, timezone=eastern)

        datetime_edt = eastern.localize(datetime(2013, 3, 10, 1, 5), is_dst=False)
        correct_next_date = eastern.localize(datetime(2013, 3, 10, 3), is_dst=True)
        assert str(trigger.get_next_fire_time(None, datetime_edt)) == str(correct_next_date)

        datetime_est = eastern.localize(datetime(2013, 11, 3, 1, 5), is_dst=True)
        correct_next_date = eastern.localize(datetime(2013, 11, 3, 1), is_dst=False)
        assert str(trigger.get_next_fire_time(None, datetime_est)) == str(correct_next_date)
    def test_jitter_produces_different_valid_results(self, timezone):
        trigger = IntervalTrigger(seconds=5, timezone=timezone, jitter=3)
        now = datetime.now(timezone)

        results = set()
        for _ in range(0, 100):
            next_fire_time = trigger.get_next_fire_time(None, now)
            results.add(next_fire_time)
            assert timedelta(seconds=2) <= (next_fire_time - now) <= timedelta(seconds=8)
        assert 1 < len(results)
    def test_jitter_dst_change(self, trigger_args, start_date, start_date_dst, correct_next_date):
        timezone = pytz.timezone('US/Eastern')
        epsilon = timedelta(seconds=1)
        start_date = timezone.localize(start_date, is_dst=start_date_dst)
        trigger = IntervalTrigger(timezone=timezone, start_date=start_date, jitter=5,
                                  **trigger_args)
        correct_next_date = timezone.localize(correct_next_date, is_dst=not start_date_dst)

        for _ in range(0, 100):
            next_fire_time = trigger.get_next_fire_time(None, start_date + epsilon)
            assert abs(next_fire_time - correct_next_date) <= timedelta(seconds=5)
Exemple #8
0
 def test_no_start_date(self, timezone):
     trigger = IntervalTrigger(seconds=2, timezone=timezone)
     now = datetime.now(timezone)
     assert (trigger.get_next_fire_time(None, now) -
             now) <= timedelta(seconds=2)
 def test_no_start_date(self, timezone):
     trigger = IntervalTrigger(seconds=2, timezone=timezone)
     now = datetime.now(timezone)
     assert (trigger.get_next_fire_time(None, now) - now) <= timedelta(seconds=2)