1
+ import dataclasses
2
+
1
3
from django .conf import settings
4
+ from django .core .exceptions import ImproperlyConfigured
2
5
3
- from scheduler .settings import conf_settings , SCHEDULER_CONFIG
6
+ from scheduler .settings import conf_settings
4
7
from scheduler .tests .testtools import SchedulerBaseCase
5
- from scheduler .types import Broker
8
+ from scheduler .types import Broker , SchedulerConfiguration
6
9
7
10
8
11
class TestWorkerAdmin (SchedulerBaseCase ):
9
12
10
13
def test_scheduler_config_as_dict (self ):
11
- self .assertEqual (SCHEDULER_CONFIG .EXECUTIONS_IN_PAGE , 20 )
14
+ from scheduler .settings import SCHEDULER_CONFIG
15
+
12
16
settings .SCHEDULER_CONFIG = dict (
17
+ EXECUTIONS_IN_PAGE = SCHEDULER_CONFIG .EXECUTIONS_IN_PAGE + 1 ,
18
+ SCHEDULER_INTERVAL = SCHEDULER_CONFIG .SCHEDULER_INTERVAL + 1 ,
19
+ BROKER = Broker .REDIS ,
20
+ CALLBACK_TIMEOUT = SCHEDULER_CONFIG .SCHEDULER_INTERVAL + 1 ,
21
+
22
+ DEFAULT_SUCCESS_TTL = SCHEDULER_CONFIG .DEFAULT_SUCCESS_TTL + 1 ,
23
+ DEFAULT_FAILURE_TTL = SCHEDULER_CONFIG .DEFAULT_FAILURE_TTL + 1 ,
24
+ DEFAULT_JOB_TTL = SCHEDULER_CONFIG .DEFAULT_JOB_TTL + 1 ,
25
+ DEFAULT_JOB_TIMEOUT = SCHEDULER_CONFIG .DEFAULT_JOB_TIMEOUT + 1 ,
26
+ # General configuration values
27
+ DEFAULT_WORKER_TTL = SCHEDULER_CONFIG .DEFAULT_WORKER_TTL + 1 ,
28
+ DEFAULT_MAINTENANCE_TASK_INTERVAL = SCHEDULER_CONFIG .DEFAULT_MAINTENANCE_TASK_INTERVAL + 1 ,
29
+ DEFAULT_JOB_MONITORING_INTERVAL = SCHEDULER_CONFIG .DEFAULT_JOB_MONITORING_INTERVAL + 1 ,
30
+ SCHEDULER_FALLBACK_PERIOD_SECS = SCHEDULER_CONFIG .SCHEDULER_FALLBACK_PERIOD_SECS + 1 ,
31
+ )
32
+ conf_settings ()
33
+ from scheduler .settings import SCHEDULER_CONFIG
34
+ for key , value in settings .SCHEDULER_CONFIG .items ():
35
+ self .assertEqual (getattr (SCHEDULER_CONFIG , key ), value )
36
+
37
+ def test_scheduler_config_as_data_class (self ):
38
+ from scheduler .settings import SCHEDULER_CONFIG
39
+ self .assertEqual (SCHEDULER_CONFIG .EXECUTIONS_IN_PAGE , 20 )
40
+ settings .SCHEDULER_CONFIG = SchedulerConfiguration (
13
41
EXECUTIONS_IN_PAGE = 1 ,
14
42
SCHEDULER_INTERVAL = 60 ,
15
43
BROKER = Broker .REDIS ,
@@ -26,5 +54,28 @@ def test_scheduler_config_as_dict(self):
26
54
SCHEDULER_FALLBACK_PERIOD_SECS = 1111 ,
27
55
)
28
56
conf_settings ()
29
- for key , value in settings .SCHEDULER_CONFIG .items ():
57
+ from scheduler .settings import SCHEDULER_CONFIG
58
+ for key , value in dataclasses .asdict (settings .SCHEDULER_CONFIG ).items ():
30
59
self .assertEqual (getattr (SCHEDULER_CONFIG , key ), value )
60
+
61
+
62
+ def test_scheduler_config_as_dict_bad_param (self ):
63
+
64
+ settings .SCHEDULER_CONFIG = dict (
65
+ EXECUTIONS_IN_PAGE = 1 ,
66
+ SCHEDULER_INTERVAL = 60 ,
67
+ BROKER = Broker .REDIS ,
68
+ CALLBACK_TIMEOUT = 1111 ,
69
+
70
+ DEFAULT_SUCCESS_TTL = 1111 ,
71
+ DEFAULT_FAILURE_TTL = 111111 ,
72
+ DEFAULT_JOB_TTL = 1111 ,
73
+ DEFAULT_JOB_TIMEOUT = 11111 ,
74
+ # General configuration values
75
+ DEFAULT_WORKER_TTL = 11111 ,
76
+ DEFAULT_MAINTENANCE_TASK_INTERVAL = 111 ,
77
+ DEFAULT_JOB_MONITORING_INTERVAL = 1111 ,
78
+ SCHEDULER_FALLBACK_PERIOD_SECS = 1111 ,
79
+ BAD_PARAM = 'bad_value' , # This should raise an error
80
+ )
81
+ self .assertRaises (ImproperlyConfigured , conf_settings )
0 commit comments