438
}
439
441
>
now := time.Now().Truncate(common.ScheduledTaskMinPrecision)
442
>
timerTasks := []tasks.Task{
443
>
&tasks.UserTimerTask{
444
>
WorkflowKey: s.WorkflowKey,
445
>
TaskID: 100,
446
>
VisibilityTimestamp: now.Add(time.Nanosecond * 10),
447
>
},
448
>
&tasks.UserTimerTask{
449
>
WorkflowKey: s.WorkflowKey,
450
>
TaskID: 50,
451
>
VisibilityTimestamp: now.Add(time.Nanosecond * 20),
452
>
},
453
>
}
454
>
455
>
err := s.ExecutionManager.AddHistoryTasks(s.Ctx, &p.AddHistoryTasksRequest{
456
>
ShardID: s.ShardID,
457
>
RangeID: s.RangeID,
458
>
NamespaceID: s.WorkflowKey.NamespaceID,
459
>
WorkflowID: s.WorkflowKey.WorkflowID,
460
>
ArchetypeID: chasm.WorkflowArchetypeID,
461
>
Tasks: map[tasks.Category][]tasks.Task{
462
>
tasks.CategoryTimer: timerTasks,
463
>
},
464
>
})
465
>
s.NoError(err)
466
>
467
>
// due to persistence layer precision loss,
468
>
// two tasks can be returned in either order,
469
>
// but must be ordered in terms of tasks.Key
470
>
loadedTasks := s.PaginateTasks(
471
>
tasks.CategoryTimer,
472
>
tasks.NewKey(now, 0),
473
>
tasks.NewKey(now.Add(time.Second), 0),
474
>
10,
475
>
)
476
>
s.Len(loadedTasks, 2)
477
>
s.Negative(loadedTasks[0].GetKey().CompareTo(loadedTasks[1].GetKey()))
478
>
}
479
480
func (s *ExecutionMutableStateTaskSuite) TestGetScheduledTasksOrdered() {