Пример #1
0
        public WindowsAzureStorageTimelineMessage(string serviceName, string serviceOperation, string resourceUri, int responseCode, DateTime startTime, DateTime endTime, TimeSpan offset, RequestEventArgs requestEventArgs)
        {
            Id = Guid.NewGuid();

            EventName     = string.Format("WAZStorage:{0} - {1} {2} {3}", serviceName, serviceOperation, resourceUri, responseCode);
            EventCategory = new TimelineCategoryItem("Windows Azure Storage", "#0094FF", "#0094FF");

            ServiceName      = serviceName;
            ServiceOperation = serviceOperation;
            Url          = resourceUri;
            ResponseCode = responseCode;

            StartTime = startTime;
            Duration  = endTime - startTime;
            Offset    = offset;

            RequestSize = requestEventArgs.Request.ContentLength;
            foreach (var header in requestEventArgs.Request.Headers.AllKeys)
            {
                RequestSize += header.Length + 2 + string.Join(";", requestEventArgs.Request.Headers.GetValues(header)).Length;
            }
            ResponseSize = requestEventArgs.Response.ContentLength;
            foreach (var header in requestEventArgs.Response.Headers.AllKeys)
            {
                ResponseSize += header.Length + 2 + string.Join(";", requestEventArgs.Response.Headers.GetValues(header)).Length;
            }

            RequestHeaders  = requestEventArgs.Request.Headers;
            ResponseHeaders = requestEventArgs.Request.Headers;

            EventSubText = string.Format("out: {0}/in: {1}", RequestSize.ToBytesHuman(), ResponseSize.ToBytesHuman());
        }
Пример #2
0
        public TimerResult PublishTimedAction(Action action, TimelineCategoryItem category, string eventName, string eventSubText = null)
        {
            var timedResult = Time(action);

            PublishMessage(new TimelineMessage {
                EventName = eventName, EventCategory = category, EventSubText = eventSubText
            }.AsTimedMessage(timedResult));

            return(timedResult);
        }
Пример #3
0
        public TimedActionResult <T> PublishTimedAction <T>(Func <T> action, TimelineCategoryItem category, string eventName, string eventSubText = null, Func <T, bool> publishCondition = null)
        {
            var timedResult = Time(action);

            if (publishCondition == null || publishCondition(timedResult.ActionResult))
            {
                PublishMessage(new TimelineMessage {
                    EventName = eventName, EventCategory = category, EventSubText = eventSubText
                }.AsTimedMessage(timedResult.TimerResult));
            }

            return(timedResult);
        }
Пример #4
0
        public TimelineMessage(string eventName, string appName, TimerResult result)
        {
            Id        = Guid.NewGuid();
            EventName = eventName;

            if (!Mappings.ContainsKey(appName))
            {
                Mappings[appName] = new TimelineCategoryItem(appName, "green", "blue");
            }
            EventCategory = Mappings[appName];

            Offset    = result.Offset;
            StartTime = result.StartTime;
            Duration  = result.Duration;
        }
Пример #5
0
        internal static void CaptureMoment(string eventName, string eventSubText, TimelineCategoryItem category, ITimelineMessage message)
        {
            if (string.IsNullOrEmpty(eventName))
            {
                throw new ArgumentNullException("eventName");
            }

#pragma warning disable 618
            var executionTimer = GlimpseConfiguration.GetConfiguredTimerStrategy()();
            var messageBroker  = GlimpseConfiguration.GetConfiguredMessageBroker();
#pragma warning restore 618

            if (executionTimer == null || messageBroker == null)
            {
                return;
            }

            message
            .AsTimelineMessage(eventName, category, eventSubText)
            .AsTimedMessage(executionTimer.Point());

            messageBroker.Publish(message);
        }
            public Message(string cacheName, string operationType)//, DateTime startTime, DateTime endTime, TimeSpan offset)
            {
                Id = Guid.NewGuid();

                EventName     = string.Format("WAZCache:{0}:{1}", cacheName, operationType);
                EventCategory = new TimelineCategoryItem("Windows Azure Caching", "#0094FF", "#0094FF");

                //StartTime = startTime;
                //Duration = endTime - startTime;
                //Offset = offset;

                //RequestSize = requestEventArgs.Request.ContentLength;
                //foreach (var header in requestEventArgs.Request.Headers.AllKeys)
                //{
                //    RequestSize += header.Length + 2 + string.Join(";", requestEventArgs.Request.Headers.GetValues(header)).Length;
                //}
                //ResponseSize = requestEventArgs.Response.ContentLength;
                //foreach (var header in requestEventArgs.Response.Headers.AllKeys)
                //{
                //    ResponseSize += header.Length + 2 + string.Join(";", requestEventArgs.Response.Headers.GetValues(header)).Length;
                //}

                //EventSubText = string.Format("out: {0}/in: {1}", RequestSize.ToBytesHuman(), ResponseSize.ToBytesHuman());
            }
Пример #7
0
        internal static OngoingCapture Capture(string eventName, string eventSubText, TimelineCategoryItem category, ITimelineMessage message)
        {
            if (string.IsNullOrEmpty(eventName))
            {
                throw new ArgumentNullException("eventName");
            }

#pragma warning disable 618
            var executionTimer = GlimpseConfiguration.GetConfiguredTimerStrategy()();
            var messageBroker  = GlimpseConfiguration.GetConfiguredMessageBroker();
#pragma warning restore 618

            if (executionTimer == null || messageBroker == null)
            {
                return(OngoingCapture.Empty());
            }

            return(new OngoingCapture(executionTimer, messageBroker, eventName, eventSubText, category, message));
        }
Пример #8
0
 internal static OngoingCapture Capture(string eventName, TimelineCategoryItem category, ITimelineMessage message)
 {
     return(Capture(eventName, null, category, message));
 }
Пример #9
0
 public OngoingCapture(IExecutionTimer executionTimer, IMessageBroker messageBroker, string eventName, string eventSubText, TimelineCategoryItem category, ITimelineMessage message)
 {
     Offset         = executionTimer.Start();
     ExecutionTimer = executionTimer;
     Message        = message.AsTimelineMessage(eventName, category, eventSubText);
     MessageBroker  = messageBroker;
 }
Пример #10
0
 internal static void CaptureMoment(string eventName, TimelineCategoryItem category, ITimelineMessage message)
 {
     CaptureMoment(eventName, null, category, message);
 }
Пример #11
0
        public static T AsMvcTimelineMessage <T>(this T message, TimelineCategoryItem eventCategory)
            where T : ITimelineMessage
        {
            message.EventCategory = eventCategory;

            var controllerName = string.Empty;
            var actionName     = string.Empty;
            var actionMessage  = message as IActionMessage;

            if (actionMessage != null)
            {
                controllerName = actionMessage.ControllerName;
                actionName     = actionMessage.ActionName;
            }

            var viewRenderMessage = message as View.Render.Message;

            if (viewRenderMessage != null)
            {
                message.EventName = string.Format("Render: {0}.{1}", controllerName, actionName);
                return(message);
            }

            var activeInvokerInvokeActionResultMessage = message as IInvokeActionResultMessage;

            if (activeInvokerInvokeActionResultMessage != null)
            {
                message.EventName = string.Format("Action Result: {0}.{1}", controllerName, actionName);
                return(message);
            }

            var activeInvokerInvokeActionMethodMessage = message as ActionInvoker.InvokeActionMethod.Message;

            if (activeInvokerInvokeActionMethodMessage != null)
            {
                message.EventName = string.Format("Controller: {0}.{1}", controllerName, actionName);
                return(message);
            }

            var boundedFilterMessage = message as IBoundedFilterMessage;

            if (boundedFilterMessage != null)
            {
                message.EventName = string.Format("{0} {1}: {2}.{3}", boundedFilterMessage.Category.ToString(), boundedFilterMessage.Bounds.ToString(), controllerName, actionName);
                return(message);
            }

            var filterMessage = message as IFilterMessage;

            if (filterMessage != null)
            {
                message.EventName = string.Format("{0}: {1}.{2}", filterMessage.Category.ToString(), controllerName, actionName);
                return(message);
            }

            if (actionMessage != null)
            {
                message.EventName = string.Format("{0}.{1}", controllerName, actionName);
                return(message);
            }

            return(message);
        }
Пример #12
0
        public void ShouldBeAbleToBuildWithFactory(TimerResult timerResult, string eventName, TimelineCategoryItem eventCategory, string eventSubText)
        {
            var testMessage = new TestMessage().AsTimelineMessage(eventName, eventCategory, eventSubText);

            Assert.Equal(eventName, testMessage.EventName);
            Assert.Equal(eventCategory, testMessage.EventCategory);
            Assert.Equal(eventSubText, testMessage.EventSubText);
        }
Пример #13
0
        public TimerResult PublishTimedAction <TMessage>(Action action, Func <TimerResult, TMessage> messageFactory, TimelineCategoryItem category, string eventName, string eventSubText = null) where TMessage : class
        {
            var timedResult = PublishTimedAction(action, category, eventName, eventSubText);

            PublishMessage(messageFactory(timedResult));

            return(timedResult);
        }
Пример #14
0
        public TimedActionResult <T> PublishTimedAction <T, TMessage>(Func <T> action, Func <T, TimerResult, TMessage> messageFactory, TimelineCategoryItem category, Func <T, string> eventNameFactory, Func <T, string> eventSubTextFactory = null, Func <T, bool> publishCondition = null) where TMessage : class
        {
            var actionResult = PublishTimedAction(action, category, eventNameFactory, eventSubTextFactory);

            if (publishCondition == null || publishCondition(actionResult.ActionResult))
            {
                PublishMessage(messageFactory(actionResult.ActionResult, actionResult.TimerResult));
            }

            return(actionResult);
        }