Ejemplo n.º 1
0
            public void Valid_Arguments()
            {
                // Act
                var serviceBusTransportManager = new ServiceBusTransportManager(Mock.Of <ITransport>(), Mock.Of <ICircuitBreaker>(), Mock.Of <IEventLogger>());

                // Assert
                Assert.That(serviceBusTransportManager, Is.Not.Null);
            }
Ejemplo n.º 2
0
            public async Task Initialise_Calls_Initialise_On_The_Transport()
            {
                //Arrange
                var manager = new ServiceBusTransportManager(_mockTransport.Object, Mock.Of <ICircuitBreaker>(), Mock.Of <IEventLogger>());

                //Act
                await manager.Initialise(CancellationToken.None);

                //Assert
                _mockTransport.Verify(x => x.Initialise(CancellationToken.None), Times.Once);
            }
Ejemplo n.º 3
0
            public void Info_Event_Logged_If_Circuit_Breaker_Resets()
            {
                // Arrange
                var unused = new ServiceBusTransportManager(_mockTransport.Object, _mockCircuitBreaker.Object, _mockEventLogger.Object);

                // Act
                _mockCircuitBreaker.Raise(m => m.CircuitBreakerReset += null, new EventArgs());

                // Assert
                Assert.That(_loggedMessage, Contains.Substring("Circuit Breaker on queue 'Test Queue Name' reset"));
            }
Ejemplo n.º 4
0
            public async Task Start_Calls_Start_On_The_Transport()
            {
                //Arrange
                var manager = new ServiceBusTransportManager(_mockTransport.Object, Mock.Of <ICircuitBreaker>(), Mock.Of <IEventLogger>());

                //Act
                await manager.Start(CancellationToken.None);

                //Assert
                //This is expect as twice because it was called once from the constructor
                _mockTransport.Verify(x => x.Start(CancellationToken.None), Times.Exactly(2));
            }
Ejemplo n.º 5
0
            public void Warning_Event_Logged_If_Circuit_Breaker_Opens()
            {
                // Arrange
                var unused        = new ServiceBusTransportManager(_mockTransport.Object, _mockCircuitBreaker.Object, _mockEventLogger.Object);
                var testException = new ApplicationException("Test Exception Message");
                var testDuration  = new TimeSpan(10);

                // Act
                _mockCircuitBreaker.Raise(m => m.CircuitBreakerOpened += null, this, new CircuitBreakerOpenedEventArgs(testException, testDuration));

                // Assert
                Assert.That(_loggedMessage, Contains.Substring($"Circuit Breaker opened on queue '{TestQueueName}' for duration of {testDuration} due to {testException.Message}"));
            }
Ejemplo n.º 6
0
            public async Task A_Single_Listener_Can_Be_Registered_On_The_Transport_Manager()
            {
                //Arrange
                _mockTransport.Setup(x => x.Configuration).Returns(new TransportConfiguration());
                var mockListerner = new Mock <IMessageListener>();
                var manager       = new ServiceBusTransportManager(_mockTransport.Object, Mock.Of <ICircuitBreaker>(), Mock.Of <IEventLogger>());

                //Act
                await manager.RegisterListener(mockListerner.Object);

                //Assert
                Assert.That(_mockTransport.Object.Configuration.Listeners, Has.Exactly(1).EqualTo(mockListerner.Object));
            }
Ejemplo n.º 7
0
            public void Enqueue_Message_Throws_Exception_When_Transport_Fails_To_Send_The_Message()
            {
                _mockCircuitBreaker.
                Setup(m => m.ExecuteAsync(It.IsAny <Func <CancellationToken, Task> >(), It.IsAny <Func <Exception, Task> >(), It.IsAny <CancellationToken>())).
                Returns(Task.CompletedTask).
                Callback((Func <CancellationToken, Task> executeAction, Func <Exception, Task> failureAction, CancellationToken c) => failureAction(Mock.Of <Exception>()));

                var manager = new ServiceBusTransportManager(_mockTransport.Object, _mockCircuitBreaker.Object, Mock.Of <IEventLogger>());

                async Task TestDelegateAsync() => await manager.EnqueueMessage(It.IsAny <byte[]>(), CancellationToken.None);

                Assert.ThrowsAsync <MessageSendFailure>(TestDelegateAsync);
            }
Ejemplo n.º 8
0
            public async Task Failing_To_Attach_To_Transport_Manager_Will_Return_False()
            {
                //Arrange
                var transport        = new Mock <ITransport>();
                var transportManager = new ServiceBusTransportManager(transport.Object, Mock.Of <ICircuitBreaker>(), Mock.Of <IEventLogger>());
                var listener         = new ServiceBusListener(_mockSerialiser.Object, _mockHandlerResolver.Object,
                                                              _mockHandlerInvoker.Object);

                //Act
                var result = await listener.AttachTo(transportManager);

                //Assert
                Assert.That(result, Is.False);
            }
Ejemplo n.º 9
0
            public async Task Listener_Can_Be_Attached_To_An_Active_Transport_Manager()
            {
                //Arrange
                var transport = new Mock <ITransport>();

                transport.Setup(x => x.Configuration).Returns(new TransportConfiguration());
                var transportManager = new ServiceBusTransportManager(transport.Object, Mock.Of <ICircuitBreaker>(), Mock.Of <IEventLogger>());
                var listener         = new ServiceBusListener(_mockSerialiser.Object, _mockHandlerResolver.Object,
                                                              _mockHandlerInvoker.Object);

                //Act
                var result = await listener.AttachTo(transportManager);

                //Assert
                Assert.That(result, Is.True);
                Assert.That(transport.Object.Configuration.Listeners, Has.Exactly(1).EqualTo(listener));
            }
Ejemplo n.º 10
0
            public async Task Enqueue_Message_Passes_Message_To_Transport_Successfully()
            {
                //Arrange
                const string expectedMessage = "Test Message";
                var          receivedMessage = string.Empty;

                _mockTransport.
                Setup(m => m.Send(It.IsAny <byte[]>(), It.IsAny <CancellationToken>())).
                Returns(Task.CompletedTask).
                Callback((byte[] message, CancellationToken token) => receivedMessage = Encoding.ASCII.GetString(message));

                _mockCircuitBreaker.
                Setup(m => m.ExecuteAsync(It.IsAny <Func <CancellationToken, Task> >(), It.IsAny <Func <Exception, Task> >(), It.IsAny <CancellationToken>())).
                Returns(Task.CompletedTask).
                Callback((Func <CancellationToken, Task> executeAction, Func <Exception, Task> failureAction, CancellationToken c) => executeAction(c));

                var manager = new ServiceBusTransportManager(_mockTransport.Object, _mockCircuitBreaker.Object, Mock.Of <IEventLogger>());

                //Act
                await manager.EnqueueMessage(Encoding.ASCII.GetBytes(expectedMessage), CancellationToken.None);

                //Assert
                Assert.That(receivedMessage, Is.EqualTo(expectedMessage));
            }