Skip to content

Commit 706dfac

Browse files
committed
refactor:rename classes
1 parent fd27518 commit 706dfac

File tree

6 files changed

+296
-276
lines changed

6 files changed

+296
-276
lines changed

Diff for: scheduler/models/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
from .args import TaskKwarg, TaskArg, BaseJobArg # noqa: F401
1+
from .args import TaskKwarg, TaskArg, BaseTaskArg # noqa: F401
22
from .queue import Queue # noqa: F401
33
from .scheduled_task import BaseTask, ScheduledTask, RepeatableTask, CronTask # noqa: F401

Diff for: scheduler/models/args.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
}
1919

2020

21-
class BaseJobArg(models.Model):
21+
class BaseTaskArg(models.Model):
2222
class ArgType(models.TextChoices):
2323
STR = 'str', _('string')
2424
INT = 'int', _('int')
@@ -57,11 +57,11 @@ def clean(self):
5757
})
5858

5959
def save(self, **kwargs):
60-
super(BaseJobArg, self).save(**kwargs)
60+
super(BaseTaskArg, self).save(**kwargs)
6161
self.content_object.save()
6262

6363
def delete(self, **kwargs):
64-
super(BaseJobArg, self).delete(**kwargs)
64+
super(BaseTaskArg, self).delete(**kwargs)
6565
self.content_object.save()
6666

6767
def value(self):
@@ -80,17 +80,17 @@ class Meta:
8080
ordering = ['id']
8181

8282

83-
class TaskArg(BaseJobArg):
83+
class TaskArg(BaseTaskArg):
8484
def __str__(self):
85-
return f'JobArg[arg_type={self.arg_type},value={self.value()}]'
85+
return f'TaskArg[arg_type={self.arg_type},value={self.value()}]'
8686

8787

88-
class TaskKwarg(BaseJobArg):
88+
class TaskKwarg(BaseTaskArg):
8989
key = models.CharField(max_length=255)
9090

9191
def __str__(self):
9292
key, value = self.value()
93-
return f'JobKwarg[key={key},arg_type={self.arg_type},value={self.val}]'
93+
return f'TaskKwarg[key={key},arg_type={self.arg_type},value={self.val}]'
9494

9595
def value(self):
9696
return self.key, super(TaskKwarg, self).value()

Diff for: scheduler/tests/test_cron_task.py

+71
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
from django.core.exceptions import ValidationError
2+
3+
from scheduler import settings
4+
from scheduler.models import CronTask
5+
from scheduler.tools import create_worker
6+
from .test_models import BaseTestCases
7+
from .testtools import (
8+
task_factory, _get_job_from_scheduled_registry)
9+
from ..queues import get_queue
10+
11+
12+
class TestCronTask(BaseTestCases.TestBaseTask):
13+
TaskModelClass = CronTask
14+
15+
def test_clean(self):
16+
task = task_factory(CronTask)
17+
task.cron_string = '* * * * *'
18+
task.queue = list(settings.QUEUES)[0]
19+
task.callable = 'scheduler.tests.jobs.test_job'
20+
self.assertIsNone(task.clean())
21+
22+
def test_clean_cron_string_invalid(self):
23+
task = task_factory(CronTask)
24+
task.cron_string = 'not-a-cron-string'
25+
task.queue = list(settings.QUEUES)[0]
26+
task.callable = 'scheduler.tests.jobs.test_job'
27+
with self.assertRaises(ValidationError):
28+
task.clean_cron_string()
29+
30+
def test_repeat(self):
31+
task = task_factory(CronTask, repeat=10)
32+
entry = _get_job_from_scheduled_registry(task)
33+
self.assertEqual(entry.meta['repeat'], 10)
34+
35+
def test_check_rescheduled_after_execution(self):
36+
task = task_factory(CronTask, )
37+
queue = task.rqueue
38+
first_run_id = task.job_id
39+
entry = queue.fetch_job(first_run_id)
40+
queue.run_sync(entry)
41+
task.refresh_from_db()
42+
self.assertTrue(task.is_scheduled())
43+
self.assertNotEqual(task.job_id, first_run_id)
44+
45+
def test_check_rescheduled_after_failed_execution(self):
46+
task = task_factory(CronTask, callable_name="scheduler.tests.jobs.scheduler.tests.jobs.test_job", )
47+
queue = task.rqueue
48+
first_run_id = task.job_id
49+
entry = queue.fetch_job(first_run_id)
50+
queue.run_sync(entry)
51+
task.refresh_from_db()
52+
self.assertTrue(task.is_scheduled())
53+
self.assertNotEqual(task.job_id, first_run_id)
54+
55+
def test_cron_task_enqueuing_jobs(self):
56+
queue = get_queue()
57+
prev_queued = len(queue.scheduled_job_registry)
58+
prev_finished = len(queue.finished_job_registry)
59+
task = task_factory(CronTask, callable_name='scheduler.tests.jobs.enqueue_jobs')
60+
self.assertEqual(prev_queued + 1, len(queue.scheduled_job_registry))
61+
first_run_id = task.job_id
62+
entry = queue.fetch_job(first_run_id)
63+
queue.run_sync(entry)
64+
self.assertEqual(20, len(queue))
65+
self.assertEqual(prev_finished + 1, len(queue.finished_job_registry))
66+
worker = create_worker('default', fork_job_execution=False, )
67+
worker.work(burst=True)
68+
self.assertEqual(prev_finished + 21, len(queue.finished_job_registry))
69+
worker.refresh()
70+
self.assertEqual(20, worker.successful_job_count)
71+
self.assertEqual(0, worker.failed_job_count)

Diff for: scheduler/tests/test_job_arg_models.py

+40-40
Original file line numberDiff line numberDiff line change
@@ -7,142 +7,142 @@
77
from .testtools import taskarg_factory
88

99

10-
class TestAllJobArg(TestCase):
11-
JobArgClass = TaskArg
10+
class TestAllTaskArg(TestCase):
11+
TaskArgClass = TaskArg
1212

1313
def test_bad_arg_type(self):
14-
arg = taskarg_factory(self.JobArgClass, arg_type='bad_arg_type', val='something')
14+
arg = taskarg_factory(self.TaskArgClass, arg_type='bad_arg_type', val='something')
1515
with self.assertRaises(ValidationError):
1616
arg.clean()
1717

1818
def test_clean_one_value_invalid_str_int(self):
19-
arg = taskarg_factory(self.JobArgClass, arg_type='int', val='not blank', )
19+
arg = taskarg_factory(self.TaskArgClass, arg_type='int', val='not blank', )
2020
with self.assertRaises(ValidationError):
2121
arg.clean()
2222

2323
def test_clean_callable_invalid(self):
24-
arg = taskarg_factory(self.JobArgClass, arg_type='callable', val='bad_callable', )
24+
arg = taskarg_factory(self.TaskArgClass, arg_type='callable', val='bad_callable', )
2525
with self.assertRaises(ValidationError):
2626
arg.clean()
2727

2828
def test_clean_datetime_invalid(self):
29-
arg = taskarg_factory(self.JobArgClass, arg_type='datetime', val='bad datetime', )
29+
arg = taskarg_factory(self.TaskArgClass, arg_type='datetime', val='bad datetime', )
3030
with self.assertRaises(ValidationError):
3131
arg.clean()
3232

3333
def test_clean_bool_invalid(self):
34-
arg = taskarg_factory(self.JobArgClass, arg_type='bool', val='bad bool', )
34+
arg = taskarg_factory(self.TaskArgClass, arg_type='bool', val='bad bool', )
3535
with self.assertRaises(ValidationError):
3636
arg.clean()
3737

3838
def test_clean_int_invalid(self):
39-
arg = taskarg_factory(self.JobArgClass, arg_type='int', val='str')
39+
arg = taskarg_factory(self.TaskArgClass, arg_type='int', val='str')
4040
with self.assertRaises(ValidationError):
4141
arg.clean()
4242

4343
def test_str_clean(self):
44-
arg = taskarg_factory(self.JobArgClass, val='something')
44+
arg = taskarg_factory(self.TaskArgClass, val='something')
4545
self.assertIsNone(arg.clean())
4646

4747

48-
class TestJobArg(TestCase):
49-
JobArgClass = TaskArg
48+
class TestTaskArg(TestCase):
49+
TaskArgClass = TaskArg
5050

5151
def test_str(self):
52-
arg = taskarg_factory(self.JobArgClass)
52+
arg = taskarg_factory(self.TaskArgClass)
5353
self.assertEqual(
54-
f'JobArg[arg_type={arg.arg_type},value={arg.value()}]', str(arg))
54+
f'TaskArg[arg_type={arg.arg_type},value={arg.value()}]', str(arg))
5555

5656
def test_value(self):
57-
arg = taskarg_factory(self.JobArgClass, arg_type='str', val='something')
57+
arg = taskarg_factory(self.TaskArgClass, arg_type='str', val='something')
5858
self.assertEqual(arg.value(), 'something')
5959

6060
def test__str__str_val(self):
61-
arg = taskarg_factory(self.JobArgClass, arg_type='str', val='something')
61+
arg = taskarg_factory(self.TaskArgClass, arg_type='str', val='something')
6262
self.assertEqual('something', str(arg.value()))
6363

6464
def test__str__int_val(self):
65-
arg = taskarg_factory(self.JobArgClass, arg_type='int', val='1')
65+
arg = taskarg_factory(self.TaskArgClass, arg_type='int', val='1')
6666
self.assertEqual('1', str(arg.value()))
6767

6868
def test__str__datetime_val(self):
6969
_time = timezone.now()
70-
arg = taskarg_factory(self.JobArgClass, arg_type='datetime', val=str(_time))
70+
arg = taskarg_factory(self.TaskArgClass, arg_type='datetime', val=str(_time))
7171
self.assertEqual(str(_time), str(arg.value()))
7272

7373
def test__str__bool_val(self):
74-
arg = taskarg_factory(self.JobArgClass, arg_type='bool', val='True')
74+
arg = taskarg_factory(self.TaskArgClass, arg_type='bool', val='True')
7575
self.assertEqual('True', str(arg.value()))
7676

7777
def test__repr__str_val(self):
78-
arg = taskarg_factory(self.JobArgClass, arg_type='str', val='something')
78+
arg = taskarg_factory(self.TaskArgClass, arg_type='str', val='something')
7979
self.assertEqual("'something'", repr(arg.value()))
8080

8181
def test__repr__int_val(self):
82-
arg = taskarg_factory(self.JobArgClass, arg_type='int', val='1')
82+
arg = taskarg_factory(self.TaskArgClass, arg_type='int', val='1')
8383
self.assertEqual('1', repr(arg.value()))
8484

8585
def test__repr__datetime_val(self):
8686
_time = timezone.now()
87-
arg = taskarg_factory(self.JobArgClass, arg_type='datetime', val=str(_time))
87+
arg = taskarg_factory(self.TaskArgClass, arg_type='datetime', val=str(_time))
8888
self.assertEqual(repr(_time), repr(arg.value()))
8989

9090
def test__repr__bool_val(self):
91-
arg = taskarg_factory(self.JobArgClass, arg_type='bool', val='False')
91+
arg = taskarg_factory(self.TaskArgClass, arg_type='bool', val='False')
9292
self.assertEqual('False', repr(arg.value()))
9393

9494
def test_callable_arg_type__clean(self):
9595
method = arg_callable
9696
arg = taskarg_factory(
97-
self.JobArgClass, arg_type='callable',
97+
self.TaskArgClass, arg_type='callable',
9898
val=f'{method.__module__}.{method.__name__}', )
9999
self.assertIsNone(arg.clean())
100100
self.assertEqual(1, arg.value())
101101
self.assertEqual(2, arg.value())
102102

103103

104-
class TestJobKwarg(TestAllJobArg):
105-
JobArgClass = TaskKwarg
104+
class TestTaskKwarg(TestAllTaskArg):
105+
TaskArgClass = TaskKwarg
106106

107107
def test_str(self):
108-
arg = taskarg_factory(self.JobArgClass)
108+
arg = taskarg_factory(self.TaskArgClass)
109109
self.assertEqual(
110-
f'JobKwarg[key={arg.key},arg_type={arg.arg_type},value={arg.val}]', str(arg))
110+
f'TaskKwarg[key={arg.key},arg_type={arg.arg_type},value={arg.val}]', str(arg))
111111

112112
def test_value(self):
113-
kwarg = taskarg_factory(self.JobArgClass, key='key', arg_type='str', val='value')
113+
kwarg = taskarg_factory(self.TaskArgClass, key='key', arg_type='str', val='value')
114114
self.assertEqual(kwarg.value(), ('key', 'value'))
115115

116116
def test__str__str_val(self):
117-
kwarg = taskarg_factory(self.JobArgClass, key='key', arg_type='str', val='something')
118-
self.assertEqual('JobKwarg[key=key,arg_type=str,value=something]', str(kwarg))
117+
kwarg = taskarg_factory(self.TaskArgClass, key='key', arg_type='str', val='something')
118+
self.assertEqual('TaskKwarg[key=key,arg_type=str,value=something]', str(kwarg))
119119

120120
def test__str__int_val(self):
121-
kwarg = taskarg_factory(self.JobArgClass, key='key', arg_type='int', val=1)
122-
self.assertEqual('JobKwarg[key=key,arg_type=int,value=1]', str(kwarg))
121+
kwarg = taskarg_factory(self.TaskArgClass, key='key', arg_type='int', val=1)
122+
self.assertEqual('TaskKwarg[key=key,arg_type=int,value=1]', str(kwarg))
123123

124124
def test__str__datetime_val(self):
125125
_time = timezone.now()
126-
kwarg = taskarg_factory(self.JobArgClass, key='key', arg_type='datetime', val=str(_time))
127-
self.assertEqual(f'JobKwarg[key=key,arg_type=datetime,value={_time}]', str(kwarg))
126+
kwarg = taskarg_factory(self.TaskArgClass, key='key', arg_type='datetime', val=str(_time))
127+
self.assertEqual(f'TaskKwarg[key=key,arg_type=datetime,value={_time}]', str(kwarg))
128128

129129
def test__str__bool_val(self):
130-
kwarg = taskarg_factory(self.JobArgClass, key='key', arg_type='bool', val='True')
131-
self.assertEqual('JobKwarg[key=key,arg_type=bool,value=True]', str(kwarg))
130+
kwarg = taskarg_factory(self.TaskArgClass, key='key', arg_type='bool', val='True')
131+
self.assertEqual('TaskKwarg[key=key,arg_type=bool,value=True]', str(kwarg))
132132

133133
def test__repr__str_val(self):
134-
kwarg = taskarg_factory(self.JobArgClass, key='key', arg_type='str', val='something')
134+
kwarg = taskarg_factory(self.TaskArgClass, key='key', arg_type='str', val='something')
135135
self.assertEqual("('key', 'something')", repr(kwarg.value()))
136136

137137
def test__repr__int_val(self):
138-
kwarg = taskarg_factory(self.JobArgClass, key='key', arg_type='int', val='1')
138+
kwarg = taskarg_factory(self.TaskArgClass, key='key', arg_type='int', val='1')
139139
self.assertEqual("('key', 1)", repr(kwarg.value()))
140140

141141
def test__repr__datetime_val(self):
142142
_time = timezone.now()
143-
kwarg = taskarg_factory(self.JobArgClass, key='key', arg_type='datetime', val=str(_time))
143+
kwarg = taskarg_factory(self.TaskArgClass, key='key', arg_type='datetime', val=str(_time))
144144
self.assertEqual("('key', {})".format(repr(_time)), repr(kwarg.value()))
145145

146146
def test__repr__bool_val(self):
147-
kwarg = taskarg_factory(self.JobArgClass, key='key', arg_type='bool', val='True')
147+
kwarg = taskarg_factory(self.TaskArgClass, key='key', arg_type='bool', val='True')
148148
self.assertEqual("('key', True)", repr(kwarg.value()))

0 commit comments

Comments
 (0)