public Task Handle(DispatchCommand message) { return(Task.Factory.StartNew(() => { if (WaitForSignal) { message.Signal.WaitOne(2.Seconds()); } CalledSignal.Set(); })); }
public void should_filter_invoker() { _messageDispatcher.LoadMessageHandlerInvokers(); var asyncHandler = new AsyncCommandHandler(); _containerMock.Setup(x => x.GetInstance(typeof(AsyncCommandHandler))).Returns(asyncHandler); var syncHandler = new SyncCommandHandler(); _containerMock.Setup(x => x.GetInstance(typeof(SyncCommandHandler))).Returns(syncHandler); var context = MessageContext.CreateTest("u.name"); var command = new DispatchCommand(); var dispatched = new ManualResetEvent(false); var dispatch = new MessageDispatch(context, command, (x, r) => dispatched.Set()); _messageDispatcher.Dispatch(dispatch, x => x == typeof(AsyncCommandHandler)); dispatched.WaitOne(500.Milliseconds()).ShouldBeTrue(); syncHandler.Called.ShouldBeFalse(); asyncHandler.CalledSignal.IsSet.ShouldBeTrue(); }
public void should_hide_task_scheduler() { _messageDispatcher.LoadMessageHandlerInvokers(); var syncHandler = new CapturingTaskSchedulerSyncCommandHandler(); _containerMock.Setup(x => x.GetInstance(typeof(CapturingTaskSchedulerSyncCommandHandler))).Returns(syncHandler); var asyncHandler = new CapturingTaskSchedulerAsyncCommandHandler(); _containerMock.Setup(x => x.GetInstance(typeof(CapturingTaskSchedulerAsyncCommandHandler))).Returns(asyncHandler); var command = new DispatchCommand(); Dispatch(command, MessageContext.CreateTest("u.name").WithDispatchQueueName("some queue")); // make sure we go through a dispatch queue! syncHandler.Signal.WaitOne(1.Second()).ShouldBeTrue(); asyncHandler.Signal.WaitOne(1.Second()).ShouldBeTrue(); syncHandler.TaskScheduler.ShouldEqual(TaskScheduler.Default); asyncHandler.TaskScheduler.ShouldEqual(TaskScheduler.Default); }
public void should_invoke_both_sync_and_async_handlers() { _messageDispatcher.LoadMessageHandlerInvokers(); var asyncHandler = new AsyncCommandHandler { WaitForSignal = true }; _containerMock.Setup(x => x.GetInstance(typeof(AsyncCommandHandler))).Returns(asyncHandler); var syncHandler = new SyncCommandHandler(); _containerMock.Setup(x => x.GetInstance(typeof(SyncCommandHandler))).Returns(syncHandler); var command = new DispatchCommand(); Dispatch(command); syncHandler.Called.ShouldBeTrue(); asyncHandler.CalledSignal.Wait(50.Milliseconds()).ShouldBeFalse(); command.Signal.Set(); asyncHandler.CalledSignal.Wait(1000.Milliseconds()).ShouldBeTrue(); }