public void Wait_For_The_Observers_To_Finish_After_Analyzers_Finish() { // arrange var sw = Stopwatch.StartNew(); var engine = new Engine(); engine.AnalyzerTaskFactory = new AnalyzerTaskFactory(); var eventHub = new EventHub(); var analyzer = new DummyAnalyzer(); var observer = new DummyAnalysisObserver(); engine.Analyzers = new[] { analyzer }; engine.AnalysisObservers = new[] { observer }; engine.EventHub = eventHub; analyzer.EventHub = eventHub; observer.EventHub = eventHub; // act var task = engine.Process(); task.Wait(); // assert sw.ElapsedMilliseconds.Should().BeLessThan(2000); task.IsCompleted.Should().BeTrue(); task.IsFaulted.Should().BeFalse(); }
public void TestNamedDirectoryWorksWithSubFolders() { var analyzer = new DummyAnalyzer(false); var settings = analyzer.DefaultSettings; settings.AnalysisOutputDirectory = this.TestOutputDirectory; var actual = AnalysisCoordinator.GetNamedDirectory(settings.AnalysisOutputDirectory, analyzer, "a", "b", "c"); var expected = this.TestOutputDirectory.Combine("Ecosounds.TempusSubstitutus/a/b/c"); Assert.AreEqual(expected.FullName, actual.FullName); }
public void RequestAnalysis_NotSupported_RequestAnalysisNotCalled() { // Arrange var analyzers = new DummyAnalyzer[] { new DummyAnalyzer(), new DummyAnalyzer(AnalysisLanguage.CFamily), new DummyAnalyzer(), }; var controller = new AnalyzerController(new TestLogger(), analyzers, null); // Act controller.ExecuteAnalysis("c:\\file.cpp", "charset1", new[] { AnalysisLanguage.Javascript }, null, null, CancellationToken.None); analyzers.Any(x => x.RequestAnalysisCalled).Should().BeFalse(); }
private AnalysisResult2[] TestAnalysisCoordinator(ISegment <FileInfo>[] segments) { Contract.Requires(segments != null); var preparer = new DummySourcePreparer(); AnalysisCoordinator coordinator = new AnalysisCoordinator( preparer, saveIntermediateWavFiles: SaveBehavior.Always, uniqueDirectoryPerSegment: false, isParallel: false); IAnalyser2 dummyAnalyzer = new DummyAnalyzer(false); var settings = dummyAnalyzer.DefaultSettings; settings.AnalysisOutputDirectory = this.TestOutputDirectory; settings.AnalysisTempDirectory = this.TestOutputDirectory.Combine("Temp"); return(coordinator.Run(segments, dummyAnalyzer, settings)); }
public void CleanUp_MonitorDisposed() { // Arrange var analyzers = new DummyAnalyzer[] { new DummyAnalyzer() }; var monitorMock = new Mock <SonarLint.VisualStudio.Integration.Vsix.Analysis.IAnalysisConfigMonitor>(); var disposableMock = monitorMock.As <IDisposable>(); var controller = new AnalyzerController(new TestLogger(), analyzers, monitorMock.Object); // Act - Dispose multiple times controller.Dispose(); controller.Dispose(); controller.Dispose(); // Assert disposableMock.Verify(x => x.Dispose(), Times.Once); }
public void RequestAnalysis_Supported_RequestAnalysisNotCalled() { // Arrange var analyzers = new DummyAnalyzer[] { new DummyAnalyzer(), new DummyAnalyzer(AnalysisLanguage.CFamily), new DummyAnalyzer(), new DummyAnalyzer(AnalysisLanguage.CFamily), }; var controller = new AnalyzerController(new TestLogger(), analyzers, null); // Act controller.ExecuteAnalysis("c:\\file.cpp", "charset1", new[] { AnalysisLanguage.CFamily, AnalysisLanguage.Javascript }, null, null, CancellationToken.None); analyzers[0].RequestAnalysisCalled.Should().BeFalse(); analyzers[2].RequestAnalysisCalled.Should().BeFalse(); // Both analyzers that support analysis should be given the chance to handle the request. analyzers[1].RequestAnalysisCalled.Should().BeTrue(); analyzers[3].RequestAnalysisCalled.Should().BeTrue(); }
private void TestAnalysisCoordinatorPaths(SaveBehavior wav, bool unique, DirectoryInfo temp, State[] states) { Contract.Requires(states.Length == 5); var preparer = new DummySourcePreparer(); AnalysisCoordinator coordinator = new AnalysisCoordinator( preparer, saveIntermediateWavFiles: wav, uniqueDirectoryPerSegment: unique, isParallel: false); // an empty non-existent file var source = TempFileHelper.NewTempFile(this.TestOutputDirectory).Touch(); FileSegment segment = new FileSegment(source, duration: 120.0.Seconds(), sampleRate: 123456); var dummyAnalyzer = new DummyAnalyzer(true); var settings = dummyAnalyzer.DefaultSettings; Trace.WriteLine("Class output directory:" + this.TestOutputDirectory.FullName); settings.AnalysisMaxSegmentDuration = 60.Seconds(); settings.AnalysisOutputDirectory = this.AnalysisOutput; settings.AnalysisTempDirectory = temp; this.settingsAccessor.Fields["fallbackTempDirectory"]?.SetValue(settings, this.FallbackTemp.FullName); var task = Task.Run(() => { var results = coordinator.Run(segment, dummyAnalyzer, settings); // summarize is currently called manually dummyAnalyzer.SummariseResults(settings, segment, null, null, null, results); }); // set up path strings string basename = Path.GetFileNameWithoutExtension(source.Name); var paths = new CoordinatorPathTestSet { output = this.AnalysisOutput.FullName, temp = (temp ?? this.TestTemp).FullName, tempNull = this.FallbackTemp.FullName, fragment = "Ecosounds.TempusSubstitutus", unique1 = basename + "_000000.00-000060.00", unique2 = basename + "_000060.00-000120.00", source = basename, }; // wait for the analyzer to pause while (!dummyAnalyzer.IsPaused) { Thread.Sleep(0); } // manually pump the analysis // before analyze this.AssertFilesAreAsExpected(0, states[0], paths); dummyAnalyzer.Pump(); // segment 1 this.AssertFilesAreAsExpected(1, states[1], paths); dummyAnalyzer.Pump(); // segment 2 this.AssertFilesAreAsExpected(2, states[2], paths); dummyAnalyzer.Pump(); // after summarize this.AssertFilesAreAsExpected(3, states[3], paths); // complete // TODO: remove this rubbish and stick in a IoC file system for testing! dummyAnalyzer.Pump(false); do { Thread.Sleep(0.5.Seconds()); dummyAnalyzer.Pump(false); }while (!task.IsCompleted); task.Wait(1.0.Seconds()); this.AssertFilesAreAsExpected(4, states[4], paths); Assert.IsTrue(task.IsCompleted, "task was not yet completed"); }