Ejemplo n.º 1
0
        public void ConvertFailToVSTestResult()
        {
            LogEntryError error = new LogEntryError("Error: 1 != 2", new SourceFileInfo("file.cpp", 10));

            BoostTestResult testCaseResult = new BoostTestResultBuilder().
                                             For(this.TestCase).
                                             Failed().
                                             Duration(2500).
                                             Log(error).
                                             Build();

            VSTestResult result = testCaseResult.AsVSTestResult(this.TestCase);

            AssertVSTestModelProperties(result);

            Assert.That(result.Outcome, Is.EqualTo(TestOutcome.Failed));
            Assert.That(result.Duration, Is.EqualTo(Microseconds(2500)));

            AssertVsTestModelError(result, error);

            Assert.That(result.Messages.Count, Is.EqualTo(1));

            TestResultMessage message = result.Messages.First();

            Assert.That(message.Category, Is.EqualTo(TestResultMessage.StandardErrorCategory));
        }
        private static string GetTestResultMessageText(TestUnit unit, LogEntry entry)
        {
            Code.Require(unit, "unit");
            Code.Require(entry, "entry");

            if ((entry is LogEntryStandardOutputMessage) || (entry is LogEntryStandardErrorMessage))
            {
                return(entry.Detail.TrimEnd() + Environment.NewLine);
            }

            StringBuilder sb = new StringBuilder();

            if (entry.Source != null)
            {
                AppendSourceInfo(entry.Source, sb);
            }

            sb.Append(entry.ToString().ToLowerInvariant()).
            Append(" in \"").
            Append(unit.Name).
            Append("\"");

            LogEntryMemoryLeak memoryLeak = entry as LogEntryMemoryLeak;

            if (memoryLeak == null)
            {
                sb.Append(": ").Append(entry.Detail.TrimEnd());
            }

            LogEntryException exception = entry as LogEntryException;

            if (exception != null)
            {
                FormatException(exception, sb);
            }

            LogEntryError error = entry as LogEntryError;

            if (error != null)
            {
                FormatError(error, sb);
            }

            if (memoryLeak != null)
            {
                FormatMemoryLeak(memoryLeak, sb);
            }

            // Append NewLine so that log entries are listed one per line
            return(sb.Append(Environment.NewLine).ToString());
        }
        /// <summary>
        /// Parse a LogEntryError from the provided node.
        /// </summary>
        /// <param name="node">The Xml node which contains error information.</param>
        /// <returns>A LogEntryError populated from the provided Xml node.</returns>
        private static LogEntryError ParseTestCaseLogError(XmlNode node)
        {
            LogEntryError error = new LogEntryError();

            foreach (XmlNode child in node.ChildNodes)
            {
                if (child.NodeType == XmlNodeType.CDATA)
                {
                    error.Detail = child.InnerText;
                }
                else if ((child.NodeType == XmlNodeType.Element) && (child.Name == Xml.Context))
                {
                    error.ContextFrames = child.SelectNodes(Xml.Frame).Cast <XmlNode>().Select(frame => frame.InnerText.Trim()).ToList();
                }
            }

            return(error);
        }
        /// <summary>
        /// Formats a LogEntryException to append to test result string
        /// </summary>
        /// <param name="error">The error to format</param>
        /// <param name="sb">The StringBuilder which will host the output</param>
        /// <returns>sb</returns>
        private static StringBuilder FormatError(LogEntryError error, StringBuilder sb)
        {
            if (error.ContextFrames != null)
            {
                sb.Append(Environment.NewLine).
                Append("Failure occurred in a following context:").
                Append(Environment.NewLine);

                foreach (string frame in error.ContextFrames)
                {
                    sb.Append("    ").Append(frame).Append(Environment.NewLine);
                }

                // Remove redundant NewLine at the end
                sb.Remove((sb.Length - Environment.NewLine.Length), Environment.NewLine.Length);
            }

            return(sb);
        }
Ejemplo n.º 5
0
        public List <SharePointLogEntry> ParseFile(string filename, out List <LogEntryError> errors)
        {
            if (!File.Exists(filename))
            {
                throw new ArgumentException("File not found!");
            }

            var retval = new List <SharePointLogEntry>();

            errors = new List <LogEntryError>();

            using (var file = new StreamReader(File.OpenRead(filename)))
            {
                file.ReadLine();//move past header
                while (file.Peek() >= 0)
                {
                    try
                    {
                        var logTokens   = file.ReadLine().Split(new string[] { _tab_symbol }, StringSplitOptions.None);
                        var timestamp   = logTokens[0].Trim();
                        var process     = logTokens[1].Trim();
                        var tid         = logTokens[2].Trim();
                        var area        = logTokens[3].Trim();
                        var category    = logTokens[4].Trim();
                        var eventId     = logTokens[5].Trim();
                        var level       = LogEntry.GetLogEntryLevel(logTokens[6].Trim());
                        var message     = new StringBuilder(logTokens[7].Trim());
                        var correlation = (logTokens[8] != null) ? logTokens[8].Trim() : string.Empty;

                        while (message.ToString().EndsWith("..."))
                        {
                            var      nextLine         = file.ReadLine();
                            string[] nextLine_Tokens  = nextLine.Split(new string[] { _tab_symbol }, StringSplitOptions.None);
                            var      nextLine_message = nextLine_Tokens[7].Substring(3);
                            message.Insert(message.Length - 1, nextLine_message);
                        }

                        retval.Add(new SharePointLogEntry()
                        {
                            Area        = area,
                            Category    = category,
                            Correlation = correlation,
                            EventID     = eventId,
                            FileName    = filename,
                            Level       = level,
                            Message     = message.ToString(),
                            Process     = process,
                            TID         = tid,
                            Timestamp   = DateTime.Parse(timestamp)
                        });
                    }
                    catch (Exception ex)
                    {
                        var err = new LogEntryError
                        {
                            Exception = ex,
                            Source    = filename,
                            Type      = LogEntryErrorType.Parser
                        };
                        errors.Add(err);
                    }
                }
            }

            return(retval);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Parses the log file and returns a list of newly created CommonLogEntry items.
        /// </summary>
        /// <param name="filename"></param>
        /// <param name="errors"></param>
        /// <returns></returns>
        public List <CommonLogEntry> ParseFile(string filename, out List <LogEntryError> errors)
        {
            if (!File.Exists(filename))
            {
                throw new ArgumentException("File not found!");
            }

            var retval = new List <CommonLogEntry>();

            errors = new List <LogEntryError>();

            using (var file = new StreamReader(File.OpenRead(filename)))
            {
                file.ReadLine();//move past header
                while (file.Peek() >= 0)
                {
                    try
                    {
                        var logTokens = file.ReadLine().Split(new string[] { _csvDelim }, StringSplitOptions.None);
                        var timestamp = logTokens[0].Trim();
                        timestamp = timestamp.Substring(1, timestamp.Length - 2);
                        var process = logTokens[1].Trim();
                        process = process.Substring(1, process.Length - 2);
                        var tid = logTokens[2].Trim();
                        tid = tid.Substring(1, tid.Length - 2);
                        var area = logTokens[3].Trim();
                        area = area.Substring(1, area.Length - 2);
                        var category = logTokens[4].Trim();
                        category = category.Substring(1, category.Length - 2);
                        var eventId = logTokens[5].Trim();
                        eventId = eventId.Substring(1, eventId.Length - 2);
                        var lvl = logTokens[6].Trim();
                        lvl = lvl.Substring(1, lvl.Length - 2);
                        var level = LogEntry.GetLogEntryLevel(lvl);
                        var msg   = logTokens[7].Trim();
                        msg = msg.Substring(1, msg.Length - 2);
                        var message = new StringBuilder(msg);

                        retval.Add(new CommonLogEntry()
                        {
                            Area      = area,
                            Category  = category,
                            EventID   = eventId,
                            FileName  = filename,
                            Level     = level,
                            Message   = message.ToString(),
                            Process   = process,
                            TID       = tid,
                            Timestamp = DateTime.Parse(timestamp)
                        });
                    }
                    catch (Exception ex)
                    {
                        var err = new LogEntryError
                        {
                            Exception = ex,
                            Source    = filename,
                            Type      = LogEntryErrorType.Parser
                        };
                        errors.Add(err);
                    }
                }
            }

            return(retval);
        }