Exemplo n.º 1
0
 def test_backoff(self):
     now = utcnow()
     two_hours_ago = now - datetime.timedelta(hours=2)
     self.assertTrue(models.should_schedule_next(two_hours_ago, now, "3600",
                                                 5))
     self.assertFalse(models.should_schedule_next(two_hours_ago, now,
                                                  "3600", 10))
Exemplo n.º 2
0
 def test_exact_time_with_day_change(self):
     now = utcnow().replace(hour=0, minute=1)
     previous = (now - datetime.timedelta(days=2)).replace(hour=23,
                                                           minute=59)
     schedule = "23:59".format(now.hour + 3)
     self.assertTrue(models.should_schedule_next(previous, now, schedule,
                                                 0))
Exemplo n.º 3
0
 def test_exact_time_that_needs_reschedule(self):
     now = utcnow()
     yesterday = now - datetime.timedelta(days=1)
     scheduled_datetime = now - datetime.timedelta(hours=3)
     scheduled_time = "{:02d}:00".format(scheduled_datetime.hour)
     self.assertTrue(models.should_schedule_next(yesterday, now,
                                                 scheduled_time, 0))
Exemplo n.º 4
0
 def test_exact_time_every_x_days_that_doesnt_need_reschedule(self):
     now = utcnow()
     four_days_ago = now - datetime.timedelta(days=2)
     three_day_interval = "259200"
     scheduled_datetime = now - datetime.timedelta(hours=3)
     scheduled_time = "{:02d}:00".format(scheduled_datetime.hour)
     self.assertFalse(models.should_schedule_next(four_days_ago, now, three_day_interval,
                                                 scheduled_time))
Exemplo n.º 5
0
 def test_exact_time_every_x_weeks_that_needs_reschedule(self):
     # Setup:
     #
     # 1) The query should run every 3 weeks on Tuesday
     # 2) The last time it ran was 3 weeks ago from this week's Thursday
     # 3) It is now Wednesday of this week
     #
     # Expectation: Even though less than 3 weeks have passed since the
     #              last run 3 weeks ago on Thursday, it's overdue since
     #              it should be running on Tuesdays.
     this_thursday = utcnow() + datetime.timedelta(days=list(calendar.day_name).index("Thursday") - utcnow().weekday())
     three_weeks_ago = this_thursday - datetime.timedelta(weeks=3)
     now = this_thursday - datetime.timedelta(days=1)
     three_week_interval = "1814400"
     scheduled_datetime = now - datetime.timedelta(hours=3)
     scheduled_time = "{:02d}:00".format(scheduled_datetime.hour)
     self.assertTrue(models.should_schedule_next(three_weeks_ago, now, three_week_interval,
                                                 scheduled_time, "Tuesday"))
Exemplo n.º 6
0
 def test_interval_schedule_that_needs_reschedule(self):
     now = datetime.datetime.now()
     two_hours_ago = now - datetime.timedelta(hours=2)
     self.assertTrue(models.should_schedule_next(two_hours_ago, now, "3600"))
Exemplo n.º 7
0
 def test_exact_time_that_needs_reschedule(self):
     now = datetime.datetime.now()
     yesterday = now - datetime.timedelta(days=1)
     schedule = "{:02d}:00".format(now.hour - 3)
     self.assertTrue(models.should_schedule_next(yesterday, now, schedule))
Exemplo n.º 8
0
 def test_exact_time_that_doesnt_need_reschedule(self):
     now = datetime.datetime.now()
     yesterday = (now - datetime.timedelta(days=1)).replace(hour=now.hour+3, minute=now.minute+1)
     schedule = "{:02d}:00".format(now.hour + 3)
     self.assertFalse(models.should_schedule_next(yesterday, now, schedule))
Exemplo n.º 9
0
 def test_next_iteration_overflow(self):
     now = utcnow()
     two_hours_ago = now - datetime.timedelta(hours=2)
     self.assertFalse(
         models.should_schedule_next(two_hours_ago, now, "3600", failures=32)
     )
Exemplo n.º 10
0
 def test_exact_time_that_doesnt_need_reschedule(self):
     now = date_parse("2015-10-16 20:10")
     yesterday = date_parse("2015-10-15 23:07")
     schedule = "23:00"
     self.assertFalse(models.should_schedule_next(yesterday, now, schedule))
Exemplo n.º 11
0
 def test_interval_schedule_that_doesnt_need_reschedule(self):
     now = utcnow()
     half_an_hour_ago = now - datetime.timedelta(minutes=30)
     self.assertFalse(
         models.should_schedule_next(half_an_hour_ago, now, "3600"))
Exemplo n.º 12
0
 def test_interval_schedule_that_needs_reschedule(self):
     now = utcnow()
     two_hours_ago = now - datetime.timedelta(hours=2)
     self.assertTrue(models.should_schedule_next(two_hours_ago, now,
                                                 "3600"))
Exemplo n.º 13
0
 def test_exact_time_every_x_days_with_day_change(self):
     now = utcnow().replace(hour=23, minute=59)
     previous = (now - datetime.timedelta(days=2)).replace(hour=0, minute=1)
     schedule = "23:58"
     three_day_interval = "259200"
     self.assertTrue(models.should_schedule_next(previous, now, three_day_interval, schedule))
Exemplo n.º 14
0
 def test_exact_time_that_needs_reschedule(self):
     now = datetime.datetime.now()
     yesterday = now - datetime.timedelta(days=1)
     schedule = "{:02d}:00".format(now.hour - 3)
     self.assertTrue(models.should_schedule_next(yesterday, now, schedule))
Exemplo n.º 15
0
 def test_interval_schedule_that_doesnt_need_reschedule(self):
     now = datetime.datetime.now()
     half_an_hour_ago = now - datetime.timedelta(minutes=30)
     self.assertFalse(models.should_schedule_next(half_an_hour_ago, now, "3600"))
Exemplo n.º 16
0
 def test_exact_time_with_day_change(self):
     now = utcnow().replace(hour=0, minute=1)
     previous = (now - datetime.timedelta(days=2)).replace(hour=23,
                                                           minute=59)
     schedule = "23:59".format(now.hour + 3)
     self.assertTrue(models.should_schedule_next(previous, now, schedule))
Exemplo n.º 17
0
 def test_exact_time_that_doesnt_need_reschedule(self):
     now = date_parse("2015-10-16 20:10")
     yesterday = date_parse("2015-10-15 23:07")
     schedule = "23:00"
     self.assertFalse(models.should_schedule_next(yesterday, now, schedule))
Exemplo n.º 18
0
 def test_exact_time_that_doesnt_need_reschedule(self):
     now = datetime.datetime.now()
     yesterday = (now - datetime.timedelta(days=1)).replace(
         hour=now.hour + 3, minute=now.minute + 1)
     schedule = "{:02d}:00".format(now.hour + 3)
     self.assertFalse(models.should_schedule_next(yesterday, now, schedule))