Ejemplo n.º 1
0
        public void Should_retry_when_configured_for_environmental_errors_only_and_error_is_environmental()
        {
            var logger     = new FakeLogger();
            var handler    = new FakeEnvironmentExceptionThrowingUserHandler();
            var errorQueue = new FakeValidMessageQueue("errorQueue");
            var bus        = new Bus(new FakeBusConfig {
                MaxRetries = 2, EnvironmentalErrorsOnly = true
            }, logger, errorQueue, QueueWithOneMessage("readQueue"), new[] { new FakeValidMessageQueue("writeQueue1") });

            bus.RegisterHandler(handler);

            bus.Receive <FakeDto>();

            Assert.That(logger[0], Is.StringContaining("Transaction started"));
            Assert.That(logger[1], Is.StringContaining("Started RECEIVE Operation"));
            Assert.That(logger[2], Is.StringContaining("Payload: FakeDto"));
            Assert.That(logger[3], Is.StringContaining("Invoking registered handler"));
            Assert.That(logger[4], Is.StringContaining("TRANSACTION STATUS: Active - REASON: deadlocked"));
            Assert.That(logger[5], Is.StringContaining("Retry attempt 1"));
            Assert.That(logger[6], Is.StringContaining("Payload: FakeDto"));
            Assert.That(logger[7], Is.StringContaining("Invoking registered handler"));
            Assert.That(logger[8], Is.StringContaining("TRANSACTION STATUS: Active - REASON: deadlocked"));
            Assert.That(logger[9], Is.StringContaining("Retry attempt 2"));
            Assert.That(logger[10], Is.StringContaining("Payload: FakeDto"));
            Assert.That(logger[11], Is.StringContaining("Invoking registered handler"));
            Assert.That(logger[12], Is.StringContaining("TRANSACTION STATUS: Active - REASON: deadlocked"));
            Assert.That(logger[13], Is.StringContaining("Invocation failed"));
            Assert.That(logger[14], Is.StringContaining("Removing from read queue: readQueue"));
            Assert.That(logger[15], Is.StringContaining("Moving to error queue: errorQueue"));
            Assert.That(logger[16], Is.StringContaining("EXCEPTION - deadlocked"));
            Assert.That(logger[18], Is.StringContaining("Completed RECEIVE Operation"));
            Assert.That(logger[19], Is.StringContaining("Transaction rolled back"));
        }
Ejemplo n.º 2
0
        public void Should_log_retries_on_error()
        {
            var logger     = new FakeLogger();
            var handler    = new FakeExceptionThrowingUserHandler();
            var errorQueue = new FakeValidMessageQueue();
            var bus        = new Bus(new FakeBusConfig {
                MaxRetries = 2
            }, logger, errorQueue, QueueWithOneMessage(), new[] { new FakeValidMessageQueue() });

            bus.RegisterHandler(handler);

            bus.Receive <FakeDto>();

            Assert.That(logger[0], Is.StringEnding("Transaction started"));
            Assert.That(logger[1], Is.StringEnding("Started RECEIVE Operation"));
            Assert.That(logger[2], Is.StringEnding("Payload: FakeDto"));
            Assert.That(logger[3], Is.StringEnding("Invoking registered handler"));
            Assert.That(logger[4], Is.StringEnding("Retry attempt 1"));
            Assert.That(logger[5], Is.StringEnding("Payload: FakeDto"));
            Assert.That(logger[6], Is.StringEnding("Invoking registered handler"));
            Assert.That(logger[7], Is.StringEnding("Retry attempt 2"));
            Assert.That(logger[8], Is.StringEnding("Payload: FakeDto"));
            Assert.That(logger[9], Is.StringEnding("Invoking registered handler"));
            Assert.That(logger[10], Is.StringEnding("Invocation failed"));
            Assert.That(logger[11], Is.StringEnding("Removing from read queue: FakeValidMessageQueue"));
            Assert.That(logger[12], Is.StringEnding("Moving to error queue: FakeValidMessageQueue"));
            Assert.That(logger[13], Is.StringEnding("EXCEPTION The method or operation is not implemented."));
            Assert.That(logger[15], Is.StringEnding("Completed RECEIVE Operation"));
            Assert.That(logger[16], Is.StringEnding("Transaction rolled back"));
        }
Ejemplo n.º 3
0
        public void Should_move_message_to_read_queue()
        {
            var readQueue = new FakeValidMessageQueue();
            var bus       = new Bus(new FakeBusConfig(), new NullLogger(), QueueWithOneMessage(), readQueue, new[] { new FakeValidMessageQueue() });

            bus.ReturnErrorMessages();

            Assert.That(readQueue.Count, Is.EqualTo(1));
        }
Ejemplo n.º 4
0
        internal IMessageQueue QueueWithOneMessage()
        {
            var queue = new FakeValidMessageQueue();

            queue.Add(new Message {
                Body = new FakeDto()
            });
            return(queue);
        }
Ejemplo n.º 5
0
        public void Should_throw_when_write_queues_are_undefined()
        {
            var emptyWriteQueueList = new FakeValidMessageQueue[] { };
            var bus = new Bus(new BusConfig(), new NullLogger(), new FakeValidMessageQueue(), new FakeValidMessageQueue(), emptyWriteQueueList);

            var exception = Assert.Throws <BusException>(() => bus.Send(new FakeDto()));

            Assert.That(exception.Message, Is.EqualTo("Bus has not been configured for sending messages. Did you forget to call DefineWriteQueue on BusBuilder?"));
        }
Ejemplo n.º 6
0
        internal FakeValidMessageQueue QueueWithOneMessage(string queueName)
        {
            var queue = new FakeValidMessageQueue(queueName);

            queue.Add(new Message {
                Body = new FakeDto(), Label = "00000-00000-00000-00000\0000"
            });
            return(queue);
        }
Ejemplo n.º 7
0
        public void Should_throw_when_specific_message_is_not_found()
        {
            var errorQueue = QueueWithTwoMessages("errorQueue");
            var readQueue  = new FakeValidMessageQueue("readQueue");
            var bus        = new Bus(new FakeBusConfig(), new NullLogger(), errorQueue, readQueue, new[] { new FakeValidMessageQueue("writeQueue1") });

            var exception = Assert.Throws <BusException>(() => bus.ReturnErrorMessage("0"));

            Assert.That(exception.Message, Is.EqualTo("Message with id 0 was not found on the error queue"));
        }
Ejemplo n.º 8
0
        public void Should_move_specific_message_to_read_queue()
        {
            var errorQueue = QueueWithTwoMessages("errorQueue");
            var readQueue  = new FakeValidMessageQueue("readQueue");
            var bus        = new Bus(new FakeBusConfig(), new NullLogger(), errorQueue, readQueue, new[] { new FakeValidMessageQueue("writeQueue1") });

            bus.ReturnErrorMessage("00000-00000-00000-00000\0000");

            Assert.That(errorQueue.Count, Is.EqualTo(1));
            Assert.That(readQueue.Count, Is.EqualTo(1));
        }
Ejemplo n.º 9
0
        public void Should_move_all_to_read_queue()
        {
            var errorQueue = QueueWithTwoMessages();
            var readQueue  = new FakeValidMessageQueue();
            var bus        = new Bus(new FakeBusConfig(), new NullLogger(), errorQueue, readQueue, new[] { new FakeValidMessageQueue() });

            bus.ReturnAllErrorMessages();

            Assert.That(errorQueue.Count, Is.EqualTo(0));
            Assert.That(readQueue.Count, Is.EqualTo(2));
        }
Ejemplo n.º 10
0
        internal FakeValidMessageQueue QueueWithTwoMessages()
        {
            var queue = new FakeValidMessageQueue();

            queue.Add(new Message {
                Body = new FakeDto(), Label = "00000-00000-00000-00000\0000"
            });
            queue.Add(new Message {
                Body = new FakeDto(), Label = "00000-00000-00000-00000\0001"
            });
            return(queue);
        }
Ejemplo n.º 11
0
        public void Should_move_message_to_error_queue_on_error()
        {
            var logger     = new FakeLogger();
            var handler    = new FakeExceptionThrowingUserHandler();
            var errorQueue = new FakeValidMessageQueue();
            var bus        = new Bus(new FakeBusConfig(), logger, errorQueue, QueueWithOneMessage(), new[] { new FakeValidMessageQueue() });

            bus.RegisterHandler(handler);

            bus.Receive <FakeDto>();

            Assert.That(errorQueue.Count, Is.EqualTo(1));
        }
Ejemplo n.º 12
0
        public void Should_log_all_steps_involved()
        {
            var logger    = new FakeLogger();
            var readQueue = new FakeValidMessageQueue();
            var bus       = new Bus(new FakeBusConfig(), logger, QueueWithOneMessage(), readQueue, new[] { new FakeValidMessageQueue() });

            bus.ReturnErrorMessages();

            Assert.That(logger[0], Is.StringEnding("Started RETURN_TO_SOURCE Operation"));
            Assert.That(logger[1], Is.StringEnding("Removing from queue: FakeValidMessageQueue"));
            Assert.That(logger[2], Is.StringEnding("Sending to queue: FakeValidMessageQueue"));
            Assert.That(logger[3], Is.StringEnding("Completed RETURN_TO_SOURCE Operation"));
        }
Ejemplo n.º 13
0
        public void Should_log_all_steps_involved()
        {
            var logger    = new FakeLogger();
            var readQueue = new FakeValidMessageQueue("readQueue");
            var bus       = new Bus(new FakeBusConfig(), logger, QueueWithOneMessage("errorQueue"), readQueue, new[] { new FakeValidMessageQueue("writeQueue1") });

            bus.ReturnAllErrorMessages();

            Assert.That(logger[0], Is.StringContaining("Transaction started"));
            Assert.That(logger[1], Is.StringContaining("Started RETURN_TO_SOURCE Operation"));
            Assert.That(logger[2], Is.StringContaining("Removing from queue: errorQueue"));
            Assert.That(logger[3], Is.StringContaining("Sending to queue: readQueue"));
            Assert.That(logger[4], Is.StringContaining("Completed RETURN_TO_SOURCE Operation"));
            Assert.That(logger[5], Is.StringContaining("Transaction committed"));
        }
Ejemplo n.º 14
0
        public void Should_move_failed_messages_to_error_queue_when_fail_fast_not_configured()
        {
            var logger     = new FakeLogger();
            var handler    = new FakeExceptionThrowingUserHandler();
            var errorQueue = new FakeValidMessageQueue("errorQueue");
            var readQueue  = QueueWithTwoMessages("readQueue");
            var bus        = new Bus(new FakeBusConfig {
                FailFast = false
            }, logger, errorQueue, readQueue, new[] { new FakeValidMessageQueue("writeQueue1") });

            bus.RegisterHandler(handler);

            bus.Receive <FakeDto>();

            Assert.That(errorQueue.Count, Is.EqualTo(2));
            Assert.That(readQueue.Count, Is.EqualTo(0));
        }
Ejemplo n.º 15
0
        public void Should_discard_failed_messages_to_when_discard_failures_configured()
        {
            var logger     = new FakeLogger();
            var handler    = new FakeExceptionThrowingUserHandler();
            var errorQueue = new FakeValidMessageQueue();
            var readQueue  = QueueWithTwoMessages();
            var bus        = new Bus(new FakeBusConfig {
                DiscardFailures = true
            }, logger, errorQueue, readQueue, new[] { new FakeValidMessageQueue() });

            bus.RegisterHandler(handler);

            bus.Receive <FakeDto>();

            Assert.That(errorQueue.Count, Is.EqualTo(0));
            Assert.That(readQueue.Count, Is.EqualTo(0));
        }
Ejemplo n.º 16
0
        public void Should_leave_failed_message_on_read_queue_when_fail_fast_configured()
        {
            var logger     = new FakeLogger();
            var handler    = new FakeExceptionThrowingUserHandler();
            var errorQueue = new FakeValidMessageQueue("errorQueue");
            var readQueue  = QueueWithTwoMessages("readQueue");
            var bus        = new Bus(new FakeBusConfig {
                FailFast = true
            }, logger, errorQueue, readQueue, new[] { new FakeValidMessageQueue("writeQueue1") });

            bus.RegisterHandler(handler);

            bus.Receive <FakeDto>();

            Assert.That(errorQueue.Count, Is.EqualTo(0));
            Assert.That(readQueue.Count, Is.EqualTo(2));
            Assert.That(logger[10], Is.StringContaining("FailFast option enabled - Queue processing halted"));
        }
Ejemplo n.º 17
0
        public void Should_discard_failed_messages_to_when_discard_failures_configured()
        {
            var logger     = new FakeLogger();
            var handler    = new FakeExceptionThrowingUserHandler();
            var errorQueue = new FakeValidMessageQueue("errorQueue");
            var readQueue  = QueueWithTwoMessages("readQueue");
            var bus        = new Bus(new FakeBusConfig {
                DiscardFailures = true
            }, logger, errorQueue, readQueue, new[] { new FakeValidMessageQueue("writeQueue1") });

            bus.RegisterHandler(handler);

            bus.Receive <FakeDto>();

            Assert.That(errorQueue.Count, Is.EqualTo(0));
            Assert.That(readQueue.Count, Is.EqualTo(0));
            Assert.That(logger[11], Is.StringContaining("DiscardFailures option enabled - Payload discarded"));
            Assert.That(logger[23], Is.StringContaining("DiscardFailures option enabled - Payload discarded"));
        }