Exemplo n.º 1
0
        public void StartingTheHostASecondTimeThrowsException()
        {
            // Arrange
            var contextMock  = new Mock <IBusContext <IConnection> >();
            var receiverMock = new Mock <IMessageReceiver>();
            var logger       = new Mock <ILogger <MicroserviceHost> >();

            const string queue = "testQueue";

            string[] topics = { "Topic1", "Topic2" };

            contextMock.Setup(e => e.CreateMessageReceiver("testQueue", topics))
            .Returns(receiverMock.Object);

            var listeners = new[] { new MicroserviceListener {
                                        TopicExpressions = topics
                                    } };

            var host = new MicroserviceHost(contextMock.Object, listeners, new List <MicroserviceCommandListener>(), queue, logger.Object);

            host.Start();

            // Act
            void Act() => host.Start();

            // Assert
            BusConfigurationException exception = Assert.ThrowsException <BusConfigurationException>(Act);

            Assert.AreEqual("Attempted to start the MicroserviceHost, but it has already started.", exception.Message);
        }
Exemplo n.º 2
0
        public void StartListeningIsCalledOnReceiver()
        {
            // Arrange
            var contextMock  = new Mock <IBusContext <IConnection> >();
            var receiverMock = new Mock <IMessageReceiver>();
            var logger       = new Mock <ILogger <MicroserviceHost> >();

            const string queue = "testQueue";

            string[] topics = { "Topic1", "Topic2" };

            contextMock.Setup(e => e.CreateMessageReceiver(queue, topics))
            .Returns(receiverMock.Object);

            var listeners = new[] { new MicroserviceListener {
                                        TopicExpressions = topics
                                    } };

            var host = new MicroserviceHost(contextMock.Object, listeners, new List <MicroserviceCommandListener>(), queue, logger.Object);

            // Act
            host.Start();

            // Assert
            receiverMock.Verify(e => e.StartReceivingMessages());
        }
Exemplo n.º 3
0
        public void ResumingHostSetsIsPausedToFalse()
        {
            // Arrange
            var contextMock  = new Mock <IBusContext <IConnection> >();
            var receiverMock = new Mock <IMessageReceiver>();
            var logger       = new Mock <ILogger <MicroserviceHost> >();

            const string queue = "testQueue";

            string[] topics = { "Topic1", "Topic2" };

            contextMock.Setup(e => e.CreateMessageReceiver(queue, topics))
            .Returns(receiverMock.Object);

            var listeners = new[] { new MicroserviceListener {
                                        TopicExpressions = topics
                                    } };

            var host = new MicroserviceHost(contextMock.Object, listeners, new List <MicroserviceCommandListener>(), queue, logger.Object);

            host.Start();
            host.Pause();

            // Act
            host.Resume();

            // Assert
            Assert.AreEqual(false, host.IsPaused);
        }
Exemplo n.º 4
0
        public void CreateListenerIsCalledOnce(int listenerAmount)
        {
            // Arrange
            var contextMock  = new Mock <IBusContext <IConnection> >();
            var receiverMock = new Mock <IMessageReceiver>();
            var logger       = new Mock <ILogger <MicroserviceHost> >();

            contextMock.Setup(e => e.CreateMessageReceiver(It.IsAny <string>(), It.IsAny <IEnumerable <string> >()))
            .Returns(receiverMock.Object);

            var listeners = Enumerable.Range(0, listenerAmount).Select(e => new MicroserviceListener());

            var host = new MicroserviceHost(contextMock.Object, listeners, new List <MicroserviceCommandListener>(), "test.queue", logger.Object);

            // Act
            host.Start();

            // Assert
            contextMock.Verify(e => e.CreateMessageReceiver(It.IsAny <string>(), It.IsAny <IEnumerable <string> >()), Times.Once);
        }
Exemplo n.º 5
0
        public void ResumingTriggersHostResumedEventWithProperValues()
        {
            // Arrange
            var contextMock  = new Mock <IBusContext <IConnection> >();
            var receiverMock = new Mock <IMessageReceiver>();
            var logger       = new Mock <ILogger <MicroserviceHost> >();

            const string queue = "testQueue";

            string[] topics = { "Topic1", "Topic2" };

            contextMock.Setup(e => e.CreateMessageReceiver(queue, topics))
            .Returns(receiverMock.Object);

            var listeners = new[] { new MicroserviceListener {
                                        TopicExpressions = topics
                                    } };

            var host = new MicroserviceHost(contextMock.Object, listeners, new List <MicroserviceCommandListener>(), queue, logger.Object);

            host.Start();
            host.Pause();

            IMicroserviceHost    resultHost = null;
            HostResumedEventArgs eventArgs  = null;

            host.HostResumed += (microserviceHost, args) =>
            {
                resultHost = microserviceHost;
                eventArgs  = args;
            };

            // Act
            host.Resume();

            // Assert
            Assert.AreEqual(host, resultHost);
            Assert.IsNotNull(eventArgs);
        }
Exemplo n.º 6
0
        public void CreateListenerIsCalledWithProperParameters(string queueName, string topics)
        {
            // Arrange
            var contextMock  = new Mock <IBusContext <IConnection> >();
            var receiverMock = new Mock <IMessageReceiver>();
            var logger       = new Mock <ILogger <MicroserviceHost> >();

            string[] topicNames = topics.Split(',');

            contextMock.Setup(e => e.CreateMessageReceiver(queueName, topicNames))
            .Returns(receiverMock.Object);

            var listeners = new[] { new MicroserviceListener {
                                        TopicExpressions = topicNames
                                    } };

            var host = new MicroserviceHost(contextMock.Object, listeners, new List <MicroserviceCommandListener>(), queueName, logger.Object);

            // Act
            host.Start();

            // Assert
            contextMock.Verify(e => e.CreateMessageReceiver(queueName, topicNames));
        }