def expire_overdue_runs(): overdue_runs = Run.overdue_runs() for overdue_run in overdue_runs: overdue_run.update_status(Run.STATUS.expired) next_run = RunQueue.dequeue(overdue_run.runnable.contact_person_id) if next_run: schedule_run_for(next_run.runnable) next_run.update_status(RunQueue.STATUS.started)
def expire_overdue_runs(): overdue_runs = Run.overdue_runs() for overdue_run in overdue_runs: overdue_run.status = Run.STATUS.expired overdue_run.save() next_run = RunQueue.dequeue(overdue_run.node.contact_person_id) if next_run: schedule_run_for(next_run.node) next_run.status = RunQueue.STATUS.started next_run.save()
def test_should_not_get_completed_expired_or_cancelled_runs_when_getting_expired_runs(self): expired_run_date = datetime.date(1990, 1, 1) RunFactory(status=Run.STATUS.completed, node=DistributionPlanNodeFactory( delivery_date=expired_run_date)) RunFactory(status=Run.STATUS.expired, node=DistributionPlanNodeFactory( delivery_date=expired_run_date)) RunFactory(status=Run.STATUS.cancelled, node=DistributionPlanNodeFactory( delivery_date=expired_run_date)) overdue_runs = Run.overdue_runs() self.assertEqual(len(overdue_runs), 0)
def test_should_not_get_completed_expired_or_cancelled_runs_when_getting_expired_runs( self): expired_run_date = datetime.date(1990, 1, 1) RunFactory( status=Run.STATUS.completed, runnable=DeliveryNodeFactory(delivery_date=expired_run_date)) RunFactory( status=Run.STATUS.expired, runnable=DeliveryNodeFactory(delivery_date=expired_run_date)) RunFactory( status=Run.STATUS.cancelled, runnable=DeliveryNodeFactory(delivery_date=expired_run_date)) overdue_runs = Run.overdue_runs() self.assertEqual(len(overdue_runs), 0)
def test_should_get_over_due_runs(self): delivery_status_check_delay = datetime.timedelta(days=settings.DELIVERY_STATUS_CHECK_DELAY) max_allowed_reply_period = datetime.timedelta(days=settings.MAX_ALLOWED_REPLY_PERIOD) one_day = datetime.timedelta(days=1) today = datetime.datetime.combine(datetime.date.today(), datetime.datetime.min.time()) expired_run_date = today - delivery_status_check_delay - max_allowed_reply_period - one_day valid_run_date = today - delivery_status_check_delay - max_allowed_reply_period + one_day expired_run = RunFactory(status=Run.STATUS.scheduled, node=DistributionPlanNodeFactory( delivery_date=expired_run_date)) RunFactory(status=Run.STATUS.scheduled, node=DistributionPlanNodeFactory( delivery_date=valid_run_date)) overdue_runs = Run.overdue_runs() self.assertEqual(len(overdue_runs), 1) self.assertEqual(overdue_runs[0], expired_run)
def test_should_get_over_due_runs(self): delivery_status_check_delay = datetime.timedelta( days=settings.DELIVERY_STATUS_CHECK_DELAY) max_allowed_reply_period = datetime.timedelta( days=settings.MAX_ALLOWED_REPLY_PERIOD) one_day = datetime.timedelta(days=1) today = datetime.datetime.combine(datetime.date.today(), datetime.datetime.min.time()) expired_run_date = today - delivery_status_check_delay - max_allowed_reply_period - one_day valid_run_date = today - delivery_status_check_delay - max_allowed_reply_period + one_day expired_run = RunFactory( status=Run.STATUS.scheduled, runnable=DeliveryNodeFactory(delivery_date=expired_run_date)) RunFactory(status=Run.STATUS.scheduled, runnable=DeliveryNodeFactory(delivery_date=valid_run_date)) overdue_runs = Run.overdue_runs() self.assertEqual(len(overdue_runs), 1) self.assertEqual(overdue_runs[0], expired_run)