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)); }
public void Fail(Exception e) { if (FailCommand != null) { FailCommand.Data = new Dictionary <String, object>(); FailCommand.Data.Add("Error", e); FailCommand.Data.Add("Task", this); FailCommand.Execute(); } }
public Message Publish(Message message) { _timer.Change(_defaultWaitTime, _defaultWaitTime); ICommandHandler handler = null; var result = new Message(); var header = new MessageHeader(); header.RequestKey = message.Header.ResponseKey; header.ResponseKey = message.Header.ResponseKey; header.RouteType = message.Header.RouteType; header.RunCount = message.Header.RunCount; result.Header = header; try { if (message.TypeName != null) { if (GetHandler(message.BodyType, out handler)) { var cmd = message.Body; var handleResult = ((dynamic)handler).Handle((dynamic)cmd); result.Body = handleResult; } if (handler == null) { var cmd = new NotImplExceptionCommand(); cmd.TypeName = message.BodyType; cmd.OriginalObject = message.Body; cmd.ExceptionMessage = "no provider"; result.Body = cmd; } } } catch (NotImplementedException notImplEx) { var cmd = new NotImplExceptionCommand(); cmd.TypeName = message.BodyType; cmd.OriginalObject = message.Body; cmd.ExceptionMessage = notImplEx.Message; result.Body = cmd; } catch (Exception ex) { var cmd = new FailCommand(); cmd.OriginalObject = message.Body; cmd.ExceptionMessage = ex.Message; result.Body = cmd; } return(result); }