public void QueueProcessorMonitor_WorkerCreated() { var mockProcessFactory = new Mock <IProcessFactory>(); var mockQueueConfigLoader = new Mock <IQueueConfigLoader>(); var mockChildProcessTracker = new Mock <IChildProcessTracker>(); var triggersCatalogForTesting = new TriggersCatalogForTesting(); _ = new QueueWorkerMonitor(mockProcessFactory.Object, mockQueueConfigLoader.Object, triggersCatalogForTesting, mockChildProcessTracker.Object); triggersCatalogForTesting.CallOnChanged(Guid.NewGuid()); triggersCatalogForTesting.CallOnDeleted(Guid.NewGuid()); triggersCatalogForTesting.CallOnCreated(Guid.NewGuid()); }
public void QueueProcessorMonitor_Start_Success() { //----------------------------Arrange----------------------------- var mockProcessFactory = new Mock <IProcessFactory>(); var mockQueueConfigLoader = new Mock <IQueueConfigLoader>(); var mockProcess = new Mock <IProcess>(); var mockTriggerCatalog = new Mock <ITriggersCatalog>(); var mockChildProcessTracker = new Mock <IChildProcessTracker>(); var mockTriggerObject = new Mock <ITrigger>(); mockTriggerObject.Setup(o => o.Concurrency).Returns(1); mockQueueConfigLoader.Setup(o => o.Configs).Returns(new List <ITrigger> { mockTriggerObject.Object }); var pass = true; mockProcessFactory.Setup(o => o.Start(It.IsAny <ProcessStartInfo>())) .Callback <ProcessStartInfo>((startInfo) => { if (pass) { pass = (GlobalConstants.QueueWorkerExe == startInfo.FileName); } }) .Returns(mockProcess.Object); //----------------------------Act--------------------------------- var processMonitor = new QueueWorkerMonitor( mockProcessFactory.Object, mockQueueConfigLoader.Object, mockTriggerCatalog.Object, mockChildProcessTracker.Object); mockProcess.SetupSequence(o => o.WaitForExit(1000)) .Returns(() => { Thread.Sleep(1000); return(false); }) .Returns(false).Returns(true) .Returns(() => { Thread.Sleep(1000); return(false); }) .Returns(false).Returns(() => { processMonitor.Shutdown(); return(true); }); new Thread(() => processMonitor.Start()).Start(); Thread.Sleep(5000); //----------------------------Assert------------------------------ mockProcess.Verify(o => o.WaitForExit(1000), Times.Exactly(6)); mockProcessFactory.Verify(o => o.Start(It.IsAny <ProcessStartInfo>()), Times.Exactly(2)); Assert.IsTrue(pass, "Queue worker exe incorrect"); }