public void AttachingNullConsumerToMsmqReaderThrows() { var messageQueueMock = new Mock <IMessageQueue>(); var receiverReader = new MsmqReader <Message1>(messageQueueMock.Object, message1 => (Message1)message1.Message.Body); Assert.Throws <ArgumentNullException>(() => receiverReader.AttachConsumer(null)); }
public void TestQueueReaderWithMockMsmqWithNoConsumer() { var actualMessage = new Message1 { CorrelationId = "f3e608d4-96cf-4093-9923-91b13f4b7555" }; var messageQueueMock = new Mock <IMessageQueue>(); var messageMock = new MessageQueueMessageWrapper(new Message { Body = actualMessage }); messageQueueMock.Setup(m => m.EndReceive(It.IsAny <IAsyncResult>())).Returns(messageMock); var beginReceiveCalled = false; messageQueueMock.Setup(m => m.BeginReceive(It.IsAny <TimeSpan>())) .Callback( () => { if (beginReceiveCalled) { throw CreateMessageQueueException(); } beginReceiveCalled = true; messageQueueMock.Raise(m => m.ReceiveCompleted += null, new MessageQueueReceiveCompletedEventArgs(null)); }); var receiverReader = new MsmqReader <Message1>(messageQueueMock.Object, message1 => (Message1)message1.Message.Body); receiverReader.Start(); messageQueueMock.Verify(m => m.BeginReceive(It.IsAny <TimeSpan>()), Times.Exactly(1)); }
public void TestQueueReaderWithMockMsmqEndReceiveThrowsOn2ndRetry() { var messageQueueMock = new Mock <IMessageQueue>(); var throwCount = 0; messageQueueMock .Setup(m => m.EndReceive(It.IsAny <IAsyncResult>())) .Callback(() => { throwCount++; throw CreateMessageQueueException((int)MessageQueueErrorCode.IOTimeout); }); messageQueueMock.Setup(m => m.BeginReceive(It.IsAny <TimeSpan>())) .Callback( () => { if (throwCount++ == 1) { throw CreateMessageQueueException((int)MessageQueueErrorCode.IOTimeout); } if (throwCount > 1) { throw CreateMessageQueueException((int)MessageQueueErrorCode.AccessDenied); } messageQueueMock.Raise(m => m.ReceiveCompleted += null, new MessageQueueReceiveCompletedEventArgs(null)); }); using (var receiverReader = new MsmqReader <Message1>(messageQueueMock.Object, message1 => (Message1)message1.Message.Body)) { receiverReader.AttachConsumer(new ActionConsumer <Message1>(m => { })); Assert.Throws <MessageQueueException>(() => receiverReader.Start()); } }
public void TestQueueReaderWithMockMsmqEndReceiveOneRetry() { var actualMessage = new Message1 { CorrelationId = "f3e608d4-96cf-4093-9923-91b13f4b7555" }; var messageQueueMock = new Mock <IMessageQueue>(); var messageMock = new MessageQueueMessageWrapper(new Message { Body = actualMessage }); var throwCount = 0; messageQueueMock .Setup(m => m.EndReceive(It.IsAny <IAsyncResult>())) .Returns(() => messageMock) .Callback(() => { throwCount++; if (throwCount == 2) { throw CreateMessageQueueException((int)MessageQueueErrorCode.IOTimeout); } messageQueueMock.Raise(m => m.ReceiveCompleted += null, new MessageQueueReceiveCompletedEventArgs(null)); }); bool beginReceiveCalled = false; messageQueueMock.Setup(m => m.BeginReceive(It.IsAny <TimeSpan>())) .Callback( () => { if (beginReceiveCalled) { throw CreateMessageQueueException(); } beginReceiveCalled = true; messageQueueMock.Raise(m => m.ReceiveCompleted += null, new MessageQueueReceiveCompletedEventArgs(null)); }); Message1 message = null; using (var receiverReader = new MsmqReader <Message1>(messageQueueMock.Object, message1 => (Message1)message1.Message.Body)) { receiverReader.AttachConsumer(new ActionConsumer <Message1>(m => { message = m; receiverReader.Dispose(); })); receiverReader.Start(); Assert.IsNotNull(message); Assert.AreEqual("f3e608d4-96cf-4093-9923-91b13f4b7555", message.CorrelationId); messageQueueMock.Verify(m => m.BeginReceive(It.IsAny <TimeSpan>()), Times.Exactly(2)); } }
public void TestMsmqReader() { var queueName = @".\private$\Orders"; MessageQueue messageQueue; if (MessageQueue.Exists(queueName)) { messageQueue = new MessageQueue(queueName); } else { messageQueue = MessageQueue.Create(queueName); } try { Message1 message; EventWaitHandle waitHandle; using (var receiverReader = new MsmqReader <Message1>(new MessageQueueWrapper(messageQueue), message1 => (Message1)message1.Message.Body) ) { message = null; waitHandle = new ManualResetEvent(false); receiverReader.AttachConsumer(new ActionConsumer <Message1>(m => { message = m; waitHandle.Set(); })); receiverReader.Start(); var msmqMessage = new Message { Body = new Message1 { CorrelationId = "f3e608d4-96cf-4093-9923-91b13f4b7555" }, Formatter = new BinaryMessageFormatter() }; messageQueue.Formatter = msmqMessage.Formatter; messageQueue.Send(msmqMessage); var result = waitHandle.WaitOne(TimeSpan.FromSeconds(2)); } Assert.IsNotNull(message); Assert.AreEqual("f3e608d4-96cf-4093-9923-91b13f4b7555", message.CorrelationId); } finally { MessageQueue.Delete(queueName); } }
public void TestQueueReaderWithMockMsmqEndReceiveThrows() { var messageQueueMock = new Mock <IMessageQueue>(); messageQueueMock.Setup(m => m.EndReceive(It.IsAny <IAsyncResult>())).Throws(CreateMessageQueueException(-1072824283)); messageQueueMock.Setup(m => m.BeginReceive(It.IsAny <TimeSpan>())) .Callback( () => { messageQueueMock.Raise(m => m.ReceiveCompleted += null, new MessageQueueReceiveCompletedEventArgs(null)); }); using (var receiverReader = new MsmqReader <Message1>(messageQueueMock.Object, message1 => (Message1)message1.Message.Body)) { receiverReader.AttachConsumer(new ActionConsumer <Message1>(m => { })); Assert.Throws <MessageQueueException>(() => receiverReader.Start()); } }