@@ -1030,7 +1030,7 @@ jobs:
10301030    concurrency: 
10311031      group: job-group-1 
10321032    steps: 
1033-       - run: echo 'wf2-job2 ' 
1033+       - run: echo 'wf2-job1 ' 
10341034  wf2-job2: 
10351035    runs-on: runner2 
10361036    concurrency: 
@@ -1073,70 +1073,89 @@ jobs:
10731073      - run: echo 'wf4-job1' 
10741074` 
10751075
1076- 		// push workflow 1, 2 and 3  
1076+ 		// push workflow 1 
10771077		opts1  :=  getWorkflowCreateFileOptions (user2 , repo .DefaultBranch , "create %s" + wf1TreePath , wf1FileContent )
10781078		createWorkflowFile (t , token , user2 .Name , repo .Name , wf1TreePath , opts1 )
1079- 		opts2  :=  getWorkflowCreateFileOptions (user2 , repo .DefaultBranch , "create %s" + wf2TreePath , wf2FileContent )
1080- 		createWorkflowFile (t , token , user2 .Name , repo .Name , wf2TreePath , opts2 )
1081- 		opts3  :=  getWorkflowCreateFileOptions (user2 , repo .DefaultBranch , "create %s" + wf3TreePath , wf3FileContent )
1082- 		createWorkflowFile (t , token , user2 .Name , repo .Name , wf3TreePath , opts3 )
1079+ 
10831080		// fetch wf1-job1 and wf1-job2 
10841081		w1j1Task  :=  runner1 .fetchTask (t )
10851082		w1j2Task  :=  runner2 .fetchTask (t )
1086- 		// cannot fetch wf2-job1 and wf2-job2 because workflow-2 is blocked by workflow-1's concurrency group "workflow-group-1" 
1087- 		// cannot fetch wf3-job1 because it is blocked by wf1-job1's concurrency group "job-group-1" 
1088- 		runner1 .fetchNoTask (t )
1089- 		runner2 .fetchNoTask (t )
10901083		_ , w1j1Job , w1Run  :=  getTaskAndJobAndRunByTaskID (t , w1j1Task .Id )
10911084		assert .Equal (t , "job-group-1" , w1j1Job .ConcurrencyGroup )
10921085		assert .Equal (t , "workflow-group-1" , w1Run .ConcurrencyGroup )
10931086		assert .Equal (t , "concurrent-workflow-1.yml" , w1Run .WorkflowID )
1087+ 		assert .Equal (t , actions_model .StatusRunning , w1j1Job .Status )
10941088		_ , w1j2Job , _  :=  getTaskAndJobAndRunByTaskID (t , w1j2Task .Id )
10951089		assert .Equal (t , "job-group-2" , w1j2Job .ConcurrencyGroup )
1090+ 		assert .Equal (t , actions_model .StatusRunning , w1j2Job .Status )
1091+ 
1092+ 		// push workflow 2 
1093+ 		opts2  :=  getWorkflowCreateFileOptions (user2 , repo .DefaultBranch , "create %s" + wf2TreePath , wf2FileContent )
1094+ 		createWorkflowFile (t , token , user2 .Name , repo .Name , wf2TreePath , opts2 )
1095+ 		// cannot fetch wf2-job1 and wf2-job2 because workflow-2 is blocked by workflow-1's concurrency group "workflow-group-1" 
1096+ 		runner1 .fetchNoTask (t )
1097+ 		runner2 .fetchNoTask (t )
1098+ 		// query wf2-job1 from db and check its status 
1099+ 		w2Run  :=  unittest .AssertExistsAndLoadBean (t , & actions_model.ActionRun {RepoID : repo .ID , WorkflowID : "concurrent-workflow-2.yml" })
1100+ 		w2j1Job  :=  unittest .AssertExistsAndLoadBean (t , & actions_model.ActionRunJob {RunID : w2Run .ID , JobID : "wf2-job1" })
1101+ 		assert .Equal (t , actions_model .StatusBlocked , w2j1Job .Status )
1102+ 
1103+ 		// push workflow 3 
1104+ 		opts3  :=  getWorkflowCreateFileOptions (user2 , repo .DefaultBranch , "create %s" + wf3TreePath , wf3FileContent )
1105+ 		createWorkflowFile (t , token , user2 .Name , repo .Name , wf3TreePath , opts3 )
1106+ 		// cannot fetch wf3-job1 because it is blocked by wf1-job1's concurrency group "job-group-1" 
1107+ 		runner1 .fetchNoTask (t )
1108+ 		// query wf3-job1 from db and check its status 
1109+ 		w3Run  :=  unittest .AssertExistsAndLoadBean (t , & actions_model.ActionRun {RepoID : repo .ID , WorkflowID : "concurrent-workflow-3.yml" })
1110+ 		w3j1Job  :=  unittest .AssertExistsAndLoadBean (t , & actions_model.ActionRunJob {RunID : w3Run .ID , JobID : "wf3-job1" })
1111+ 		assert .Equal (t , actions_model .StatusBlocked , w3j1Job .Status )
1112+ 		// wf2-job1 is cancelled by wf3-job1 
1113+ 		w2j1Job  =  unittest .AssertExistsAndLoadBean (t , & actions_model.ActionRunJob {ID : w2j1Job .ID })
1114+ 		assert .Equal (t , actions_model .StatusCancelled , w2j1Job .Status )
1115+ 
10961116		// exec wf1-job1 
10971117		runner1 .execTask (t , w1j1Task , & mockTaskOutcome {
10981118			result : runnerv1 .Result_RESULT_SUCCESS ,
10991119		})
1120+ 
11001121		// fetch wf3-job1 
1122+ 		assert .Equal (t , actions_model .StatusBlocked , w3j1Job .Status )
11011123		w3j1Task  :=  runner1 .fetchTask (t )
1102- 		// cannot fetch wf2-job1 and wf2-job2 because workflow-2 is blocked by workflow-1's concurrency group "workflow-group-1" 
1103- 		runner1 .fetchNoTask (t )
1104- 		runner2 .fetchNoTask (t )
1105- 		_ , w3j1Job , w3Run  :=  getTaskAndJobAndRunByTaskID (t , w3j1Task .Id )
1124+ 		_ , w3j1Job , w3Run  =  getTaskAndJobAndRunByTaskID (t , w3j1Task .Id )
11061125		assert .Equal (t , "job-group-1" , w3j1Job .ConcurrencyGroup )
11071126		assert .Equal (t , "workflow-group-2" , w3Run .ConcurrencyGroup )
11081127		assert .Equal (t , "concurrent-workflow-3.yml" , w3Run .WorkflowID )
1109- 		// push workflow-4 
1110- 		opts4  :=  getWorkflowCreateFileOptions (user2 , repo .DefaultBranch , "create %s" + wf4TreePath , wf4FileContent )
1111- 		createWorkflowFile (t , token , user2 .Name , repo .Name , wf4TreePath , opts4 )
1128+ 
11121129		// exec wf1-job2 
11131130		runner2 .execTask (t , w1j2Task , & mockTaskOutcome {
11141131			result : runnerv1 .Result_RESULT_SUCCESS ,
11151132		})
1116- 		// wf2-job2 
1133+ 
1134+ 		// fetch wf2-job2 
11171135		w2j2Task  :=  runner2 .fetchTask (t )
1118- 		// cannot fetch wf2-job1 because it is blocked by wf3-job1's concurrency group "job-group-1" 
1119- 		// cannot fetch wf4-job1 because it is blocked by workflow-3's concurrency group "workflow-group-2" 
1120- 		runner1 .fetchNoTask (t )
1121- 		runner2 .fetchNoTask (t )
11221136		_ , w2j2Job , w2Run  :=  getTaskAndJobAndRunByTaskID (t , w2j2Task .Id )
11231137		assert .Equal (t , "job-group-2" , w2j2Job .ConcurrencyGroup )
11241138		assert .Equal (t , "workflow-group-1" , w2Run .ConcurrencyGroup )
11251139		assert .Equal (t , "concurrent-workflow-2.yml" , w2Run .WorkflowID )
1140+ 		assert .Equal (t , actions_model .StatusRunning , w2j2Job .Status )
1141+ 
1142+ 		// push workflow-4 
1143+ 		opts4  :=  getWorkflowCreateFileOptions (user2 , repo .DefaultBranch , "create %s" + wf4TreePath , wf4FileContent )
1144+ 		createWorkflowFile (t , token , user2 .Name , repo .Name , wf4TreePath , opts4 )
1145+ 		// cannot fetch wf4-job1 because it is blocked by workflow-3's concurrency group "workflow-group-2" 
1146+ 		runner2 .fetchNoTask (t )
1147+ 
11261148		// exec wf3-job1 
11271149		runner1 .execTask (t , w3j1Task , & mockTaskOutcome {
11281150			result : runnerv1 .Result_RESULT_SUCCESS ,
11291151		})
1130- 		// fetch wf2-job1 
1131- 		w2j1Task  :=  runner1 .fetchTask (t )
1152+ 
11321153		// fetch wf4-job1 
11331154		w4j1Task  :=  runner2 .fetchTask (t )
11341155		// all tasks have been fetched 
11351156		runner1 .fetchNoTask (t )
11361157		runner2 .fetchNoTask (t )
1137- 		_ , w2j1Job , _  :=  getTaskAndJobAndRunByTaskID (t , w2j1Task .Id )
1138- 		assert .Equal (t , "job-group-1" , w2j1Job .ConcurrencyGroup )
1139- 		assert .Equal (t , actions_model .StatusRunning , w2j2Job .Status )
1158+ 
11401159		_ , w2j2Job , w2Run  =  getTaskAndJobAndRunByTaskID (t , w2j2Task .Id )
11411160		// wf2-job2 is cancelled because wf4-job1's cancel-in-progress is true 
11421161		assert .Equal (t , actions_model .StatusCancelled , w2j2Job .Status )
0 commit comments