@@ -171,19 +171,47 @@ def test_assign_unassigned(session, create_task_instance):
171
171
trigger_on_healthy_triggerer = Trigger (classpath = "airflow.triggers.testing.SuccessTrigger" , kwargs = {})
172
172
trigger_on_healthy_triggerer .id = 1
173
173
trigger_on_healthy_triggerer .triggerer_id = healthy_triggerer .id
174
+ session .add (trigger_on_healthy_triggerer )
175
+ ti_trigger_on_healthy_triggerer = create_task_instance (
176
+ task_id = "ti_trigger_on_healthy_triggerer" ,
177
+ execution_date = time_now ,
178
+ run_id = "trigger_on_healthy_triggerer_run_id" ,
179
+ )
180
+ ti_trigger_on_healthy_triggerer .trigger_id = trigger_on_healthy_triggerer .id
181
+ session .add (ti_trigger_on_healthy_triggerer )
174
182
trigger_on_unhealthy_triggerer = Trigger (classpath = "airflow.triggers.testing.SuccessTrigger" , kwargs = {})
175
183
trigger_on_unhealthy_triggerer .id = 2
176
184
trigger_on_unhealthy_triggerer .triggerer_id = unhealthy_triggerer .id
185
+ session .add (trigger_on_unhealthy_triggerer )
186
+ ti_trigger_on_unhealthy_triggerer = create_task_instance (
187
+ task_id = "ti_trigger_on_unhealthy_triggerer" ,
188
+ execution_date = time_now + datetime .timedelta (hours = 1 ),
189
+ run_id = "trigger_on_unhealthy_triggerer_run_id" ,
190
+ )
191
+ ti_trigger_on_unhealthy_triggerer .trigger_id = trigger_on_unhealthy_triggerer .id
192
+ session .add (ti_trigger_on_unhealthy_triggerer )
177
193
trigger_on_killed_triggerer = Trigger (classpath = "airflow.triggers.testing.SuccessTrigger" , kwargs = {})
178
194
trigger_on_killed_triggerer .id = 3
179
195
trigger_on_killed_triggerer .triggerer_id = finished_triggerer .id
196
+ session .add (trigger_on_killed_triggerer )
197
+ ti_trigger_on_killed_triggerer = create_task_instance (
198
+ task_id = "ti_trigger_on_killed_triggerer" ,
199
+ execution_date = time_now + datetime .timedelta (hours = 2 ),
200
+ run_id = "trigger_on_killed_triggerer_run_id" ,
201
+ )
202
+ ti_trigger_on_killed_triggerer .trigger_id = trigger_on_killed_triggerer .id
203
+ session .add (ti_trigger_on_killed_triggerer )
180
204
trigger_unassigned_to_triggerer = Trigger (classpath = "airflow.triggers.testing.SuccessTrigger" , kwargs = {})
181
205
trigger_unassigned_to_triggerer .id = 4
182
- assert trigger_unassigned_to_triggerer .triggerer_id is None
183
- session .add (trigger_on_healthy_triggerer )
184
- session .add (trigger_on_unhealthy_triggerer )
185
- session .add (trigger_on_killed_triggerer )
186
206
session .add (trigger_unassigned_to_triggerer )
207
+ ti_trigger_unassigned_to_triggerer = create_task_instance (
208
+ task_id = "ti_trigger_unassigned_to_triggerer" ,
209
+ execution_date = time_now + datetime .timedelta (hours = 3 ),
210
+ run_id = "trigger_unassigned_to_triggerer_run_id" ,
211
+ )
212
+ ti_trigger_unassigned_to_triggerer .trigger_id = trigger_unassigned_to_triggerer .id
213
+ session .add (ti_trigger_unassigned_to_triggerer )
214
+ assert trigger_unassigned_to_triggerer .triggerer_id is None
187
215
session .commit ()
188
216
assert session .query (Trigger ).count () == 4
189
217
Trigger .assign_unassigned (new_triggerer .id , 100 , health_check_threshold = 30 )
@@ -209,31 +237,101 @@ def test_assign_unassigned(session, create_task_instance):
209
237
)
210
238
211
239
212
- def test_get_sorted_triggers (session , create_task_instance ):
240
+ def test_get_sorted_triggers_same_priority_weight (session , create_task_instance ):
213
241
"""
214
- Tests that triggers are sorted by the creation_date.
242
+ Tests that triggers are sorted by the creation_date if they have the same priority .
215
243
"""
244
+ old_execution_date = datetime .datetime (
245
+ 2023 , 5 , 9 , 12 , 16 , 14 , 474415 , tzinfo = pytz .timezone ("Africa/Abidjan" )
246
+ )
216
247
trigger_old = Trigger (
217
248
classpath = "airflow.triggers.testing.SuccessTrigger" ,
218
249
kwargs = {},
219
- created_date = datetime .datetime (
220
- 2023 , 5 , 9 , 12 , 16 , 14 , 474415 , tzinfo = pytz .timezone ("Africa/Abidjan" )
221
- ),
250
+ created_date = old_execution_date + datetime .timedelta (seconds = 30 ),
222
251
)
223
252
trigger_old .id = 1
253
+ session .add (trigger_old )
254
+ TI_old = create_task_instance (
255
+ task_id = "old" ,
256
+ execution_date = old_execution_date ,
257
+ run_id = "old_run_id" ,
258
+ )
259
+ TI_old .priority_weight = 1
260
+ TI_old .trigger_id = trigger_old .id
261
+ session .add (TI_old )
262
+
263
+ new_execution_date = datetime .datetime (
264
+ 2023 , 5 , 9 , 12 , 17 , 14 , 474415 , tzinfo = pytz .timezone ("Africa/Abidjan" )
265
+ )
224
266
trigger_new = Trigger (
225
267
classpath = "airflow.triggers.testing.SuccessTrigger" ,
226
268
kwargs = {},
227
- created_date = datetime .datetime (
228
- 2023 , 5 , 9 , 12 , 17 , 14 , 474415 , tzinfo = pytz .timezone ("Africa/Abidjan" )
229
- ),
269
+ created_date = new_execution_date + datetime .timedelta (seconds = 30 ),
230
270
)
231
271
trigger_new .id = 2
232
- session .add (trigger_old )
233
272
session .add (trigger_new )
273
+ TI_new = create_task_instance (
274
+ task_id = "new" ,
275
+ execution_date = new_execution_date ,
276
+ run_id = "new_run_id" ,
277
+ )
278
+ TI_new .priority_weight = 1
279
+ TI_new .trigger_id = trigger_new .id
280
+ session .add (TI_new )
281
+
234
282
session .commit ()
235
283
assert session .query (Trigger ).count () == 2
236
284
237
285
trigger_ids_query = Trigger .get_sorted_triggers (capacity = 100 , alive_triggerer_ids = [], session = session )
238
286
239
287
assert trigger_ids_query == [(1 ,), (2 ,)]
288
+
289
+
290
+ def test_get_sorted_triggers_different_priority_weights (session , create_task_instance ):
291
+ """
292
+ Tests that triggers are sorted by the priority_weight.
293
+ """
294
+ old_execution_date = datetime .datetime (
295
+ 2023 , 5 , 9 , 12 , 16 , 14 , 474415 , tzinfo = pytz .timezone ("Africa/Abidjan" )
296
+ )
297
+ trigger_old = Trigger (
298
+ classpath = "airflow.triggers.testing.SuccessTrigger" ,
299
+ kwargs = {},
300
+ created_date = old_execution_date + datetime .timedelta (seconds = 30 ),
301
+ )
302
+ trigger_old .id = 1
303
+ session .add (trigger_old )
304
+ TI_old = create_task_instance (
305
+ task_id = "old" ,
306
+ execution_date = old_execution_date ,
307
+ run_id = "old_run_id" ,
308
+ )
309
+ TI_old .priority_weight = 1
310
+ TI_old .trigger_id = trigger_old .id
311
+ session .add (TI_old )
312
+
313
+ new_execution_date = datetime .datetime (
314
+ 2023 , 5 , 9 , 12 , 17 , 14 , 474415 , tzinfo = pytz .timezone ("Africa/Abidjan" )
315
+ )
316
+ trigger_new = Trigger (
317
+ classpath = "airflow.triggers.testing.SuccessTrigger" ,
318
+ kwargs = {},
319
+ created_date = new_execution_date + datetime .timedelta (seconds = 30 ),
320
+ )
321
+ trigger_new .id = 2
322
+ session .add (trigger_new )
323
+ TI_new = create_task_instance (
324
+ task_id = "new" ,
325
+ execution_date = new_execution_date ,
326
+ run_id = "new_run_id" ,
327
+ )
328
+ TI_new .priority_weight = 2
329
+ TI_new .trigger_id = trigger_new .id
330
+ session .add (TI_new )
331
+
332
+ session .commit ()
333
+ assert session .query (Trigger ).count () == 2
334
+
335
+ trigger_ids_query = Trigger .get_sorted_triggers (capacity = 100 , alive_triggerer_ids = [], session = session )
336
+
337
+ assert trigger_ids_query == [(2 ,), (1 ,)]
0 commit comments