@@ -292,3 +292,54 @@ def test_sequence_steps_from_job_task_with_non_existing_cluster(ws, admin_locato
292
292
required_step_ids = [1 ],
293
293
),
294
294
]
295
+
296
+
297
+ def test_sequence_steps_from_job_task_referencing_other_task (ws , admin_locator ) -> None :
298
+ """Sequence a job with a task that has a new cluster definition.
299
+
300
+ Sequence:
301
+ 1. Task1
302
+ 2. Task2
303
+ 3. Job
304
+ """
305
+ task1 = jobs .Task (task_key = "task1" )
306
+ task_dependency = jobs .TaskDependency (task1 .task_key )
307
+ task2 = jobs .Task (task_key = "task2" , depends_on = [task_dependency ])
308
+ tasks = [task2 , task1 ] # Reverse order on purpose to test if this is handled
309
+ settings = jobs .JobSettings (name = "job" , tasks = tasks )
310
+ job = jobs .Job (job_id = 1234 , settings = settings )
311
+ sequencer = MigrationSequencer (ws , admin_locator )
312
+
313
+ maybe_job_node = sequencer .register_job (job )
314
+ assert not maybe_job_node .failed
315
+
316
+ steps = list (sequencer .generate_steps ())
317
+ assert steps == [
318
+ MigrationStep (
319
+ step_id = 1 ,
320
+ step_number = 0 ,
321
+ object_type = "TASK" ,
322
+ object_id = "1234/task1" ,
323
+ object_name = "task1" ,
324
+ object_owner = "John Doe" ,
325
+ required_step_ids = [],
326
+ ),
327
+ MigrationStep (
328
+ step_id = 2 ,
329
+ step_number = 0 ,
330
+ object_type = "TASK" ,
331
+ object_id = "1234/task2" ,
332
+ object_name = "task2" ,
333
+ object_owner = "John Doe" ,
334
+ required_step_ids = [1 ],
335
+ ),
336
+ MigrationStep (
337
+ step_id = 0 ,
338
+ step_number = 1 ,
339
+ object_type = "JOB" ,
340
+ object_id = "1234" ,
341
+ object_name = "job" ,
342
+ object_owner = "John Doe" ,
343
+ required_step_ids = [1 , 2 ],
344
+ ),
345
+ ]
0 commit comments