Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }