@@ -156,6 +156,46 @@ def test_schedule_dag_no_previous_runs(self):
156
156
self .assertFalse (dag_run .external_trigger )
157
157
dag .clear ()
158
158
159
+ def test_schedule_dag_relativedelta (self ):
160
+ """
161
+ Tests scheduling a dag with a relativedelta schedule_interval
162
+ """
163
+ delta = relativedelta (hours = + 1 )
164
+ dag = DAG (TEST_DAG_ID + 'test_schedule_dag_relativedelta' ,
165
+ schedule_interval = delta )
166
+ dag .add_task (models .BaseOperator (
167
+ task_id = "faketastic" ,
168
+ owner = 'Also fake' ,
169
+ start_date = datetime (2015 , 1 , 2 , 0 , 0 )))
170
+
171
+ dag_run = jobs .SchedulerJob (** self .default_scheduler_args ).create_dag_run (dag )
172
+ self .assertIsNotNone (dag_run )
173
+ self .assertEqual (dag .dag_id , dag_run .dag_id )
174
+ self .assertIsNotNone (dag_run .run_id )
175
+ self .assertNotEqual ('' , dag_run .run_id )
176
+ self .assertEqual (
177
+ datetime (2015 , 1 , 2 , 0 , 0 ),
178
+ dag_run .execution_date ,
179
+ msg = 'dag_run.execution_date did not match expectation: {0}'
180
+ .format (dag_run .execution_date )
181
+ )
182
+ self .assertEqual (State .RUNNING , dag_run .state )
183
+ self .assertFalse (dag_run .external_trigger )
184
+ dag_run2 = jobs .SchedulerJob (** self .default_scheduler_args ).create_dag_run (dag )
185
+ self .assertIsNotNone (dag_run2 )
186
+ self .assertEqual (dag .dag_id , dag_run2 .dag_id )
187
+ self .assertIsNotNone (dag_run2 .run_id )
188
+ self .assertNotEqual ('' , dag_run2 .run_id )
189
+ self .assertEqual (
190
+ datetime (2015 , 1 , 2 , 0 , 0 ) + delta ,
191
+ dag_run2 .execution_date ,
192
+ msg = 'dag_run2.execution_date did not match expectation: {0}'
193
+ .format (dag_run2 .execution_date )
194
+ )
195
+ self .assertEqual (State .RUNNING , dag_run2 .state )
196
+ self .assertFalse (dag_run2 .external_trigger )
197
+ dag .clear ()
198
+
159
199
def test_schedule_dag_fake_scheduled_previous (self ):
160
200
"""
161
201
Test scheduling a dag where there is a prior DagRun
0 commit comments