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 ScheduleCommand(testMessage, new ScheduleKey(Guid.Empty, text, text), CreateOptions(task, Timeout))); } 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(Guid.Empty, taskId, taskId))); } Throttle.Assert(() => { ResultHolder.Contains(successTaskIds); Assert.True(tasksToRemoveTaskIds.All(x => ResultHolder.Get(x) == null)); }, minTimeout: TimeSpan.FromSeconds(4)); }
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 ScheduleCommand(testCommand, new ScheduleKey(Guid.Empty, text, text), CreateOptions(task, Timeout))); } foreach (var failTask in failTasks) { var text = failTask.ToString(CultureInfo.InvariantCulture); var failTaskCommand = new FailCommand(); _scheduler.Tell(new ScheduleCommand(failTaskCommand, new ScheduleKey(Guid.Empty, text, text), CreateOptions(failTask, Timeout))); } var successTaskIds = successTasks.Select(x => x.ToString(CultureInfo.InvariantCulture)).ToArray(); var failTaskIds = failTasks.Select(x => x.ToString(CultureInfo.InvariantCulture)).ToArray(); Throttle.Assert(() => { ResultHolder.Contains(successTaskIds); Assert.True(failTaskIds.All(x => ResultHolder.Get(x) == null)); }, minTimeout: TimeSpan.FromSeconds(3)); }