22
33import pytest
44
5+ from kolibri .core .tasks .decorators import register_task
56from kolibri .core .tasks .exceptions import JobRunning
67from kolibri .core .tasks .job import Job
78from kolibri .core .tasks .storage import Storage
8- from kolibri .core .tasks .test .base import connection
99from kolibri .utils .time_utils import local_now
10- from kolibri .utils .time_utils import naive_utc_datetime
1110
1211
1312@pytest .fixture
1413def job_storage ():
15- with connection () as c :
16- s = Storage (connection = c )
17- s .clear (force = True )
18- yield s
19- s .clear (force = True )
14+ s = Storage ()
15+ s .clear (force = True )
16+ yield s
17+ s .clear (force = True )
2018
2119
20+ @register_task
21+ def add (x , y ):
22+ return x + y
23+
24+
25+ @pytest .mark .django_db (databases = "__all__" )
2226class TestScheduler (object ):
2327 @pytest .fixture
2428 def job (self ):
25- return Job (id )
29+ return Job (add )
2630
2731 def test_enqueue_at_a_function (self , job_storage , job ):
2832 job_id = job_storage .enqueue_at (local_now (), job )
@@ -34,10 +38,9 @@ def test_enqueue_at_a_function_sets_time(self, job_storage, job):
3438 now = local_now ()
3539 job_id = job_storage .enqueue_at (now , job )
3640
37- with job_storage .session_scope () as session :
38- _ , scheduled_job = job_storage ._get_job_and_orm_job (job_id , session )
39- scheduled_time = scheduled_job .scheduled_time
40- assert scheduled_time == naive_utc_datetime (now )
41+ _ , scheduled_job = job_storage ._get_job_and_orm_job (job_id )
42+ scheduled_time = scheduled_job .scheduled_time
43+ assert scheduled_time == now
4144
4245 def test_enqueue_at_preserves_extra_metadata (self , job_storage , job ):
4346 metadata = {"saved" : True }
@@ -59,19 +62,17 @@ def test_enqueue_in_a_function_sets_time(self, job_storage, job):
5962 job_storage ._now = lambda : now
6063 job_id = job_storage .enqueue_in (diff , job )
6164
62- with job_storage .session_scope () as session :
63- _ , scheduled_job = job_storage ._get_job_and_orm_job (job_id , session )
64- scheduled_time = scheduled_job .scheduled_time
65- assert scheduled_time == naive_utc_datetime (now ) + diff
65+ _ , scheduled_job = job_storage ._get_job_and_orm_job (job_id )
66+ scheduled_time = scheduled_job .scheduled_time
67+ assert scheduled_time == now + diff
6668
6769 def test_schedule_a_function_sets_time (self , job_storage , job ):
6870 now = local_now ()
6971 job_id = job_storage .schedule (now , job )
7072
71- with job_storage .session_scope () as session :
72- _ , scheduled_job = job_storage ._get_job_and_orm_job (job_id , session )
73- scheduled_time = scheduled_job .scheduled_time
74- assert scheduled_time == naive_utc_datetime (now )
73+ _ , scheduled_job = job_storage ._get_job_and_orm_job (job_id )
74+ scheduled_time = scheduled_job .scheduled_time
75+ assert scheduled_time == now
7576
7677 def test_schedule_a_function_gives_value_error_without_datetime (
7778 self , job_storage , job
@@ -112,9 +113,8 @@ def test_scheduled_repeating_function_sets_endless_repeat_new_job(
112113 job_id = job_storage .schedule (now , job , interval = 1000 , repeat = None )
113114 job_storage .complete_job (job_id )
114115 job_storage .reschedule_finished_job_if_needed (job_id )
115- with job_storage .session_scope () as session :
116- _ , scheduled_job = job_storage ._get_job_and_orm_job (job_id , session )
117- repeat = scheduled_job .repeat
116+ _ , scheduled_job = job_storage ._get_job_and_orm_job (job_id )
117+ repeat = scheduled_job .repeat
118118 assert repeat is None
119119
120120 def test_scheduled_repeating_function_enqueues_job (self , job_storage , job ):
@@ -131,9 +131,8 @@ def test_scheduled_repeating_function_sets_new_job_with_one_fewer_repeats(
131131 job_id = job_storage .schedule (now , job , interval = 1000 , repeat = 1 )
132132 job_storage .complete_job (job_id )
133133 job_storage .reschedule_finished_job_if_needed (job_id )
134- with job_storage .session_scope () as session :
135- _ , scheduled_job = job_storage ._get_job_and_orm_job (job_id , session )
136- repeat = scheduled_job .repeat
134+ _ , scheduled_job = job_storage ._get_job_and_orm_job (job_id )
135+ repeat = scheduled_job .repeat
137136 assert repeat == 0
138137
139138 def test_scheduled_repeating_function_sets_new_job_at_interval (
@@ -144,12 +143,9 @@ def test_scheduled_repeating_function_sets_new_job_at_interval(
144143 job_storage ._now = lambda : now
145144 job_storage .complete_job (job_id )
146145 job_storage .reschedule_finished_job_if_needed (job_id )
147- with job_storage .session_scope () as session :
148- _ , scheduled_job = job_storage ._get_job_and_orm_job (job_id , session )
149- scheduled_time = scheduled_job .scheduled_time
150- assert scheduled_time == naive_utc_datetime (now ) + datetime .timedelta (
151- seconds = 1000
152- )
146+ _ , scheduled_job = job_storage ._get_job_and_orm_job (job_id )
147+ scheduled_time = scheduled_job .scheduled_time
148+ assert scheduled_time == now + datetime .timedelta (seconds = 1000 )
153149
154150 def test_scheduled_repeating_function_failure_sets_new_job_at_retry_interval (
155151 self , job_storage , job
@@ -161,17 +157,16 @@ def test_scheduled_repeating_function_failure_sets_new_job_at_retry_interval(
161157 job_storage ._now = lambda : now
162158 job_storage .mark_job_as_failed (job_id , "Exception" , "Traceback" )
163159 job_storage .reschedule_finished_job_if_needed (job_id )
164- with job_storage .session_scope () as session :
165- _ , scheduled_job = job_storage ._get_job_and_orm_job (job_id , session )
166- scheduled_time = scheduled_job .scheduled_time
167- assert scheduled_time == naive_utc_datetime (now ) + datetime .timedelta (seconds = 5 )
160+ _ , scheduled_job = job_storage ._get_job_and_orm_job (job_id )
161+ scheduled_time = scheduled_job .scheduled_time
162+ assert scheduled_time == now + datetime .timedelta (seconds = 5 )
168163
169164
170165class TestReschedule (TestScheduler ):
171166 @pytest .fixture
172167 def job (self , job_storage ):
173168 now = local_now ()
174- job_id = job_storage .schedule (now , Job (id ), interval = 1 , repeat = 123 )
169+ job_id = job_storage .schedule (now , Job (add ), interval = 1 , repeat = 123 )
175170 return job_storage .get_job (job_id )
176171
177172 def test_reschedule_a_function_gives_job_running_error (self , job_storage , job ):
0 commit comments