public void Should_log_exception_if_cannot_reconnect()
        {
            // Arrange
            var waitHandler = new AutoResetEvent(false);
            var id = Guid.NewGuid();
            var channel = Substitute.For<IModel>();
            channel.IsOpen.Returns(true);
            var routeFinder = Substitute.For<IRouteFinder>();
            var durableConnection = Substitute.For<IDurableConnection>();
            durableConnection.ConnectionFactory.Returns(Substitute.For<ConnectionFactory>());
            durableConnection.When(x => x.Connect()).Do(callInfo =>
            {
                durableConnection.Connected += Raise.Event<Action>();
                durableConnection.IsConnected.Returns(true);
            });

            var watcher = Substitute.For<IRabbitWatcher>();

            durableConnection.CreateChannel().Returns(channel);
            var tunnel = new RabbitTunnelForTest(Substitute.For<IConsumerManager>(), watcher, routeFinder, durableConnection, Substitute.For<ISerializer>(), Substitute.For<ICorrelationIdGenerator>(), true);
            Action action = () => { waitHandler.Set(); throw new Exception("Cannot reconnect"); };
            tunnel.SubscribeActions[id] = action;
            tunnel.CreatedChannels.Add(channel);
            

            // Action
            tunnel.ExecuteSubscription(id);
            waitHandler.WaitOne(5000);

            // Assert
            watcher.Received(1).Error(Arg.Is<Exception>(e => e.Message == "Cannot reconnect"));
            
        }
Esempio n. 2
0
        public void Should_log_exception_if_cannot_reconnect()
        {
            // Arrange
            var waitHandler = new AutoResetEvent(false);
            var id          = Guid.NewGuid();
            var channel     = Substitute.For <IModel>();

            channel.IsOpen.Returns(true);
            var routeFinder       = Substitute.For <IRouteFinder>();
            var durableConnection = Substitute.For <IDurableConnection>();

            durableConnection.ConnectionFactory.Returns(Substitute.For <ConnectionFactory>());
            durableConnection.When(x => x.Connect()).Do(callInfo =>
            {
                durableConnection.Connected += Raise.Event <Action>();
                durableConnection.IsConnected.Returns(true);
            });

            var watcher = Substitute.For <IRabbitWatcher>();

            durableConnection.CreateChannel().Returns(channel);
            var    tunnel = new RabbitTunnelForTest(Substitute.For <IConsumerManager>(), watcher, routeFinder, durableConnection, Substitute.For <ISerializer>(), Substitute.For <ICorrelationIdGenerator>(), true);
            Action action = () => { waitHandler.Set(); throw new Exception("Cannot reconnect"); };

            tunnel.SubscribeActions[id] = action;
            tunnel.CreatedChannels.Add(channel);


            // Action
            tunnel.ExecuteSubscription(id);
            waitHandler.WaitOne(5000);

            // Assert
            watcher.Received(1).Error(Arg.Is <Exception>(e => e.Message == "Cannot reconnect"));
        }