public async Task SendAndReceiveAsyncVariableTimeoutCustomHeaders() { var latch = new CountdownEvent(1); Template.ReceiveTimeout = 10000; Template.SendTimeout = 20000; Template.ThrowExceptionOnLateReply = true; Template.SendTimeoutHeader = "sto"; Template.ReceiveTimeoutHeader = "rto"; var handler = new LateReplierMessageHandler(latch); var chanMock = new Mock <ISubscribableChannel>(); var channel = chanMock.Object; chanMock.Setup( chan => chan.SendAsync(It.IsAny <IMessage>(), It.Is <CancellationToken>(t => t.IsCancellationRequested == false))) .Callback <IMessage, CancellationToken>((m, t) => { Task.Run(() => handler.HandleMessage(m)); }) .Returns(new ValueTask <bool>(true)); var message = MessageBuilder.WithPayload("request") .SetHeader("sto", 30000) .SetHeader("rto", 1) .Build(); var result = await Template.SendAndReceiveAsync(channel, message); Assert.Null(result); Assert.True(latch.Wait(10000)); Assert.Null(handler.Failure); chanMock.Verify(chan => chan.SendAsync(It.IsAny <IMessage>(), It.Is <CancellationToken>(t => t.IsCancellationRequested == false))); }
public void SendAndReceiveVariableTimeoutCustomHeaders() { var latch = new CountdownEvent(1); Template.ReceiveTimeout = 10000; Template.SendTimeout = 20000; Template.ThrowExceptionOnLateReply = true; Template.SendTimeoutHeader = "sto"; Template.ReceiveTimeoutHeader = "rto"; var handler = new LateReplierMessageHandler(latch); var chanMock = new Mock <ISubscribableChannel>(); var channel = chanMock.Object; chanMock.Setup( chan => chan.Send(It.IsAny <IMessage>(), It.IsAny <int>())) .Callback <IMessage, int>((m, t) => { Task.Run(() => handler.HandleMessage(m)); }) .Returns(true); var message = MessageBuilder.WithPayload("request") .SetHeader("sto", 30000) .SetHeader("rto", 1) .Build(); var result = Template.SendAndReceive(channel, message); Assert.Null(result); Assert.True(latch.Wait(10000)); Assert.Null(handler.Failure); chanMock.Verify(chan => chan.Send(It.IsAny <IMessage>(), It.Is <int>(i => i == 30000))); }
public async Task SendAndReceiveAsyncTimeout() { var latch = new CountdownEvent(1); Template.ReceiveTimeout = 1; Template.SendTimeout = 30000; Template.ThrowExceptionOnLateReply = true; var handler = new LateReplierMessageHandler(latch); var chanMock = new Mock <ISubscribableChannel>(); var channel = chanMock.Object; chanMock.Setup( chan => chan.SendAsync(It.IsAny <IMessage>(), It.Is <CancellationToken>(t => t.IsCancellationRequested == false))) .Callback <IMessage, CancellationToken>((m, t) => { Task.Run(() => handler.HandleMessage(m)); }) .Returns(new ValueTask <bool>(true)); var result = await Template.ConvertSendAndReceiveAsync <string>(channel, "request"); Assert.Null(result); Assert.True(latch.Wait(10000)); Assert.Null(handler.Failure); chanMock.Verify(chan => chan.SendAsync(It.IsAny <IMessage>(), It.Is <CancellationToken>(t => t.IsCancellationRequested == false))); }
public void SendAndReceiveTimeout() { var latch = new CountdownEvent(1); Template.ReceiveTimeout = 1; Template.SendTimeout = 30000; Template.ThrowExceptionOnLateReply = true; var handler = new LateReplierMessageHandler(latch); var chanMock = new Mock <ISubscribableChannel>(); var channel = chanMock.Object; chanMock.Setup( chan => chan.Send(It.IsAny <IMessage>(), It.Is <int>(i => i == 30000))) .Callback <IMessage, int>((m, t) => { Task.Run(() => handler.HandleMessage(m)); }) .Returns(true); var result = Template.ConvertSendAndReceive <string>(channel, "request"); Assert.Null(result); Assert.True(latch.Wait(10000)); Assert.Null(handler.Failure); chanMock.Verify(chan => chan.Send(It.IsAny <IMessage>(), It.Is <int>(i => i == 30000))); }