Example #1
0
        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);
            }
        }
Example #2
0
        public static string ToExceptionStackString(this StackFrameCollection stackFrames)
        {
            var sb = new StringBuilder(255);

            AppendStackFrames(stackFrames, sb);
            return(sb.ToString());
        }
Example #3
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
 public InnerError()
 {
     Data       = new DataDictionary();
     StackTrace = new StackFrameCollection();
 }
Example #9
0
        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;
        }
Example #10
0
        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;
        }
Example #12
0
        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;
        }
Example #13
0
 public ErrorInfo()
 {
     ExtendedData = new DataDictionary();
     StackTrace   = new StackFrameCollection();
 }
Example #14
0
 public ErrorInfo()
 {
     ExtendedData = new ExtendedDataDictionary();
     StackTrace = new StackFrameCollection();
 }
Example #15
0
 public InnerError() {
     Data = new DataDictionary();
     StackTrace = new StackFrameCollection();
 }