public void GetCoveredLinesTimeTest(string classname, int milliSeconds) { // Arrange var sw = Stopwatch.StartNew(); var queries = TestifyQueries.Instance; // Act using (var context = new TestifyContext("C:\\WIP\\QMedClinicalTools\\QMedClinicalTools.sln")) { var lines = queries.GetCoveredLines(context, classname).ToList(); } sw.Stop(); // Assert Assert.LessOrEqual(sw.ElapsedMilliseconds, milliSeconds); }
private void GetCoveredLinesFromCodeModel(FileCodeModel fcm) { var sw = Stopwatch.StartNew(); IList <CodeElement> classes; IList <CodeElement> methods; var getCodeBlocksSw = Stopwatch.StartNew(); CodeModelService.GetCodeBlocks(fcm, out classes, out methods); _log.DebugFormat("Get Code Blocks Elapsed Time {0}", getCodeBlocksSw.ElapsedMilliseconds); var coveredLines = new List <CoveredLinePoco>(); IEnumerable <CoveredLinePoco> lines; using (var context = new TestifyContext(fcm.DTE.Solution.FullName)) { if (classes.Count > 0) { lines = Queries.GetCoveredLines(context, classes.First().FullName).ToList(); } else { // the count of "classes' will be zero if the user closed the Solution and the FileCodeModel was disposed // just return an empty list because we are essentially terminated. lines = new List <CoveredLinePoco>(); } } _log.DebugFormat("Queries.GetCoveredLines Elapsed Time {0}", getCodeBlocksSw.ElapsedMilliseconds); var addRangeSw = Stopwatch.StartNew(); coveredLines.AddRange(lines); _log.DebugFormat("coveredLines.AddRange Elapsed Time {0}", addRangeSw.ElapsedMilliseconds); sw.Stop(); _log.DebugFormat("Get Covered lines from Classes Elapsed Time {0} Number of Classes {1}", sw.ElapsedMilliseconds, classes.Count()); var lockAndLoadSw = Stopwatch.StartNew(); lock (_coveredLines) { foreach (var line in coveredLines) { int lineNumber = line.LineNumber; bool isAdded = _coveredLines.TryAdd(lineNumber, line); if (!isAdded) { CoveredLinePoco currentValue; _coveredLines.TryGetValue(lineNumber, out currentValue); _coveredLines.TryUpdate(line.LineNumber, currentValue, line); _coveredLines.AddOrUpdate(lineNumber, line, (oldKey, oldValue) => line); } } _HasCoveredLinesBeenInitialized = true; _IsRebuilding = false; } _log.DebugFormat("Update _coveredLInes Elapsed Time {0}", lockAndLoadSw.ElapsedMilliseconds); }