public void When_some_of_scheduled_jobs_fail_System_still_executes_others() { var successTasks = new[] { 0.5, 1.5, 2.5 }; var failTasks = new[] { 1.0, 2.0 }; foreach (var task in successTasks) { var text = task.ToString(CultureInfo.InvariantCulture); var testCommand = new SuccessCommand(text); _scheduler.Tell(new ScheduleCommandExecution(testCommand, new ScheduleKey(text, text), CreateOptions(task))); } foreach (var failTask in failTasks) { var text = failTask.ToString(CultureInfo.InvariantCulture); var failTaskCommand = new FailCommand(); _scheduler.Tell(new ScheduleCommandExecution(failTaskCommand, new ScheduleKey(text, text), CreateOptions(failTask))); } var successTaskIds = successTasks.Select(x => x.ToString(CultureInfo.InvariantCulture)).ToArray(); var failTaskIds = failTasks.Select(x => x.ToString(CultureInfo.InvariantCulture)).ToArray(); Throttle.AssertInTime(() => { ResultHolder.Contains(successTaskIds); Assert.True(failTaskIds.All(x => ResultHolder.Get(x) == null)); }, TimeSpan.FromSeconds(3)); }
public void When_tasks_get_deleted_after_scheduling_System_will_not_execute_them() { var successTasks = new[] { 0.5, 1.5, 2.5 }; var tasksToRemove = new[] { 1.0, 2.0 }; foreach (var task in successTasks.Concat(tasksToRemove)) { var text = task.ToString(CultureInfo.InvariantCulture); var testMessage = new SuccessCommand(text); _scheduler.Tell(new ScheduleCommandExecution(testMessage, new ScheduleKey(text, text), CreateOptions(task))); } var successTaskIds = successTasks.Select(x => x.ToString(CultureInfo.InvariantCulture)).ToArray(); var tasksToRemoveTaskIds = tasksToRemove.Select(x => x.ToString(CultureInfo.InvariantCulture)).ToArray(); foreach (var taskId in tasksToRemoveTaskIds) { _scheduler.Tell(new Unschedule(new ScheduleKey(taskId, taskId))); } Throttle.AssertInTime(() => { ResultHolder.Contains(successTaskIds); Assert.True(tasksToRemoveTaskIds.All(x => ResultHolder.Get(x) == null)); }, TimeSpan.FromSeconds(4)); }
public void When_there_are_several_scheduled_jobs_System_executes_all_of_them() { var tasks = new[] { 0.5, 0.6, 0.7, 0.8, 1 }; foreach (var task in tasks) { var text = task.ToString(CultureInfo.InvariantCulture); var testMessage = new SuccessCommand(text); _scheduler.Tell(new ScheduleCommandExecution(testMessage, new ScheduleKey(text, text), CreateOptions(task))); } var taskIds = tasks.Select(x => x.ToString(CultureInfo.InvariantCulture)).ToArray(); Throttle.AssertInTime(() => ResultHolder.Contains(taskIds)); }