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); }
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); }