internal static void AppendStackFrames(StackFrameCollection stackFrames, StringBuilder sb, bool appendNewLine = false, string methodPrefix = "at ", bool linkFilePath = false, string traceIndentValue = " ") { bool first = true; foreach (StackFrame frame in stackFrames) { if (String.IsNullOrEmpty(frame.Name)) { continue; } if (first) { first = false; } else { sb.Append(Environment.NewLine); } StackFrameExtensions.AppendStackFrame(frame, sb, methodPrefix, linkFilePath: linkFilePath, traceIndentValue: traceIndentValue); } if (appendNewLine) { sb.Append(Environment.NewLine); } }
public static string ToExceptionStackString(this StackFrameCollection stackFrames) { var sb = new StringBuilder(255); AppendStackFrames(stackFrames, sb); return(sb.ToString()); }
private static ErrorInfo GenerateErrorInfo(ErrorInfo target, int nestingLevel = 0, int minimiumNestingLevel = 0) { target.Message = @"Generated exception message."; target.Type = TestConstants.ExceptionTypes.Random(); if (RandomHelper.GetBool()) { target.Code = RandomHelper.GetRange(-234523453, 98690899).ToString(); } for (int i = 0; i < RandomHelper.GetRange(minimiumNestingLevel, 5); i++) { string key = RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 15)); while (target.ExtendedData.ContainsKey(key)) { key = RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 15)); } target.ExtendedData.Add(key, RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 25))); } var stack = new StackFrameCollection(); for (int i = 0; i < RandomHelper.GetRange(1, 10); i++) { stack.Add(GenerateStackFrame()); } target.StackTrace = stack; if (minimiumNestingLevel > 0 || (nestingLevel < 5 && RandomHelper.GetBool())) { target.Inner = GenerateErrorInfo(nestingLevel + 1); } return(target); }
internal static void AppendStackFrames(StackFrameCollection stackFrames, StringBuilder sb, bool appendNewLine = false, string methodPrefix = "at ", bool linkFilePath = false, string traceIndentValue = " ") { bool first = true; foreach (StackFrame frame in stackFrames) { if (String.IsNullOrEmpty(frame.Name)) continue; if (first) first = false; else sb.Append(Environment.NewLine); StackFrameExtensions.AppendStackFrame(frame, sb, methodPrefix, linkFilePath: linkFilePath, traceIndentValue: traceIndentValue); } if (appendNewLine) sb.Append(Environment.NewLine); }
internal static Error GenerateError(int maxErrorNestingLevel = 3, bool generateData = true, int currentNestingLevel = 0) { var error = new Error { Message = "Generated exception message.", Type = TestConstants.ExceptionTypes.Random() }; if (RandomData.GetBool()) { error.Code = RandomData.GetInt(-234523453, 98690899).ToString(); } if (generateData) { for (int i = 0; i < RandomData.GetInt(1, 5); i++) { string key = RandomData.GetWord(); while (error.Data.ContainsKey(key) || key == Event.KnownDataKeys.Error) { key = RandomData.GetWord(); } error.Data.Add(key, RandomData.GetWord()); } } var stack = new StackFrameCollection(); for (int i = 0; i < RandomData.GetInt(1, 10); i++) { stack.Add(GenerateStackFrame()); } error.StackTrace = stack; if (currentNestingLevel < maxErrorNestingLevel && RandomData.GetBool()) { error.Inner = GenerateError(maxErrorNestingLevel, generateData, currentNestingLevel + 1); } return(error); }
private static Error GenerateError(int maxErrorNestingLevel = 3, bool generateData = true, int currentNestingLevel = 0) { var error = new Error(); error.Message = @"Generated exception message."; error.Type = ExceptionTypes.Random(); if (RandomHelper.GetBool()) { error.Code = RandomHelper.GetRange(-234523453, 98690899).ToString(); } if (generateData) { for (int i = 0; i < RandomHelper.GetRange(1, 5); i++) { string key = RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 15)); while (error.Data.ContainsKey(key) || key == Event.KnownDataKeys.Error) { key = RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 15)); } error.Data.Add(key, RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 25))); } } var stack = new StackFrameCollection(); for (int i = 0; i < RandomHelper.GetRange(1, 10); i++) { stack.Add(GenerateStackFrame()); } error.StackTrace = stack; if (currentNestingLevel < maxErrorNestingLevel && RandomHelper.GetBool()) { error.Inner = GenerateError(maxErrorNestingLevel, generateData, currentNestingLevel + 1); } return(error); }
private static Event GenerateEvent(int nestingLevel = 0, int minimiumNestingLevel = 0) { var error = new Event(); error.Message = @"Generated exception message."; error.Type = TestConstants.ExceptionTypes.Random(); if (RandomHelper.GetBool()) { error.Code = RandomHelper.GetRange(-234523453, 98690899).ToString(); } for (int i = 0; i < RandomHelper.GetRange(minimiumNestingLevel, minimiumNestingLevel + 5); i++) { string key = RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 15)); while (error.Data.ContainsKey(key)) { key = RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 15)); } error.Data.Add(key, RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 25))); } var stack = new StackFrameCollection(); for (int i = 0; i < RandomHelper.GetRange(1, 10); i++) { stack.Add(GenerateStackFrame()); } error.StackTrace = stack; if (minimiumNestingLevel > 0 || (nestingLevel < 5 && RandomHelper.GetBool())) { error.Inner = GenerateEvent(nestingLevel + 1); } return(error); }
public InnerError() { Data = new DataDictionary(); StackTrace = new StackFrameCollection(); }
private static Error GenerateError(int nestingLevel = 0, int minimiumNestingLevel = 0) { var error = new Error(); error.Message = @"Generated exception message."; error.Type = TestConstants.ExceptionTypes.Random(); if (RandomHelper.GetBool()) error.Code = RandomHelper.GetRange(-234523453, 98690899).ToString(); for (int i = 0; i < RandomHelper.GetRange(minimiumNestingLevel, minimiumNestingLevel + 5); i++) { string key = RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 15)); while (error.Data.ContainsKey(key)) key = RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 15)); error.Data.Add(key, RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 25))); } var stack = new StackFrameCollection(); for (int i = 0; i < RandomHelper.GetRange(1, 10); i++) stack.Add(GenerateStackFrame()); error.StackTrace = stack; if (minimiumNestingLevel > 0 || (nestingLevel < 5 && RandomHelper.GetBool())) error.Inner = GenerateError(nestingLevel + 1); return error; }
private void Parse() { SignatureInfo.Clear(); // start at the inner most exception and work our way out until we find a user method InnerError current = Error; var errorStack = new List <InnerError> { current }; while (current.Inner != null) { current = current.Inner; errorStack.Add(current); } errorStack.Reverse(); // reset all flags before we figure out which method to tag as the new target. if (ShouldFlagSignatureTarget) { errorStack.ForEach(es => es.StackTrace.ForEach(st => st.IsSignatureTarget = false)); } foreach (InnerError e in errorStack) { StackFrameCollection stackTrace = e.StackTrace; if (stackTrace == null) { continue; } foreach (StackFrame stackFrame in stackTrace.Where(IsUserFrame)) { SignatureInfo.AddItemIfNotEmpty("ExceptionType", e.Type); SignatureInfo.AddItemIfNotEmpty("Method", GetStackFrameSignature(stackFrame)); if (ShouldFlagSignatureTarget) { stackFrame.IsSignatureTarget = true; } AddSpecialCaseDetails(e); UpdateInfo(true); return; } } // We haven't found a user method yet, try some alternatives with the inner most error. InnerError innerMostError = errorStack[0]; if (innerMostError.TargetMethod != null) { // Use the target method if it exists. SignatureInfo.AddItemIfNotEmpty("ExceptionType", innerMostError.Type); SignatureInfo.AddItemIfNotEmpty("Method", GetStackFrameSignature(innerMostError.TargetMethod)); if (ShouldFlagSignatureTarget) { innerMostError.TargetMethod.IsSignatureTarget = true; } } else if (innerMostError.StackTrace != null && innerMostError.StackTrace.Count > 0) { // Use the topmost stack frame. SignatureInfo.AddItemIfNotEmpty("ExceptionType", innerMostError.Type); SignatureInfo.AddItemIfNotEmpty("Method", GetStackFrameSignature(innerMostError.StackTrace[0])); if (ShouldFlagSignatureTarget) { innerMostError.StackTrace[0].IsSignatureTarget = true; } } else { // All else failed, use the type. SignatureInfo.AddItemIfNotEmpty("ExceptionType", innerMostError.Type); } AddSpecialCaseDetails(innerMostError); if (SignatureInfo.Count == 0) { SignatureInfo.Add("NoStackingInformation", Guid.NewGuid().ToString()); } UpdateInfo(false); }
public Error GenerateError(int maxErrorNestingLevel = 3, bool generateData = true, int currentNestingLevel = 0) { var error = new Error { Message = @"Generated exception message.", Type = ExceptionTypes.Random() }; if (RandomData.GetBool()) error.Code = RandomData.GetInt(-234523453, 98690899).ToString(); if (generateData) { for (int i = 0; i < RandomData.GetInt(1, 5); i++) { string key = RandomData.GetWord(); while (error.Data.ContainsKey(key) || key == Event.KnownDataKeys.Error) key = RandomData.GetWord(); error.Data.Add(key, RandomData.GetString()); } } var stack = new StackFrameCollection(); for (int i = 0; i < RandomData.GetInt(1, 10); i++) stack.Add(GenerateStackFrame()); error.StackTrace = stack; if (currentNestingLevel < maxErrorNestingLevel && RandomData.GetBool()) error.Inner = GenerateError(maxErrorNestingLevel, generateData, currentNestingLevel + 1); return error; }
private static Error GenerateError(int maxErrorNestingLevel = 3, bool generateData = true, int currentNestingLevel = 0) { var error = new Error(); error.Message = @"Generated exception message."; error.Type = TestConstants.ExceptionTypes.Random(); if (RandomHelper.GetBool()) error.Code = RandomHelper.GetRange(-234523453, 98690899).ToString(); if (generateData) { for (int i = 0; i < RandomHelper.GetRange(1, 5); i++) { string key = RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 15)); while (error.Data.ContainsKey(key) || key == Event.KnownDataKeys.Error) key = RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 15)); error.Data.Add(key, RandomHelper.GetPronouncableString(RandomHelper.GetRange(5, 25))); } } var stack = new StackFrameCollection(); for (int i = 0; i < RandomHelper.GetRange(1, 10); i++) stack.Add(GenerateStackFrame()); error.StackTrace = stack; if (currentNestingLevel < maxErrorNestingLevel && RandomHelper.GetBool()) error.Inner = GenerateError(maxErrorNestingLevel, generateData, currentNestingLevel + 1); return error; }
public ErrorInfo() { ExtendedData = new DataDictionary(); StackTrace = new StackFrameCollection(); }
public ErrorInfo() { ExtendedData = new ExtendedDataDictionary(); StackTrace = new StackFrameCollection(); }