public override Task EventProcessingAsync(EventContext context)
        {
            if (!context.Event.IsError())
            {
                return(Task.CompletedTask);
            }

            var error = context.Event.GetError();

            if (error == null)
            {
                return(Task.CompletedTask);
            }

            if (String.IsNullOrWhiteSpace(context.Event.Message))
            {
                context.Event.Message = error.Message;
            }

            if (context.StackSignatureData.Count > 0)
            {
                return(Task.CompletedTask);
            }

            string[] commonUserMethods = { "DataContext.SubmitChanges", "Entities.SaveChanges" };
            if (context.HasProperty("CommonMethods"))
            {
                commonUserMethods = context.GetProperty <string>("CommonMethods").SplitAndTrim(new [] { ',' });
            }

            string[] userNamespaces = null;
            if (context.HasProperty("UserNamespaces"))
            {
                userNamespaces = context.GetProperty <string>("UserNamespaces").SplitAndTrim(new [] { ',' });
            }

            var signature = new ErrorSignature(error, userCommonMethods: commonUserMethods, userNamespaces: userNamespaces);

            if (signature.SignatureInfo.Count <= 0)
            {
                return(Task.CompletedTask);
            }

            var targetInfo     = new SettingsDictionary(signature.SignatureInfo);
            var stackingTarget = error.GetStackingTarget();

            if (stackingTarget?.Error?.StackTrace?.Count > 0 && !targetInfo.ContainsKey("Message"))
            {
                targetInfo["Message"] = stackingTarget.Error.Message;
            }

            error.Data[Error.KnownDataKeys.TargetInfo] = targetInfo;

            foreach (string key in signature.SignatureInfo.Keys)
            {
                context.StackSignatureData.Add(key, signature.SignatureInfo[key]);
            }

            return(Task.CompletedTask);
        }
Ejemplo n.º 2
0
        public override Task EventProcessingAsync(EventContext context) {
            if (!context.Event.IsError())
                return Task.CompletedTask;

            Error error = context.Event.GetError();
            if (error == null)
                return Task.CompletedTask;

            if (String.IsNullOrWhiteSpace(context.Event.Message))
                context.Event.Message = error.Message;

            string[] commonUserMethods = { "DataContext.SubmitChanges", "Entities.SaveChanges" };
            if (context.HasProperty("CommonMethods"))
                commonUserMethods = context.GetProperty<string>("CommonMethods").SplitAndTrim(',');

            string[] userNamespaces = null;
            if (context.HasProperty("UserNamespaces"))
                userNamespaces = context.GetProperty<string>("UserNamespaces").SplitAndTrim(',');

            var signature = new ErrorSignature(error, userCommonMethods: commonUserMethods, userNamespaces: userNamespaces);
            if (signature.SignatureInfo.Count <= 0)
                return Task.CompletedTask;

            var targetInfo = new SettingsDictionary(signature.SignatureInfo);
            var stackingTarget = error.GetStackingTarget();
            if (stackingTarget?.Error?.StackTrace != null && stackingTarget.Error.StackTrace.Count > 0 && !targetInfo.ContainsKey("Message"))
                targetInfo["Message"] = stackingTarget.Error.Message;

            error.Data[Error.KnownDataKeys.TargetInfo] = targetInfo;

            foreach (var key in signature.SignatureInfo.Keys)
                context.StackSignatureData.Add(key, signature.SignatureInfo[key]);

            return Task.CompletedTask;
        }
Ejemplo n.º 3
0
        public override void EventProcessing(EventContext context)
        {
            if (!context.Event.IsError())
                return;

            Error error = context.Event.GetError();
            if (error == null)
                return;

            if (String.IsNullOrWhiteSpace(context.Event.Message))
                context.Event.Message = error.Message;

            string[] commonUserMethods = { "DataContext.SubmitChanges", "Entities.SaveChanges" };
            if (context.HasProperty("CommonMethods"))
                commonUserMethods = context.GetProperty<string>("CommonMethods").SplitAndTrim(',');

            string[] userNamespaces = null;
            if (context.HasProperty("UserNamespaces"))
                userNamespaces = context.GetProperty<string>("UserNamespaces").SplitAndTrim(',');

            var signature = new ErrorSignature(error, userCommonMethods: commonUserMethods, userNamespaces: userNamespaces);
            if (signature.SignatureInfo.Count <= 0)
                return;

            foreach (var key in signature.SignatureInfo.Keys)
                context.StackSignatureData.Add(key, signature.SignatureInfo[key]);
        }
Ejemplo n.º 4
0
        public override void EventProcessing(EventContext context)
        {
            if (!context.Event.IsError())
            {
                return;
            }

            Error error = context.Event.GetError();

            if (error == null)
            {
                return;
            }

            if (String.IsNullOrWhiteSpace(context.Event.Message))
            {
                context.Event.Message = error.Message;
            }

            string[] commonUserMethods = { "DataContext.SubmitChanges", "Entities.SaveChanges" };
            if (context.HasProperty("CommonMethods"))
            {
                commonUserMethods = context.GetProperty <string>("CommonMethods").SplitAndTrim(',');
            }

            string[] userNamespaces = null;
            if (context.HasProperty("UserNamespaces"))
            {
                userNamespaces = context.GetProperty <string>("UserNamespaces").SplitAndTrim(',');
            }

            var signature = new ErrorSignature(error, userCommonMethods: commonUserMethods, userNamespaces: userNamespaces);

            if (signature.SignatureInfo.Count <= 0)
            {
                return;
            }

            var targetInfo     = new SettingsDictionary(signature.SignatureInfo);
            var stackingTarget = error.GetStackingTarget();

            if (stackingTarget != null && stackingTarget.Error != null)
            {
                targetInfo.Add("Message", error.GetStackingTarget().Error.Message);
            }

            error.Data[Error.KnownDataKeys.TargetInfo] = targetInfo;

            foreach (var key in signature.SignatureInfo.Keys)
            {
                context.StackSignatureData.Add(key, signature.SignatureInfo[key]);
            }
        }
Ejemplo n.º 5
0
        public override void EventProcessing(EventContext context)
        {
            if (!context.Event.IsError())
            {
                return;
            }

            Error error = context.Event.GetError();

            if (error == null)
            {
                return;
            }

            if (String.IsNullOrWhiteSpace(context.Event.Message))
            {
                context.Event.Message = error.Message;
            }

            string[] commonUserMethods = { "DataContext.SubmitChanges", "Entities.SaveChanges" };
            if (context.HasProperty("CommonMethods"))
            {
                commonUserMethods = context.GetProperty <string>("CommonMethods").SplitAndTrim(',');
            }

            string[] userNamespaces = null;
            if (context.HasProperty("UserNamespaces"))
            {
                userNamespaces = context.GetProperty <string>("UserNamespaces").SplitAndTrim(',');
            }

            var signature = new ErrorSignature(error, userCommonMethods: commonUserMethods, userNamespaces: userNamespaces);

            if (signature.SignatureInfo.Count <= 0)
            {
                return;
            }

            foreach (var key in signature.SignatureInfo.Keys)
            {
                context.StackSignatureData.Add(key, signature.SignatureInfo[key]);
            }
        }
        public override void Process(EventContext ctx) {
            if (ctx.StackInfo == null || !ctx.StackInfo.DateFixed.HasValue || ctx.StackInfo.DateFixed.Value >= ctx.Event.Date.UtcDateTime)
                return;

            Log.Trace().Message("Marking event as an regression.").Write();
            _stackRepository.MarkAsRegressed(ctx.StackInfo.Id);
            _eventRepository.MarkAsRegressedByStack(ctx.StackInfo.Id);

            string signatureHash = ctx.GetProperty<string>("__SignatureHash");
            _stackRepository.InvalidateCache(ctx.Event.StackId, signatureHash, ctx.Event.ProjectId);

            ctx.Event.IsFixed = false;
            ctx.IsRegression = true;
        }