@@ -184,7 +184,6 @@ func checkSchedule(t *testing.T, taskCnt int, isSucc, isCancel, isSubtaskCancel,
184
184
}()
185
185
186
186
// 3s
187
- cnt := 60
188
187
checkGetRunningTaskCnt := func (expected int ) {
189
188
require .Eventually (t , func () bool {
190
189
return sch .GetRunningTaskCnt () == expected
@@ -236,21 +235,16 @@ func checkSchedule(t *testing.T, taskCnt int, isSucc, isCancel, isSubtaskCancel,
236
235
237
236
// test DetectTaskLoop
238
237
checkGetTaskState := func (expectedState proto.TaskState ) {
239
- i := 0
240
- for ; i < cnt ; i ++ {
238
+ require .Eventually (t , func () bool {
241
239
tasks , err := mgr .GetTasksInStates (ctx , expectedState )
242
240
require .NoError (t , err )
243
241
if len (tasks ) == taskCnt {
244
- break
242
+ return true
245
243
}
246
244
historyTasks , err := testutil .GetTasksFromHistoryInStates (ctx , mgr , expectedState )
247
245
require .NoError (t , err )
248
- if len (tasks )+ len (historyTasks ) == taskCnt {
249
- break
250
- }
251
- time .Sleep (time .Millisecond * 50 )
252
- }
253
- require .Less (t , i , cnt )
246
+ return len (tasks )+ len (historyTasks ) == taskCnt
247
+ }, 10 * time .Second , 100 * time .Millisecond )
254
248
}
255
249
// Test all subtasks are successful.
256
250
var err error
@@ -267,9 +261,16 @@ func checkSchedule(t *testing.T, taskCnt int, isSucc, isCancel, isSubtaskCancel,
267
261
return
268
262
}
269
263
264
+ subtasksMap := make (map [int64 ][]* proto.SubtaskBase , len (taskIDs ))
265
+ for _ , taskID := range taskIDs {
266
+ subtasks , err := mgr .GetActiveSubtasks (ctx , taskID )
267
+ require .NoError (t , err )
268
+ subtasksMap [taskID ] = subtasks
269
+ }
270
+
270
271
if isCancel {
271
- for i := 1 ; i <= taskCnt ; i ++ {
272
- err = mgr .CancelTask (ctx , int64 ( i ) )
272
+ for _ , taskID := range taskIDs {
273
+ err = mgr .CancelTask (ctx , taskID )
273
274
require .NoError (t , err )
274
275
}
275
276
} else if isPauseAndResume {
@@ -278,9 +279,11 @@ func checkSchedule(t *testing.T, taskCnt int, isSucc, isCancel, isSubtaskCancel,
278
279
require .True (t , found )
279
280
require .NoError (t , err )
280
281
}
281
- for i := 1 ; i <= subtaskCnt * taskCnt ; i ++ {
282
- err = mgr .UpdateSubtaskStateAndError (ctx , ":4000" , int64 (i ), proto .SubtaskStatePaused , nil )
283
- require .NoError (t , err )
282
+ for _ , sts := range subtasksMap {
283
+ for _ , st := range sts {
284
+ err = mgr .UpdateSubtaskStateAndError (ctx , ":4000" , st .ID , proto .SubtaskStatePaused , nil )
285
+ require .NoError (t , err )
286
+ }
284
287
}
285
288
checkGetTaskState (proto .TaskStatePaused )
286
289
for i := 0 ; i < taskCnt ; i ++ {
@@ -290,23 +293,25 @@ func checkSchedule(t *testing.T, taskCnt int, isSucc, isCancel, isSubtaskCancel,
290
293
}
291
294
292
295
// Mock subtasks succeed.
293
- for i := 1 ; i <= subtaskCnt * taskCnt ; i ++ {
294
- err = mgr .UpdateSubtaskStateAndError (ctx , ":4000" , int64 (i ), proto .SubtaskStateSucceed , nil )
295
- require .NoError (t , err )
296
+ for _ , sts := range subtasksMap {
297
+ for _ , st := range sts {
298
+ err = mgr .UpdateSubtaskStateAndError (ctx , ":4000" , st .ID , proto .SubtaskStateSucceed , nil )
299
+ require .NoError (t , err )
300
+ }
296
301
}
297
302
checkGetTaskState (proto .TaskStateSucceed )
298
303
return
299
304
} else {
300
305
if isSubtaskCancel {
301
306
// Mock a subtask canceled
302
- for i := 1 ; i <= subtaskCnt * taskCnt ; i += subtaskCnt {
303
- err = mgr .UpdateSubtaskStateAndError (ctx , ":4000" , int64 ( i ) , proto .SubtaskStateCanceled , nil )
307
+ for _ , sts := range subtasksMap {
308
+ err = mgr .UpdateSubtaskStateAndError (ctx , ":4000" , sts [ 0 ]. ID , proto .SubtaskStateCanceled , nil )
304
309
require .NoError (t , err )
305
310
}
306
311
} else {
307
312
// Mock a subtask fails.
308
- for i := 1 ; i <= subtaskCnt * taskCnt ; i += subtaskCnt {
309
- err = mgr .UpdateSubtaskStateAndError (ctx , ":4000" , int64 ( i ) , proto .SubtaskStateFailed , nil )
313
+ for _ , sts := range subtasksMap {
314
+ err = mgr .UpdateSubtaskStateAndError (ctx , ":4000" , sts [ 0 ]. ID , proto .SubtaskStateFailed , nil )
310
315
require .NoError (t , err )
311
316
}
312
317
}
0 commit comments