コード例 #1
0
        public void RabbitMQBinding_TransactionalConsumption()
        {
            IOneWayService channel = _channelFactory.CreateChannel();

            Data data = new Data
                {
                    Id = 1,
                    Name = "Rabbit"
                };

            A.CallTo(() => _errorProcessorFake.Say(A<Data>._)).Throws(() => new Exception("Error while processing data")).Once();
            A.CallTo(() => _processorFake.Say(A<Data>.Ignored)).Invokes(() => _ev.Set());

            channel.Say(data);

            bool wait = _ev.Wait(TimeSpan.FromSeconds(10));

            Assert.IsTrue(wait, "Service were not being invoked");

            A.CallTo(() => _processorFake.Say(A<Data>._)).WhenArgumentsMatch(collection =>
                {
                    data.ShouldBeEquivalentTo(collection[0]);

                    return true;
                }).MustHaveHappened();
        }
        public void RabbitMQBinding_NonTransactionalDuplexWithPredefinedCallbackQueueDelivery()
        {
            IDuplexService channel = _channelFactory.CreateChannel();

            Data data = new Data
                {
                    Id = 1,
                    Name = "Rabbit"
                };

            A.CallTo(_errorProcessorFake).DoesNothing();
            A.CallTo(() => _callbackFake.Say(A<Data>.Ignored)).Invokes(() => _ev.Set());

            channel.Say(data);

            bool wait = _ev.Wait(TimeSpan.FromSeconds(10));

            Assert.IsTrue(wait, "Callback were not being invoked");

            A.CallTo(() => _processorFake.Say(A<Data>._)).WhenArgumentsMatch(collection =>
                {
                    data.ShouldBeEquivalentTo(collection[0]);

                    return true;
                }).MustHaveHappened(Repeated.Like(i => i == 1));

            A.CallTo(() => _callbackFake.Say(A<Data>._)).WhenArgumentsMatch(collection =>
                {
                    _replyData.ShouldBeEquivalentTo(collection[0]);

                    return true;
                }).MustHaveHappened(Repeated.Like(i => i == 1));
        }
コード例 #3
0
        public void RabbitMQBinding_TransactionalDispatching_MessagesCommited()
        {
            IOneWayService channel = _channelFactory.CreateChannel();

            Data data = new Data
                {
                    Id = 1,
                    Name = "Rabbit"
                };

            A.CallTo(() => _errorProcessorFake.Say(A<Data>._)).DoesNothing();
            A.CallTo(() => _processorFake.Say(A<Data>.Ignored)).Invokes(() => _ev.Set());

            using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.RequiresNew))
            {
                channel.Say(data);

                // Complete the transaction
                transaction.Complete();
            }

            bool wait = _ev.Wait(TimeSpan.FromSeconds(10));

            Assert.IsTrue(wait, "Service were not being invoked");

            A.CallTo(() => _processorFake.Say(A<Data>._)).WhenArgumentsMatch(collection =>
            {
                data.ShouldBeEquivalentTo(collection[0]);

                return true;
            }).MustHaveHappened();
        }