public void TestWithChannelListener() { var mockConnectionFactory = new Mock<ConnectionFactory>(); var mockConnection = new Mock<IConnection>(); var mockChannel = new Mock<IModel>(); mockConnectionFactory.Setup(factory => factory.CreateConnection()).Returns(mockConnection.Object); mockConnection.Setup(c => c.IsOpen).Returns(true); mockConnection.Setup(connection => connection.CreateModel()).Returns(mockChannel.Object); var called = new AtomicInteger(0); var connectionFactory = this.CreateConnectionFactory(mockConnectionFactory.Object); var channelListeners = new List<IChannelListener>(); var mockChannelListener = new Mock<IChannelListener>(); mockChannelListener.Setup(listener => listener.OnCreate(It.IsAny<IModel>(), It.IsAny<bool>())).Callback(() => called.IncrementValueAndReturn()); channelListeners.Add(mockChannelListener.Object); connectionFactory.ChannelListeners = channelListeners; var con = connectionFactory.CreateConnection(); var channel = con.CreateChannel(false); Assert.AreEqual(1, called.Value); channel.Close(); con.Close(); mockConnection.Verify(c => c.Close(), Times.Never()); connectionFactory.CreateConnection(); con.CreateChannel(false); Assert.AreEqual(2, called.Value); connectionFactory.Dispose(); mockConnection.Verify(c => c.Close(), Times.AtLeastOnce()); mockConnectionFactory.Verify(c => c.CreateConnection()); }
public void TestWithListener() { var mockConnectionFactory = new Mock<ConnectionFactory>(); var mockConnection = new Mock<IConnection>(); mockConnectionFactory.Setup(factory => factory.CreateConnection()).Returns(mockConnection.Object); var called = new AtomicInteger(0); var connectionFactory = this.CreateConnectionFactory(mockConnectionFactory.Object); var connectionListeners = new List<IConnectionListener>(); var mockConnectionListener = new Mock<IConnectionListener>(); mockConnectionListener.Setup(listener => listener.OnCreate(It.IsAny<Rabbit.Connection.IConnection>())).Callback(() => called.IncrementValueAndReturn()); mockConnectionListener.Setup(listener => listener.OnClose(It.IsAny<Rabbit.Connection.IConnection>())).Callback(() => called.DecrementValueAndReturn()); connectionListeners.Add(mockConnectionListener.Object); connectionFactory.ConnectionListeners = connectionListeners; var con = connectionFactory.CreateConnection(); Assert.AreEqual(1, called.Value); con.Close(); Assert.AreEqual(1, called.Value); mockConnection.Verify(c => c.Close(), Times.Never()); connectionFactory.CreateConnection(); Assert.AreEqual(1, called.Value); connectionFactory.Dispose(); Assert.AreEqual(0, called.Value); mockConnection.Verify(c => c.Close(), Times.AtLeastOnce()); mockConnectionFactory.Verify(c => c.CreateConnection(), Times.Exactly(1)); }
/// <summary>Initializes a new instance of the <see cref="StopStartIntegrationTestListner"/> class.</summary> /// <param name="deliveries">The deliveries.</param> public StopStartIntegrationTestListner(AtomicInteger deliveries) { this.deliveries = deliveries; }
public void TestReplyToThreeDeep() { var mockConnectionFactory = new Mock<ConnectionFactory>(); var mockConnection = new Mock<IConnection>(); var mockChannel = new Mock<IModel>(); mockConnectionFactory.Setup(m => m.CreateConnection()).Returns(mockConnection.Object); mockConnection.Setup(m => m.IsOpen).Returns(true); mockConnection.Setup(m => m.CreateModel()).Returns(mockChannel.Object); mockChannel.Setup(m => m.CreateBasicProperties()).Returns(() => new BasicProperties()); var template = new RabbitTemplate(new SingleConnectionFactory(mockConnectionFactory.Object)); var replyQueue = new Queue("new.replyTo"); template.ReplyQueue = replyQueue; var messageProperties = new MessageProperties(); messageProperties.ReplyTo = "replyTo2"; messageProperties.SetHeader(RabbitTemplate.STACKED_REPLY_TO_HEADER, "replyTo1"); messageProperties.SetHeader(RabbitTemplate.STACKED_CORRELATION_HEADER, "a"); var message = new Message(Encoding.UTF8.GetBytes("Hello, world!"), messageProperties); var props = new List<IBasicProperties>(); var count = new AtomicInteger(); var nestedReplyTo = new List<string>(); var nestedReplyStack = new List<string>(); var nestedCorrelation = new List<string>(); mockChannel.Setup(m => m.BasicPublish(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<bool>(), It.IsAny<bool>(), It.IsAny<IBasicProperties>(), It.IsAny<byte[]>())).Callback<string, string, bool, bool, IBasicProperties, byte[]> ( (a1, a2, a3, a4, a5, a6) => { var basicProps = a5; props.Add(basicProps); var springProps = new DefaultMessagePropertiesConverter().ToMessageProperties(basicProps, null, "UTF-8"); var replyMessage = new Message(Encoding.UTF8.GetBytes("!dlrow olleH"), springProps); if (count.IncrementValueAndReturn() < 2) { var anotherMessage = new Message(Encoding.UTF8.GetBytes("Second"), springProps); replyMessage = template.SendAndReceive(anotherMessage); nestedReplyTo.Add(replyMessage.MessageProperties.ReplyTo); nestedReplyStack.Add((string)replyMessage.MessageProperties.Headers[RabbitTemplate.STACKED_REPLY_TO_HEADER]); nestedCorrelation.Add((string)replyMessage.MessageProperties.Headers[RabbitTemplate.STACKED_CORRELATION_HEADER]); } template.OnMessage(replyMessage); }); var reply = template.SendAndReceive(message); Assert.IsNotNull(reply); Assert.AreEqual(2, props.Count); var basicProperties = props[0]; Assert.AreEqual("new.replyTo", basicProperties.ReplyTo); Assert.AreEqual("replyTo2:replyTo1", basicProperties.Headers[RabbitTemplate.STACKED_REPLY_TO_HEADER]); Assert.IsTrue(((string)basicProperties.Headers[RabbitTemplate.STACKED_CORRELATION_HEADER]).EndsWith(":a")); basicProperties = props[1]; Assert.AreEqual("new.replyTo", basicProperties.ReplyTo); Assert.AreEqual("new.replyTo:replyTo2:replyTo1", basicProperties.Headers[RabbitTemplate.STACKED_REPLY_TO_HEADER]); Assert.IsTrue(((string)basicProperties.Headers[RabbitTemplate.STACKED_CORRELATION_HEADER]).EndsWith(":a")); Assert.AreEqual("replyTo1", reply.MessageProperties.Headers[RabbitTemplate.STACKED_REPLY_TO_HEADER]); Assert.AreEqual("a", reply.MessageProperties.Headers[RabbitTemplate.STACKED_CORRELATION_HEADER]); Assert.AreEqual(1, nestedReplyTo.Count); Assert.AreEqual(1, nestedReplyStack.Count); Assert.AreEqual(1, nestedCorrelation.Count); Assert.AreEqual("replyTo2:replyTo1", nestedReplyStack[0]); Assert.IsTrue(nestedCorrelation[0].EndsWith(":a")); }
public void TestWithChannelListener() { var mockConnectionFactory = new Mock<ConnectionFactory>(); var mockConnection = new Mock<IConnection>(); var mockChannel = new Mock<IModel>(); mockConnectionFactory.Setup(c => c.CreateConnection()).Returns(mockConnection.Object); mockConnection.Setup(m => m.IsOpen).Returns(true); mockChannel.Setup(m => m.IsOpen).Returns(true); mockConnection.Setup(m => m.CreateModel()).Returns(mockChannel.Object); var called = new AtomicInteger(0); var connectionFactory = this.CreateConnectionFactory(mockConnectionFactory.Object); var mockConnectionListener = new Mock<IConnectionListener>(); mockConnectionListener.Setup(m => m.OnCreate(It.IsAny<Rabbit.Connection.IConnection>())).Callback((Rabbit.Connection.IConnection conn) => called.IncrementValueAndReturn()); mockConnectionListener.Setup(m => m.OnClose(It.IsAny<Rabbit.Connection.IConnection>())).Callback((Rabbit.Connection.IConnection conn) => called.DecrementValueAndReturn()); connectionFactory.ConnectionListeners = new List<IConnectionListener> { mockConnectionListener.Object }; ((CachingConnectionFactory)connectionFactory).ChannelCacheSize = 1; var con = connectionFactory.CreateConnection(); var channel = con.CreateChannel(false); Assert.AreEqual(1, called.Value); channel.Close(); con.Close(); mockConnection.Verify(c => c.Close(), Times.Never()); connectionFactory.CreateConnection(); con.CreateChannel(false); Assert.AreEqual(1, called.Value); connectionFactory.Dispose(); mockConnection.Verify(c => c.Close(), Times.AtLeastOnce()); mockConnectionFactory.Verify(c => c.CreateConnection(), Times.Exactly(1)); }