1+ import dataclasses
2+
13from django .conf import settings
4+ from django .core .exceptions import ImproperlyConfigured
25
3- from scheduler .settings import conf_settings , SCHEDULER_CONFIG
6+ from scheduler .settings import conf_settings
47from scheduler .tests .testtools import SchedulerBaseCase
5- from scheduler .types import Broker
8+ from scheduler .types import Broker , SchedulerConfiguration
69
710
811class TestWorkerAdmin (SchedulerBaseCase ):
912
1013 def test_scheduler_config_as_dict (self ):
11- self .assertEqual (SCHEDULER_CONFIG .EXECUTIONS_IN_PAGE , 20 )
14+ from scheduler .settings import SCHEDULER_CONFIG
15+
1216 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 (
1341 EXECUTIONS_IN_PAGE = 1 ,
1442 SCHEDULER_INTERVAL = 60 ,
1543 BROKER = Broker .REDIS ,
@@ -26,5 +54,28 @@ def test_scheduler_config_as_dict(self):
2654 SCHEDULER_FALLBACK_PERIOD_SECS = 1111 ,
2755 )
2856 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 ():
3059 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