public void BeforeEach() { logSources = Substitute.For <ILogSourcesManager>(); telemetry = Substitute.For <Telemetry.ITelemetryCollector>(); mockedSyncContext = new ManualSynchronizationContext(); heartbeat = Substitute.For <IHeartBeatTimer>(); progressAggregator = Substitute.For <Progress.IProgressAggregator>(); settingsAccessor = Substitute.For <Settings.IGlobalSettingsAccessor>(); logSource1 = Substitute.For <ILogSource>(); logProviderFac1 = Substitute.For <ILogProviderFactory>(); logSource1.Provider.Factory.Returns(logProviderFac1); logSource1.Provider.ConnectionParams.Returns(new ConnectionParams($"{ConnectionParamsKeys.PathConnectionParam}=/log.txt")); logSource1.Provider.Stats.Returns(new LogProviderStats() { ContentsEtag = null }); logSourcePP1 = Substitute.For <ILogSourcePostprocessor>(); logSourcePP1.Kind.Returns(PostprocessorKind.SequenceDiagram); pp1outputXmlSection = Substitute.For <Persistence.ISaxXMLStorageSection>(); logSource1.LogSourceSpecificStorageEntry.OpenSaxXMLSection("postproc-sequencediagram.xml", Persistence.StorageSectionOpenFlag.ReadOnly).Returns(pp1outputXmlSection); pp1outputXmlSection.Reader.Returns(Substitute.For <XmlReader>()); pp1PostprocessorOutput = Substitute.For <IPostprocessorOutputETag>(); outputDataDeserializer = Substitute.For <IOutputDataDeserializer>(); outputDataDeserializer.Deserialize(PostprocessorKind.SequenceDiagram, Arg.Any <LogSourcePostprocessorDeserializationParams>()).Returns(pp1PostprocessorOutput); pp1RunSummary = Substitute.For <IPostprocessorRunSummary>(); logSourcePP1.Run(null).ReturnsForAnyArgs(Task.FromResult(pp1RunSummary)); pp1RunSummary.GetLogSpecificSummary(null).ReturnsForAnyArgs((IPostprocessorRunSummary)null); manager = new LogJoint.Postprocessing.PostprocessorsManager( logSources, telemetry, mockedSyncContext, mockedSyncContext, heartbeat, progressAggregator, settingsAccessor, outputDataDeserializer, new TraceSourceFactory()); manager.RegisterLogType(new LogSourceMetadata(logProviderFac1, logSourcePP1)); }
public void CanRunPostprocessingIfItWasNotRunBefore() { pp1outputXmlSection.Reader.Returns((XmlReader)null); EmitLogSource1Addition(); mockedSyncContext.Deplete(); var exposedOutput = manager.LogSourcePostprocessors.Single(); Assert.AreSame(null, exposedOutput.OutputData); Assert.AreEqual(LogSourcePostprocessorState.Status.NeverRun, exposedOutput.OutputStatus); Assert.AreSame(null, exposedOutput.LastRunSummary); Assert.AreSame(new double?(), exposedOutput.Progress); Assert.AreEqual(logSource1, exposedOutput.LogSource); Assert.AreEqual(logSourcePP1, exposedOutput.Postprocessor); var pp1runResult = new TaskCompletionSource <IPostprocessorRunSummary>(); logSourcePP1.Run(null).ReturnsForAnyArgs(pp1runResult.Task); Task runTask = manager.RunPostprocessors( new[] { exposedOutput }, null); mockedSyncContext.Deplete(); Assert.IsFalse(runTask.IsCompleted); exposedOutput = manager.LogSourcePostprocessors.Single(); Assert.AreSame(null, exposedOutput.OutputData); Assert.AreEqual(LogSourcePostprocessorState.Status.InProgress, exposedOutput.OutputStatus); Assert.AreSame(null, exposedOutput.LastRunSummary); Assert.AreSame(new double?(), exposedOutput.Progress); Assert.AreEqual(logSource1, exposedOutput.LogSource); Assert.AreEqual(logSourcePP1, exposedOutput.Postprocessor); pp1outputXmlSection.Reader.Returns(Substitute.For <XmlReader>()); pp1runResult.SetResult(pp1RunSummary); mockedSyncContext.Deplete(); Assert.IsTrue(runTask.IsCompleted); exposedOutput = manager.LogSourcePostprocessors.Single(); Assert.AreEqual(LogSourcePostprocessorState.Status.Finished, exposedOutput.OutputStatus); Assert.AreSame(pp1PostprocessorOutput, exposedOutput.OutputData); Assert.AreSame(pp1RunSummary, exposedOutput.LastRunSummary); Assert.AreSame(new double?(), exposedOutput.Progress); Assert.AreEqual(logSource1, exposedOutput.LogSource); Assert.AreEqual(logSourcePP1, exposedOutput.Postprocessor); }