private async void StartProcessing(Object stateInfo) { _logger.Info("Service starting."); _isCompleted = await _listener.ExecuteAsync(this._activeTaskDatabaseIDs, this._globalUpdateTimeStamps); _logger.Info("Service MSMQ complete."); }
private async void StartProcessing(object state) { _logger.Info("SQL Queue Service is stared."); _isCompleted = await _listener.ExecuteAsync(); _logger.Info("SQL Queue Service finish."); }
public void ProcessGlobalUpdateMessageProcessing() { 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); List <string> calledStoredProcedures = new List <string>(); var dbManager = GetMockDatabaseManager(calledStoredProcedures); var ml = new Mock <Listener>(new object[] { config.Object, dbManager.Object, messageManager.Object }); var ipe = new Mock <IPriceEngine>(); ipe.Setup(x => x.IsEngineEnabled()).Returns(Task.FromResult(false)); ml.Setup(x => x.GetPriceEngine(It.IsAny <string>())).Returns(ipe.Object); ml.SetupSequence(x => x.CanProcess).Returns(true).Returns(false); listener = ml.Object; 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", DSN = "testdb", 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"); listener.ExecuteAsync(activeDatabases, timestamps); normalQueue.Should().BeEmpty(); calledStoredProcedures.Should().NotBeEmpty(); calledStoredProcedures.Should().HaveCount(1); calledStoredProcedures.First().Should().Be("sc_calculate_dish_pricing"); }
public void ProcessGlobalUpdateMessageProcessingNewEngine() { 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); List <string> calledStoredProcedures = new List <string>(); var dbManager = GetMockDatabaseManager(calledStoredProcedures); bool globalPriceRecalcExec = false; bool productPriceRecalcExec = false; int productPriceRecalcExecId = 0; var ml = new Mock <Listener>(new object[] { config.Object, dbManager.Object, messageManager.Object }); var ipe = new Mock <IPriceEngine>(); ipe.Setup(x => x.IsEngineEnabled()).Returns(Task.FromResult(true)); ipe.Setup(x => x.GlobalRecalculation(It.IsAny <bool>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <DateTime?>())).Returns(Task.FromResult(new List <Common.Model.DbPrice>().AsEnumerable())).Callback((bool store, int groupid, int pbandid, int psetid, int unitid, DateTime? arriveTime) => { globalPriceRecalcExec = true; }); ipe.Setup(x => x.Recalculation(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <bool>(), It.IsAny <DateTime?>())).Returns(Task.FromResult(new List <Common.Model.DbPrice>().AsEnumerable())).Callback((int productId, int groupid, int pbandid, int psetid, int unitid, bool store, DateTime? arriveTime) => { productPriceRecalcExec = true; productPriceRecalcExecId = productId; }); ipe.Setup(x => x.GlobalRecalculation(It.IsAny <bool>(), It.IsAny <DateTime?>())).Returns(Task.FromResult(new List <Common.Model.DbPrice>().AsEnumerable())).Callback((bool store, DateTime? arriveTime) => { globalPriceRecalcExec = true; }); ipe.Setup(x => x.Recalculation(It.IsAny <int>(), It.IsAny <bool>(), It.IsAny <DateTime?>())).Returns(Task.FromResult(new List <Common.Model.DbPrice>().AsEnumerable())).Callback((int productId, bool store, DateTime? arriveTime) => { productPriceRecalcExec = true; productPriceRecalcExecId = productId; }); ml.Setup(x => x.GetPriceEngine(It.IsAny <string>())).Returns(ipe.Object); ml.SetupSequence(x => x.CanProcess).Returns(true).Returns(false).Returns(true).Returns(false); listener = ml.Object; 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", DSN = "testdb", 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"); listener.ExecuteAsync(activeDatabases, timestamps); normalQueue.Should().BeEmpty(); globalPriceRecalcExec.Should().BeTrue(); calledStoredProcedures.Should().BeEmpty(); //send 1 message to fake queue singleMessage = new UpdateMessage() { DatabaseID = databaseId, ExternalId = "1", DSN = "testdb", EntityTypeId = 20, Action = (int)MessageActionType.UpdatedProductCost, 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"); listener = ml.Object; listener.ExecuteAsync(activeDatabases, timestamps); normalQueue.Should().BeEmpty(); productPriceRecalcExec.Should().BeTrue(); productPriceRecalcExecId.Should().Be(1); calledStoredProcedures.Should().BeEmpty(); }