Esempio n. 1
0
        public void NoMessageProcesing()
        {
            Queue     normalQueue    = new Queue();
            Queue     poisonQueue    = new Queue();
            IListener listener       = null;
            var       messageManager = GetMockMessageManager(normalQueue, poisonQueue, listener);

            var config = new Mock <IAppConfiguration>();

            config.Setup(x => x.GlobalUpdateWaitTime).Returns(10);
            config.Setup(x => x.SendPoisonMessageNotification).Returns(false);

            List <string> calledStoredProcedures = new List <string>();
            var           dbManager = GetMockDatabaseManager(calledStoredProcedures);

            MessageProcessEventArgs result = null;

            listener = new Listener(config.Object, dbManager.Object, messageManager.Object);
            listener.MessageNotProcessing += delegate(System.Object o, MessageProcessEventArgs e)
            { result = e; listener.CanProcess = false; };

            Hashtable activeDatabases = new Hashtable();
            Hashtable timestamps      = new Hashtable();

            //act
            listener.ExecuteAsync(activeDatabases, timestamps);

            //assert
            result.Should().NotBeNull();
            result.Status.Should().BeEquivalentTo <MessageProcessStatus>(MessageProcessStatus.NoMessage);
        }
Esempio n. 2
0
        public void ParallelProcessMessage()
        {
            Queue     normalQueue    = new Queue();
            Queue     poisonQueue    = new Queue();
            IListener listener       = null;
            var       messageManager = GetMockMessageManager(normalQueue, poisonQueue, listener);

            var config = new Mock <IAppConfiguration>();

            config.Setup(x => x.GlobalUpdateWaitTime).Returns(10);
            config.Setup(x => x.SendPoisonMessageNotification).Returns(false);

            List <string> calledStoredProcedures = new List <string>();
            var           dbManager = GetMockDatabaseManager(calledStoredProcedures);

            MessageProcessEventArgs result = null;

            listener = new Listener(config.Object, dbManager.Object, messageManager.Object);
            listener.MessageNotProcessing += delegate(System.Object o, MessageProcessEventArgs e)
            { result = e; listener.CanProcess = false; };

            Hashtable activeDatabases = new Hashtable();
            Hashtable timestamps      = new Hashtable();
            int       databaseId      = 1;

            //send 1 message to fake queue
            var singleMessage = new UpdateMessage()
            {
                DatabaseID = databaseId, ExternalId = "1", EntityTypeId = 20, Action = (int)MessageActionType.GlobalUpdate, GroupID = 1, ProductID = 1, ArrivedTime = DateTime.UtcNow
            };

            messageManager.Object.mqSend(singleMessage, MessagePriority.High);

            //check do we have message in queue
            normalQueue.Should().NotBeEmpty();
            normalQueue.Should().HaveCount(1, "single item send");
            activeDatabases.Add(databaseId, DateTime.UtcNow);
            listener.ExecuteAsync(activeDatabases, timestamps);

            normalQueue.Should().NotBeEmpty();
            normalQueue.Should().HaveCount(1, "single item send");
            poisonQueue.Should().BeEmpty();
            result.Should().NotBeNull();
            result.Status.Should().BeEquivalentTo <MessageProcessStatus>(MessageProcessStatus.ParallelDatabaseId);
        }