Esempio n. 1
0
        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));
        }
        public void TestWithListenerRegisteredAfterOpen()
        {
            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 con = connectionFactory.CreateConnection();

            Assert.AreEqual(0, called.Value);

            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;

            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));
        }