Esempio n. 1
0
        public override object GetData(ITabContext context)
        {
            if (context.GetMessages <AuthorizerMessage>().Any())
            {
                return(context.GetMessages <AuthorizerMessage>().ToList());
            }

            return("There have been no Authorization events recorded. If you think there should have been, check that the 'Glimpse for Orchard Authorizer' feature is enabled.");
        }
Esempio n. 2
0
        public override object GetData(ITabContext context)
        {
            if (context.GetMessages <SiteSettingsMessage>().Any())
            {
                return(context.GetMessages <SiteSettingsMessage>().ToList());
            }

            return("There is no data available for this tab, check that the 'Glimpse for Orchard Site Settings' feature is enabled.");
        }
 private string GetCurrentPage(ITabContext context, bool mobile)
 {
     string page = null;
     var getDisplayInfoForPageMessage = context.GetMessages<StateRouteHandler.GetDisplayInfoForPage.Message>().FirstOrDefault();
     var getPageForDisplayInfoMessage = context.GetMessages<StateRouteHandler.GetPageForDisplayInfo.Message>().FirstOrDefault();
     if (getDisplayInfoForPageMessage != null)
         page = getDisplayInfoForPageMessage.Page;
     if (getPageForDisplayInfoMessage != null)
         page = getPageForDisplayInfoMessage.Page;
     if (page == null)
         page = (!mobile || StateContext.State.MobilePage.Length == 0) ? StateContext.State.Page : StateContext.State.MobilePage;
     return page;
 }
 private List<string> GetCurrentMasters(ITabContext context, bool mobile)
 {
     var masters = new List<string>();
     var getDisplayInfoForMasterMessages = context.GetMessages<StateRouteHandler.GetDisplayInfoForMaster.Message>();
     var getMasterForDisplayInfoMessages = context.GetMessages<StateRouteHandler.GetMasterForDisplayInfo.Message>();
     foreach (var getDisplayInfoForMasterMessage in getDisplayInfoForMasterMessages)
         masters.Add(getDisplayInfoForMasterMessage.Master);
     foreach (var getMasterForDisplayInfoMessage in getMasterForDisplayInfoMessages)
         masters.Add(getMasterForDisplayInfoMessage.Master);
     if (masters.Count == 0)
         masters = ((!mobile || (StateContext.State.MobilePage.Length == 0 && StateContext.State.MobileMasters.Count == 0)) ?
             StateContext.State.Masters : StateContext.State.MobileMasters).ToList();
     return masters;
 }
Esempio n. 5
0
		private string GetCurrentTheme(ITabContext context, bool mobile)
		{
			string theme = null;
			var getDisplayInfoForThemeMessage = context.GetMessages<AlternateType.StateRouteHandler.GetDisplayInfoForTheme.Message>().FirstOrDefault();
			var getThemeForDisplayInfoMessage = context.GetMessages<AlternateType.StateRouteHandler.GetThemeForDisplayInfo.Message>().FirstOrDefault();
			if (getDisplayInfoForThemeMessage != null)
				theme = getDisplayInfoForThemeMessage.Theme;
			if (getThemeForDisplayInfoMessage != null)
				theme = getThemeForDisplayInfoMessage.Theme;
			if (theme == null)
				theme = (!mobile || (StateContext.State.MobilePage.Length == 0 && StateContext.State.MobileTheme.Length == 0)) ?
					StateContext.State.Theme : StateContext.State.MobileTheme;
			return theme;
		}
Esempio n. 6
0
        public override object GetData(ITabContext context)
        {
            var plugin = Plugin.Create("Level", "Timestamp", "Message", "Properties");

            foreach (var item in context.GetMessages <LogEventItem>())
            {
                var properties = item.LogEvent.Properties
                                 .Select(pv => new { Name = pv.Key, Value = GlimpsePropertyFormatter.Simplify(pv.Value) })
                                 .ToList();

                if (item.LogEvent.Exception != null)
                {
                    properties.Add(new { Name = "Exception", Value = (object)item.LogEvent.Exception });
                }

                properties = properties.OrderBy(p => p.Name).ToList();


                var row = plugin.AddRow();
                row.Column(item.LogEvent.Level.ToString());
                row.Column(item.LogEvent.Timestamp.ToString("HH:mm:ss.fff", item.FormatProvider));
                row.Column(item.LogEvent.RenderMessage(item.FormatProvider)).Strong();
                row.Column(properties);

                ApplyRowLevelStyle(item.LogEvent.Level, row);
            }

            return(plugin);
        }
Esempio n. 7
0
        public override object GetData(ITabContext context)
        {
            var timelineMessages = context.GetMessages <ITimelineMessage>()
                                   .Where(m => m.EventName.StartsWith("WAZStorage:")).Cast <WindowsAzureStorageTimelineMessage>();

            var model = new StorageModel();

            if (timelineMessages != null)
            {
                model.Statistics.TotalStorageTx               = timelineMessages.Count();
                model.Statistics.TotalBlobTx                  = timelineMessages.Count(m => m.EventName.StartsWith("WAZStorage:Blob"));
                model.Statistics.TotalTableTx                 = timelineMessages.Count(m => m.EventName.StartsWith("WAZStorage:Table"));
                model.Statistics.TotalQueueTx                 = timelineMessages.Count(m => m.EventName.StartsWith("WAZStorage:Queue"));
                model.Statistics.TotalTrafficToStorage        = timelineMessages.Sum(m => m.RequestSize).ToBytesHuman();
                model.Statistics.TotalTrafficFromStorage      = timelineMessages.Sum(m => m.ResponseSize).ToBytesHuman();
                model.Statistics.PricePerTenThousandPageViews = string.Format("${0}", model.Statistics.TotalStorageTx * 1000 * 0.0000001 + timelineMessages.Sum(m => m.ResponseSize) * 10000 * (0.12 / 1024 / 1024 / 1024));

                model.Requests = FlattenRequests(timelineMessages);
                model.Warnings = AnalyzeMessagesForWarnings(timelineMessages);

                return(model);
            }

            return("No storage transactions have been utilized for this request.");
        }
Esempio n. 8
0
        public object GetData(ITabContext context)
        {
            var messages   = context.GetMessages <AdoMessage>().ToList();
            var aggregator = new MessageAggregator(messages);
            var queryData  = aggregator.Aggregate();

            var queryCount       = queryData.Commands.Count;
            var connectionCount  = queryData.Connections.Count;
            var transactionCount = queryData.Transactions.Count;

            var queryExecutionTime = new TimeSpan();
            var connectionOpenTime = new TimeSpan();

            foreach (var command in queryData.Commands)
            {
                var commandMetadata = command.Value;
                queryExecutionTime += commandMetadata.Duration;
            }

            foreach (var connection in queryData.Connections)
            {
                var connectionMetadata = connection.Value;
                connectionOpenTime += connectionMetadata.Duration.GetValueOrDefault(TimeSpan.Zero);
            }

            return(new
            {
                queryCount,
                connectionCount,
                transactionCount,
                queryExecutionTime,
                connectionOpenTime
            });
        }
Esempio n. 9
0
        public override object GetData(ITabContext context)
        {
            var plugin = Plugin.Create("Level", "Timestamp", "Message", "Properties");

            foreach (var item in context.GetMessages<LogEventItem>())
            {
                var properties = item.LogEvent.Properties
                        .Select(pv => new { Name = pv.Key, Value = GlimpsePropertyFormatter.Simplify(pv.Value) })
                        .ToList();

                if (item.LogEvent.Exception != null)
                    properties.Add(new { Name = "Exception", Value = (object)item.LogEvent.Exception });

                properties = properties.OrderBy(p => p.Name).ToList();

                var row = plugin.AddRow();
                row.Column(item.LogEvent.Level.ToString());
                row.Column(item.LogEvent.Timestamp.ToString("HH:mm:ss.fff", item.FormatProvider));
                row.Column(item.LogEvent.RenderMessage(item.FormatProvider)).Strong();
                row.Column(properties);

                ApplyRowLevelStyle(item.LogEvent.Level, row);
            }

            return plugin;
        }
Esempio n. 10
0
        public override object GetData(ITabContext context)
        {
            var timelineMessages = context.GetMessages<ITimelineMessage>()
                .Where(m => m.EventName.StartsWith("WAZStorage:")).Cast<WindowsAzureStorageTimelineMessage>();

            var model = new StorageModel();

            if (timelineMessages != null)
            {
                model.Statistics.TotalStorageTx = timelineMessages.Count();
                model.Statistics.TotalBlobTx = timelineMessages.Count(m => m.EventName.StartsWith("WAZStorage:Blob"));
                model.Statistics.TotalTableTx = timelineMessages.Count(m => m.EventName.StartsWith("WAZStorage:Table"));
                model.Statistics.TotalQueueTx = timelineMessages.Count(m => m.EventName.StartsWith("WAZStorage:Queue"));
                model.Statistics.TotalTrafficToStorage = timelineMessages.Sum(m => m.RequestSize).ToBytesHuman();
                model.Statistics.TotalTrafficFromStorage = timelineMessages.Sum(m => m.ResponseSize).ToBytesHuman();
                model.Statistics.PricePerTenThousandPageViews = string.Format("${0}", model.Statistics.TotalStorageTx * 1000 * 0.0000001 + timelineMessages.Sum(m => m.ResponseSize) * 10000 * (0.12 / 1024 / 1024 / 1024));

                model.Requests = FlattenRequests(timelineMessages);
                model.Warnings = AnalyzeMessagesForWarnings(timelineMessages);

                return model;
            }

            return "No storage transactions have been utilized for this request.";
        }
Esempio n. 11
0
 public object GetData(ITabContext context)
 {
     return context.GetMessages<ITimelineMessage>()
         .Where(m => 
             m.EventCategory.Name.Equals("Command") ||
             (m.EventCategory.Name.Equals("Controller") && m.EventName.StartsWith("Controller:")) ||
             m.EventCategory.Name.Equals("View")).OrderBy(m => m.Offset);
 }
Esempio n. 12
0
 public object GetData(ITabContext context)
 {
     return(context.GetMessages <ITimelineMessage>()
            .Where(m =>
                   m.EventCategory.Name.Equals("Command") ||
                   (m.EventCategory.Name.Equals("Controller") && m.EventName.StartsWith("Controller:")) ||
                   m.EventCategory.Name.Equals("View")).OrderBy(m => m.Offset));
 }
Esempio n. 13
0
        public override object GetData(ITabContext context)
        {
            var viewEngineFindViewsMessages = context.GetMessages <ViewEngine.FindViews.Message>();
            var viewRenderMessages          = context.GetMessages <View.Render.Message>();
            var result = new List <ViewsModel>();

            if (viewEngineFindViewsMessages == null || viewRenderMessages == null)
            {
                return(result);
            }

            foreach (var findView in viewEngineFindViewsMessages)
            {
                result.Add(new ViewsModel(findView, viewRenderMessages.SingleOrDefault(r => r.ViewCorrelation.ViewEngineFindCallId == findView.Id)));
            }

            return(result);
        }
Esempio n. 14
0
        public override object GetData(ITabContext context)
        {
            var viewEngineFindViewsMessages = context.GetMessages<ViewEngine.FindViews.Message>();
            var viewRenderMessages = context.GetMessages<View.Render.Message>();
            var result = new List<ViewsModel>();

            if (viewEngineFindViewsMessages == null || viewRenderMessages == null)
            {
                return result;
            }

            foreach (var findView in viewEngineFindViewsMessages)
            {
                result.Add(new ViewsModel(findView, viewRenderMessages.SingleOrDefault(r => r.ViewCorrelation.ViewEngineFindCallId == findView.Id)));
            }

            return result;
        }
Esempio n. 15
0
        public override object GetData(ITabContext context)
        {
            var routeMessages      = ProcessMessages(context.GetMessages <RouteBase.GetRouteData.Message>());
            var constraintMessages = ProcessMessages(context.GetMessages <RouteBase.ProcessConstraint.Message>());

            var result = new List <RouteModel>();

            using (System.Web.Routing.RouteTable.Routes.GetReadLock())
            {
                foreach (var routeBase in System.Web.Routing.RouteTable.Routes)
                {
                    var routeModel = GetRouteModelForRoute(context, routeBase, routeMessages, constraintMessages);

                    result.Add(routeModel);
                }
            }

            return(result);
        }
Esempio n. 16
0
        public object GetData(ITabContext context)
        {
            var sessions = context.GetMessages<RavenDbSessionMessage>().Select(x => x.Id).ToArray();

            var data = new List<object[]>();
            data.Add(new object[] { "Key", "Value" });
            data.Add(new object[] { "Stores", GetStoreList() });
            data.Add(new object[] { "Sessions", GetSessionList(sessions) });
            data.Add(new object[] { "Requests", GetRequestList(sessions) });
            return data;
        }
Esempio n. 17
0
        public override object GetData(ITabContext context)
        {
            var messages = context.GetMessages <GlimpseMessage <ContentManagerMessage> >().ToList();

            if (!messages.Any())
            {
                return("There have been no Display Manager events recorded. If you think there should have been, check that the 'Glimpse for Orchard Content Manager' feature is enabled.");
            }

            return(messages);
        }
Esempio n. 18
0
        public override object GetData(ITabContext context)
        {
            var messages = context.GetMessages <ContentManagerGetMessage>().ToList();

            if (!messages.Any())
            {
                return(null);
            }

            return(messages);
        }
Esempio n. 19
0
        private string GetCurrentPage(ITabContext context, bool mobile)
        {
            string page = null;
            var    getDisplayInfoForPageMessage = context.GetMessages <StateRouteHandler.GetDisplayInfoForPage.Message>().FirstOrDefault();
            var    getPageForDisplayInfoMessage = context.GetMessages <StateRouteHandler.GetPageForDisplayInfo.Message>().FirstOrDefault();

            if (getDisplayInfoForPageMessage != null)
            {
                page = getDisplayInfoForPageMessage.Page;
            }
            if (getPageForDisplayInfoMessage != null)
            {
                page = getPageForDisplayInfoMessage.Page;
            }
            if (page == null)
            {
                page = (!mobile || StateContext.State.MobilePage.Length == 0) ? StateContext.State.Page : StateContext.State.MobilePage;
            }
            return(page);
        }
Esempio n. 20
0
        public override object GetData(ITabContext context)
        {
            var messages = context.GetMessages <GlimpseMessage <EnabledFeatureMessage> >().ToList();

            if (messages.Any())
            {
                return(messages);
            }

            return("There is no data available for this tab, check that the 'Glimpse for Orchard Enabled Features' feature is enabled.");
        }
Esempio n. 21
0
        public override object GetData(ITabContext context)
        {
            var routeMessages      = ProcessMessages(context.GetMessages <RouteDataMessage>());
            var constraintMessages = ProcessMessages(context.GetMessages <ProcessConstraintMessage>());

            var result = new List <RouteModel>();

            using (System.Web.Routing.RouteTable.Routes.GetReadLock())
            {
                foreach (var routeBase in System.Web.Routing.RouteTable.Routes)
                {
                    if (routeBase.GetType().ToString() == "System.Web.Mvc.Routing.LinkGenerationRoute")
                    {
                        continue;
                    }

                    if (routeBase.GetType().ToString() == "System.Web.Mvc.Routing.RouteCollectionRoute")
                    {
                        // This catches any routing that has been defined using Attribute Based Routing
                        // System.Web.Http.Routing.RouteCollectionRoute is a collection of HttpRoutes

                        var subRoutes = routeBase.GetType().GetField("_subRoutes", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(routeBase);
                        var _routes   = (IList <System.Web.Routing.Route>)subRoutes.GetType().GetField("_routes", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(subRoutes);

                        for (var i = 0; i < _routes.Count; i++)
                        {
                            var routeModel = GetRouteModelForRoute(context, _routes[i], routeMessages, constraintMessages);
                            result.Add(routeModel);
                        }
                    }
                    else
                    {
                        var routeModel = GetRouteModelForRoute(context, routeBase, routeMessages, constraintMessages);

                        result.Add(routeModel);
                    }
                }
            }

            return(result);
        }
Esempio n. 22
0
        private string GetCurrentTheme(ITabContext context, bool mobile)
        {
            string theme = null;
            var    getDisplayInfoForThemeMessage = context.GetMessages <StateRouteHandler.GetDisplayInfoForTheme.Message>().FirstOrDefault();
            var    getThemeForDisplayInfoMessage = context.GetMessages <StateRouteHandler.GetThemeForDisplayInfo.Message>().FirstOrDefault();

            if (getDisplayInfoForThemeMessage != null)
            {
                theme = getDisplayInfoForThemeMessage.Theme;
            }
            if (getThemeForDisplayInfoMessage != null)
            {
                theme = getThemeForDisplayInfoMessage.Theme;
            }
            if (theme == null)
            {
                theme = (!mobile || (StateContext.State.MobilePage.Length == 0 && StateContext.State.MobileTheme.Length == 0)) ?
                        StateContext.State.Theme : StateContext.State.MobileTheme;
            }
            return(theme);
        }
Esempio n. 23
0
        private List <string> GetCurrentMasters(ITabContext context, bool mobile)
        {
            var masters = new List <string>();
            var getDisplayInfoForMasterMessages = context.GetMessages <StateRouteHandler.GetDisplayInfoForMaster.Message>();
            var getMasterForDisplayInfoMessages = context.GetMessages <StateRouteHandler.GetMasterForDisplayInfo.Message>();

            foreach (var getDisplayInfoForMasterMessage in getDisplayInfoForMasterMessages)
            {
                masters.Add(getDisplayInfoForMasterMessage.Master);
            }
            foreach (var getMasterForDisplayInfoMessage in getMasterForDisplayInfoMessages)
            {
                masters.Add(getMasterForDisplayInfoMessage.Master);
            }
            if (masters.Count == 0)
            {
                masters = ((!mobile || (StateContext.State.MobilePage.Length == 0 && StateContext.State.MobileMasters.Count == 0)) ?
                           StateContext.State.Masters : StateContext.State.MobileMasters).ToList();
            }
            return(masters);
        }
Esempio n. 24
0
        public object GetData(ITabContext context)
        {
            var sessions = context.GetMessages <RavenDbSessionMessage>().Select(x => x.Id).ToArray();

            var data = new List <object[]>();

            data.Add(new object[] { "Key", "Value" });
            data.Add(new object[] { "Stores", GetStoreList() });
            data.Add(new object[] { "Sessions", GetSessionList(sessions) });
            data.Add(new object[] { "Requests", GetRequestList(sessions) });
            return(data);
        }
Esempio n. 25
0
        internal DataAccessAggregator(ITabContext context)
        {
            rawMessages        = new List <DataAccessMessage>(context.GetMessages <DataAccessMessage>());
            aggregatedMessages = new List <DataAccessTabItem>(rawMessages.Count);
            Aggregate();
            AggregateHints();
            var broker = context.MessageBroker;

            foreach (var e in aggregatedMessages)
            {
                e.ToTimeline(broker);
            }
        }
Esempio n. 26
0
        public override object GetData(ITabContext context)
        {
            var plugin = Plugin.Create("Command", "Key", "Sent", "Size", "Received", "Size", "Expire", "Duration");

            var messages = context.GetMessages <RedisTimelineMessage>().ToArray();

            if (!messages.Any())
            {
                return(null);
            }

            var ttl = Task.WhenAll(messages.Select(async x =>
            {
                var conn   = x.UsedSettings.GetConnection();
                var db     = conn.GetDatabase(x.UsedSettings.Db);
                var exists = await db.KeyExistsAsync(x.Key).ConfigureAwait(false);
                if (exists)
                {
                    var v = await db.KeyTimeToLiveAsync(x.Key).ConfigureAwait(false);
                    return((v.HasValue) ? v.Value.ToString(@"hh\:mm\:ss") : "-");
                }
                else
                {
                    return(null);
                }
            }).ToArray()).Result;

            var duplicatedKey = new HashSet <Tuple <string, RedisKey> >();

            foreach (var item in messages.Zip(ttl, (message, expire) => new { message, expire }))
            {
                var message = item.message;
                var key     = Tuple.Create(message.Command, message.Key);

                var columns = plugin.AddRow()
                              .Column(message.Command)
                              .Column((string)message.Key)
                              .Column((message.SentObject == null) ? null : message.SentObject)
                              .Column((message.SentObject == null) ? null : (long?)message.SentSize)
                              .Column((message.ReceivedObject == null) ? null : message.ReceivedObject)
                              .Column((message.ReceivedObject == null) ? null : (long?)message.ReceivedSize)
                              .Column(item.expire)
                              .Column(message.Duration);
                columns.WarnIf(duplicatedKey.Contains(key));
                columns.ErrorIf(message.IsError);
                duplicatedKey.Add(key);
            }

            return(plugin);
        }
Esempio n. 27
0
        public override object GetData(ITabContext context)
        {
            var timelineMessages = context.GetMessages <ITimelineMessage>().Where(m => m.EventName.StartsWith("WAZCache:"));

            var model = new CachingModel();

            if (timelineMessages != null)
            {
                // TODO: build useful data from this
                model.TotalSuccessful = timelineMessages.Count();
                return(model);
            }

            return("No cache has been utilized for this request.");
        }
Esempio n. 28
0
        public object GetData(ITabContext context) {
            var section = Plugin.Create("Level", "Logger", "Message", "From Request Start", "From Last");
            foreach (var item in context.GetMessages<NLogEventInfoMessage>()) {
                section.AddRow()
                       .Column(string.Format("<span data-levelNum='{0}'>{1}</span>", item.LevelNumber, item.Level)).Raw()
                       .Column(item.Logger)
                       .Column(GetMessage(item.LogEvent))
                       .Column(item.FromFirst.TotalMilliseconds.ToString("0.00"))
                       .Column(item.FromLast.TotalMilliseconds.ToString("0.00"))
                       .Column(item)
                       .ApplyRowStyle(StyleFromLevel(item.Level));
            }

            return section.Build();
        }
Esempio n. 29
0
        public override object GetData(ITabContext context)
        {
            var timelineMessages = context.GetMessages<ITimelineMessage>().Where(m => m.EventName.StartsWith("WAZCache:"));

            var model = new CachingModel();

            if (timelineMessages != null)
            {
                // TODO: build useful data from this
                model.TotalSuccessful = timelineMessages.Count();
                return model;
            }

            return "No cache has been utilized for this request.";
        }
        public override object GetData(ITabContext context)
        {
            var messages = context.GetMessages<OperationCompletedEventMessage>().ToList();

            var section = Core.Tab.Assist.Plugin.Create("Query", "Count", "Time");

            foreach (var message in messages)
            {
                section.AddRow()
                    .Column(message.Query)
                    .Column(message.ResultCount)
                    .Column(message.Time);
            }

            return section;
        }
Esempio n. 31
0
        public override object GetData(ITabContext context)
        {
            var hasRun = context.TabStore.Get("hasRun");
            if (hasRun == null)
            { 
                context.TabStore.Set("hasRun", "true");
                 
                // Make sure the traces are dumpted out to the normal trace stream  
                writeToDiagnosticsTraceField.SetValue(null, true);    

                return null;
            }

            var data = ProcessData(context.GetMessages<PageLifeCycleMessage>());
            return data;
        }
Esempio n. 32
0
        public override object GetData(ITabContext context)
        {
            var messages = context.GetMessages <OperationCompletedEventMessage>().ToList();

            var section = Core.Tab.Assist.Plugin.Create("Query", "Count", "Time");

            foreach (var message in messages)
            {
                section.AddRow()
                .Column(message.Query)
                .Column(message.ResultCount)
                .Column(message.Time);
            }

            return(section);
        }
Esempio n. 33
0
        public object GetData(ITabContext context)
        {
            var messages = context.GetMessages<AdoMessage>().ToList();
            var aggregator = new MessageAggregator(messages);
            var queryData = aggregator.Aggregate();

            SqlStatistics sqlStatistics = SqlStatisticsCalculator.Caluculate(queryData);

            return new
            {
                queryCount = sqlStatistics.QueryCount,
                connectionCount = sqlStatistics.ConnectionCount,
                transactionCount = sqlStatistics.TransactionCount,
                queryExecutionTime = sqlStatistics.QueryExecutionTime,
                connectionOpenTime = sqlStatistics.ConnectionOpenTime
            };
        }
Esempio n. 34
0
        public object GetData(ITabContext context)
        {
            var messages   = context.GetMessages <AdoMessage>().ToList();
            var aggregator = new MessageAggregator(messages);
            var queryData  = aggregator.Aggregate();

            SqlStatistics sqlStatistics = SqlStatisticsCalculator.Caluculate(queryData);

            return(new
            {
                queryCount = sqlStatistics.QueryCount,
                connectionCount = sqlStatistics.ConnectionCount,
                transactionCount = sqlStatistics.TransactionCount,
                queryExecutionTime = sqlStatistics.QueryExecutionTime,
                connectionOpenTime = sqlStatistics.ConnectionOpenTime
            });
        }
Esempio n. 35
0
        public override object GetData(ITabContext context)
        {
            var viewRenderMessages = context.GetMessages <ITimelineMessage>();

            var result = new TimelineModel();

            result.Category = new Dictionary <string, TimelineCategoryModel>();

            if (viewRenderMessages != null)
            {
                var maxEndPoint = TimeSpan.Zero;
                var events      = new List <TimelineEventModel>();
                foreach (var viewRenderMessage in viewRenderMessages.OrderBy(x => x.Offset))
                {
                    if (!result.Category.ContainsKey(viewRenderMessage.EventCategory.Name))
                    {
                        result.Category[viewRenderMessage.EventCategory.Name] = new TimelineCategoryModel {
                            EventColor = viewRenderMessage.EventCategory.Color, EventColorHighlight = viewRenderMessage.EventCategory.ColorHighlight
                        };
                    }

                    var timelineEvent = new TimelineEventModel();
                    timelineEvent.Title      = viewRenderMessage.EventName;
                    timelineEvent.Category   = viewRenderMessage.EventCategory.Name;
                    timelineEvent.SubText    = viewRenderMessage.EventSubText;
                    timelineEvent.Duration   = viewRenderMessage.Duration;
                    timelineEvent.StartPoint = viewRenderMessage.Offset;
                    timelineEvent.StartTime  = viewRenderMessage.StartTime;
                    //// viewRenderMessage.BuildDetails(timelineEvent.Details);

                    events.Add(timelineEvent);

                    var endPoint = timelineEvent.EndPoint;
                    if (endPoint > maxEndPoint)
                    {
                        maxEndPoint = endPoint;
                    }
                }

                result.Events   = events;
                result.Duration = maxEndPoint;
            }

            return(result);
        }
Esempio n. 36
0
        public override object GetData(ITabContext context)
        {
            var plugin = Plugin.Create("Command", "Key", "Sent", "Size", "Received", "Size", "Expire", "Duration");

            var messages = context.GetMessages<RedisTimelineMessage>().ToArray();
            if (!messages.Any()) return null;

            var ttl = Task.WhenAll(messages.Select(async x =>
            {
                var conn = x.UsedSettings.GetConnection();
                var db = conn.GetDatabase(x.UsedSettings.Db);
                var exists = await db.KeyExistsAsync(x.Key).ConfigureAwait(false);
                if (exists)
                {
                    var v = await db.KeyTimeToLiveAsync(x.Key).ConfigureAwait(false);
                    return (v.HasValue) ? v.Value.ToString(@"hh\:mm\:ss") : "-";
                }
                else
                {
                    return null;
                }
            }).ToArray()).Result;

            var duplicatedKey = new HashSet<Tuple<string, RedisKey>>();
            foreach (var item in messages.Zip(ttl, (message, expire) => new { message, expire }))
            {
                var message = item.message;
                var key = Tuple.Create(message.Command, message.Key);

                var columns = plugin.AddRow()
                    .Column(message.Command)
                    .Column((string)message.Key)
                    .Column((message.SentObject == null) ? null : message.SentObject)
                    .Column((message.SentObject == null) ? null : (long?)message.SentSize)
                    .Column((message.ReceivedObject == null) ? null : message.ReceivedObject)
                    .Column((message.ReceivedObject == null) ? null : (long?)message.ReceivedSize)
                    .Column(item.expire)
                    .Column(message.Duration);
                columns.WarnIf(duplicatedKey.Contains(key));
                columns.ErrorIf(message.IsError);
                duplicatedKey.Add(key);
            }

            return plugin;
        }
Esempio n. 37
0
        public object GetData(ITabContext context)
        {
            var section = Plugin.Create("Level", "Logger", "Message", "From Request Start", "From Last");

            foreach (var item in context.GetMessages <NLogEventInfoMessage>())
            {
                section.AddRow()
                .Column(string.Format("<span data-levelNum='{0}'>{1}</span>", item.LevelNumber, item.Level)).Raw()
                .Column(item.Logger)
                .Column(GetMessage(item.LogEvent))
                .Column(item.FromFirst.TotalMilliseconds.ToString("0.00"))
                .Column(item.FromLast.TotalMilliseconds.ToString("0.00"))
                .Column(item)
                .ApplyRowStyle(StyleFromLevel(item.Level));
            }

            return(section.Build());
        }
Esempio n. 38
0
        public override object GetData(ITabContext context)
        {
            var hasRun = context.TabStore.Get("hasRun");

            if (hasRun == null)
            {
                context.TabStore.Set("hasRun", "true");

                //Make sure the traces are dumpted out to the normal trace stream
                writeToDiagnosticsTraceField.SetValue(null, true);

                return(null);
            }

            var data = ProcessData(context.GetMessages <PageLifeCycleMessage>());

            return(data);
        }
Esempio n. 39
0
        public object GetData(ITabContext context)
        {
            var logEntries = context.GetMessages<WcfEntry>(); 
            if (logEntries == null)
                return null;

            // Evaluate any expression trees
            logEntries = logEntries.ToArray();

            var data = new List<object[]> {new object[] {"Timestamp", "Elapsed", "Action", "Request", "Response"}};
            data.AddRange(logEntries.Select(log => new object[] {
                                    log.StartTime,
                                    log.Duration.Milliseconds, 
                                    log.EventName,
                                    log.RequestBody,
                                    log.ResponseBody
                                }));
            return data;
        }
Esempio n. 40
0
        public override object GetData(ITabContext context)
        {
            var viewRenderMessages = context.GetMessages<ITimelineMessage>();

            var result = new TimelineModel();
            result.Category = new Dictionary<string, TimelineCategoryModel>();

            if (viewRenderMessages != null)
            {
                var maxEndPoint = TimeSpan.Zero;
                var events = new List<TimelineEventModel>();
                foreach (var viewRenderMessage in viewRenderMessages.OrderBy(x => x.Offset))
                {
                    if (!result.Category.ContainsKey(viewRenderMessage.EventCategory.Name))
                    {
                        result.Category[viewRenderMessage.EventCategory.Name] = new TimelineCategoryModel { EventColor = viewRenderMessage.EventCategory.Color, EventColorHighlight = viewRenderMessage.EventCategory.ColorHighlight };
                    }

                    var timelineEvent = new TimelineEventModel();
                    timelineEvent.Title = viewRenderMessage.EventName;
                    timelineEvent.Category = viewRenderMessage.EventCategory.Name;
                    timelineEvent.SubText = viewRenderMessage.EventSubText;
                    timelineEvent.Duration = viewRenderMessage.Duration;
                    timelineEvent.StartPoint = viewRenderMessage.Offset;
                    timelineEvent.StartTime = viewRenderMessage.StartTime;
                    //// viewRenderMessage.BuildDetails(timelineEvent.Details);

                    events.Add(timelineEvent);

                    var endPoint = timelineEvent.EndPoint;
                    if (endPoint > maxEndPoint)
                    {
                        maxEndPoint = endPoint;
                    }
                }

                result.Events = events;
                result.Duration = maxEndPoint;
            }

            return result;
        }
Esempio n. 41
0
        public override object GetData(ITabContext context)
        {
            var messages = context.GetMessages <PartMessage>().ToList();

            if (!messages.Any())
            {
                return("There have been no Content Part Driver events recorded. If you think there should have been, check that the 'Glimpse for Orchard Content Part Drivers' feature is enabled.");
            }

            //var vm = new ContentDefinitionVM {
            //    Content = new Dictionary<ContentTypeSummaryVM, IEnumerable<ContentPartSummaryVM>>()
            //};

            //foreach (var contentItem in messages.Select(m=> new ContentTypeSummaryVM{ContentItemId = m.ContentItemId}).Distinct().ToList()) {
            //    var scopedContentItem = contentItem;
            //    vm.Content.Add(contentItem, messages.Where(m => m.ContentItemId == scopedContentItem.ContentItemId).Select(m=> new ContentPartSummaryVM{ContentPartType = m.ContentPartType}));
            //}

            return(messages);
        }
Esempio n. 42
0
        public override object GetData(ITabContext context)
        {
            var viewRenderMessages = context.GetMessages <View.Render.Message>();

            var metadataResults = new List <MetadataItemModel>();

            if (viewRenderMessages != null)
            {
                foreach (var viewRenderMessage in viewRenderMessages)
                {
                    var metadata = viewRenderMessage.ModelMetadata;

                    var item             = new MetadataItemModel();
                    var propertyMetadata = new List <MetadataPropertyItemModel>();

                    item.Action     = viewRenderMessage.ActionName;
                    item.Controller = viewRenderMessage.ControllerName;
                    if (metadata != null)
                    {
                        item.ModelMetadata = ProcessMetaData(metadata);
                        item.Name          = metadata.PropertyName;
                        item.DisplayName   = metadata.GetDisplayName();
                        item.Type          = metadata.ModelType;
                        if (metadata.Properties != null)
                        {
                            item.PropertyMetadata = propertyMetadata;
                            foreach (var metadataProperty in metadata.Properties)
                            {
                                propertyMetadata.Add(new MetadataPropertyItemModel {
                                    Name = metadataProperty.PropertyName, DisplayName = metadataProperty.GetDisplayName(), Metadata = ProcessMetaData(metadataProperty), Type = metadataProperty.ModelType
                                });
                            }
                        }
                    }

                    metadataResults.Add(item);
                }
            }

            return(metadataResults);
        }
Esempio n. 43
0
        public object GetData(ITabContext context)
        {
            if (context == null)
            {
                return(string.Empty);
            }
            var messages = context.GetMessages <LogStatistic>();

            if (messages == null)
            {
                return(string.Empty);
            }


            var data = Assist.Plugin.Create("Model Name", "Symbol Type", "Symbol Name", "Invocations", "Time");

            var items = messages
                        .GroupBy(m => new { m.ModelName, m.SymbolName, m.SymbolType })
                        .Select(g => new
            {
                g.FirstOrDefault()?.ModelName,
                g.FirstOrDefault()?.SymbolType,
                g.FirstOrDefault()?.SymbolName,
                Times = g.Count(),
                Time  = g.Sum(m => m.Time)
            })
                        .OrderByDescending(o => o.Time);

            foreach (var msg in items)
            {
                data.AddRow()
                .Column(msg.ModelName).Strong()
                .Column(msg.SymbolType.ToString())
                .Column(msg.SymbolName)
                .Column(msg.Times)
                .Column(msg.Time + "ms");
            }

            return(data);
        }
Esempio n. 44
0
        public override object GetData(ITabContext context)
        {
            var logEntries = context.GetMessages<LoggingEventMessage>();
            
            if (logEntries == null)
                return null;

            // Evaluate any expression trees
            logEntries = logEntries.ToArray();

            var data = new List<object[]>();

            // Only include the full log entry when there is a reasonable 
            // number of log messages
            var includeDetails = logEntries.Count() < MaxDetailedLogs;

            if (includeDetails)
            {
                data.Add(new[] { "Level", "Timestamp", "Message", "Log Entry" });
                data.AddRange(logEntries.Select(log => new object[] {
                                    log.LevelName, 
                                    log.TimeStamp, 
                                    log.Message,
                                    log,
                                    GetStyle(log.LevelValue),
                                }));
            }
            else
            {
                data.Add(new[] { "Level", "Timestamp", "Message" });
                data.AddRange(logEntries.Select(log => new object[] {
                                    log.LevelName, 
                                    log.TimeStamp, 
                                    log.Message,
                                    GetStyle(log.LevelValue),
                                }));
            }

            return data;
        }
Esempio n. 45
0
        public override object GetData(ITabContext context)
        { 
            var viewRenderMessages = context.GetMessages<View.Render.Message>(); 

            var metadataResults = new List<MetadataItemModel>();
            if (viewRenderMessages != null)
            {
                foreach (var viewRenderMessage in viewRenderMessages)
                { 
                    var metadata = viewRenderMessage.ModelMetadata;

                    var item = new MetadataItemModel();
                    var propertyMetadata = new List<MetadataPropertyItemModel>();

                    item.Action = viewRenderMessage.ActionName;
                    item.Controller = viewRenderMessage.ControllerName;
                    if (metadata != null)
                    {
                        item.ModelMetadata = ProcessMetaData(metadata);
                        item.Name = metadata.PropertyName;
                        item.DisplayName = metadata.GetDisplayName();
                        item.Type = metadata.ModelType;
                        if (metadata.Properties != null)
                        {
                            item.PropertyMetadata = propertyMetadata;
                            foreach (var metadataProperty in metadata.Properties)
                            { 
                                propertyMetadata.Add(new MetadataPropertyItemModel { Name = metadataProperty.PropertyName, DisplayName = metadataProperty.GetDisplayName(), Metadata = ProcessMetaData(metadataProperty), Type = metadataProperty.ModelType });
                            } 
                        }
                    }

                    metadataResults.Add(item);
                }
            }

            return metadataResults;
        }
Esempio n. 46
0
        public override object GetData(ITabContext context)
        {
            var plugin = Plugin.Create("Command", "Key", "Sent", "Received", "Duration");

            // <Command, Key>
            var duplicatedKey = new HashSet <Tuple <string, string> >();

            foreach (var message in context.GetMessages <RedisTimelineMessage>())
            {
                var key = Tuple.Create(message.Command, message.Key);

                var columns = plugin.AddRow()
                              .Column(message.Command)
                              .Column(message.Key)
                              .Column((message.SendObject == null) ? null : JsonConvert.SerializeObject(message.SendObject))
                              .Column((message.ReceivedObject == null) ? null : JsonConvert.SerializeObject(message.ReceivedObject ?? ""))
                              .Column(message.Duration);
                columns.WarnIf(!duplicatedKey.Add(key));
                columns.ErrorIf(message.IsError);
            }

            return(plugin);
        }
Esempio n. 47
0
        public override object GetData(ITabContext context)
        {
            var plugin = Plugin.Create("Command", "Key", "Sent", "Received", "Duration");

            // <Command, Key>
            var duplicatedKey = new HashSet<Tuple<string, string>>();

            foreach (var message in context.GetMessages<RedisTimelineMessage>())
            {
                var key = Tuple.Create(message.Command, message.Key);

                var columns = plugin.AddRow()
                    .Column(message.Command)
                    .Column(message.Key)
                    .Column((message.SendObject == null) ? null : JsonConvert.SerializeObject(message.SendObject))
                    .Column((message.ReceivedObject == null) ? null : JsonConvert.SerializeObject(message.ReceivedObject ?? ""))
                    .Column(message.Duration);
                columns.WarnIf(!duplicatedKey.Add(key));
                columns.ErrorIf(message.IsError);
            }

            return plugin;
        }
Esempio n. 48
0
        public override object GetData(ITabContext context)
        {
            var processStart     = context.GetMessages <ProcessStartMessage>().FirstOrDefault();
            var interrupt        = context.GetMessages <InterruptMessage>().FirstOrDefault();
            var operationContext = context.GetMessages <OperationContext>().FirstOrDefault();
            var filterResult     = context.GetMessages <LightNodeFilterResultMessage>();
            var executeResult    = context.GetMessages <LightNodeExecuteResultMessage>().FirstOrDefault();

            if (processStart == null)
            {
                return(null);
            }
            var environment = processStart.Environment;

            var response = new Response
            {
                OutputContentFormatter = (executeResult != null) ? executeResult.UsedContentFormatter.GetType().Name : null,
                StatusCode             = environment.AsResponseStatusCode(),
                ReasonPhrase           = environment.AsResponseReasonPhrase(),
                ResponseHeaders        = environment.AsResponseHeaders()
            };

            var execution = new List <Execution>();

            foreach (var item in filterResult.Where(x => x.Phase == OperationPhase.Before))
            {
                execution.Add(new Execution {
                    Order = item.Order, Name = item.FilterName, Phase = item.Phase.ToString(), Elapsed = item.Duration.TotalMilliseconds + " ms", FromRequestStart = "T+ " + item.FromRequestStart.TotalMilliseconds + " ms"
                });
            }
            ;
            if (executeResult != null)
            {
                execution.Add(new Execution {
                    Name = operationContext.ToString(), Elapsed = executeResult.Duration.TotalMilliseconds + " ms", FromRequestStart = "T+ " + executeResult.FromRequestStart.TotalMilliseconds + " ms", Phase = executeResult.Phase.ToString()
                });
            }
            foreach (var item in filterResult.Where(x => x.Phase == OperationPhase.After || x.Phase == OperationPhase.Exception || x.Phase == OperationPhase.ReturnStatusCode))
            {
                execution.Add(new Execution {
                    Order = item.Order, Name = item.FilterName, Phase = item.Phase.ToString(), Elapsed = item.Duration.TotalMilliseconds + " ms", FromRequestStart = "T+ " + item.FromRequestStart.TotalMilliseconds + " ms"
                });
            }

            var option              = (executeResult != null) ? executeResult.Options : processStart.Options;
            var globalFilter        = string.Join(", ", option.Filters.Select(x => x.GetType().Name));
            var specifiedFormatters = string.Join(", ", option.SpecifiedFormatters.Select(x => x.GetType().Name));

            return(new LightNodeTabResult
            {
                Path = (operationContext != null) ? operationContext.ToString() : environment.AsRequestPath(),
                Parameters = (operationContext != null) ? operationContext.ParameterNames.Zip(operationContext.Parameters, (x, y) => new { x, y }).ToDictionary(x => x.x, x => x.y) : null,
                Result = (executeResult != null) ? executeResult.Result
                       : (interrupt != null) ? interrupt.Reason + System.Environment.NewLine + interrupt.Detail
                       : null,
                Execution = execution,
                Response = response,
                Options = new Options
                {
                    DefaultAcceptVerb = option.DefaultAcceptVerb.ToString(),
                    ErrorHandlingPolicy = option.ErrorHandlingPolicy.ToString(),
                    DefaultFormatter = option.DefaultFormatter.GetType().Name,
                    GlobalFilters = string.IsNullOrWhiteSpace(globalFilter) ? null : globalFilter,
                    SpecifiedFormatters = string.IsNullOrWhiteSpace(specifiedFormatters) ? null : specifiedFormatters,
                    OperationCoordinatorFactory = option.OperationCoordinatorFactory.GetType().Name,
                    OperationMissingHandlingPolicy = option.OperationMissingHandlingPolicy.ToString(),
                    ParameterEnumAllowsFieldNameParse = option.ParameterEnumAllowsFieldNameParse,
                    ParameterStringImplicitNullAsDefault = option.ParameterStringImplicitNullAsDefault,
                    StreamWriteOption = option.StreamWriteOption.ToString(),
                    UseOtherMiddleware = option.UseOtherMiddleware
                }
            });
        }
Esempio n. 49
0
        public override object GetData(ITabContext context)
        {
            var commands = context.GetMessages<CommandTimelineMessage>().ToArray();

            if (!commands.Any())
            {
                return null;
            }

            var ordinal = 1;
            var duplicationKeys = new HashSet<string>();
            var duplicationCount = 0;
            var queries = new TabSection("Ordinal", "Database", "Command", "Parameters", "CommandType", "With Transaction", "Records", "IsError", "Duration", "Offset");
            foreach (var command in commands)
            {
                var parameters = new TabSection("Name", "Value", "DbType", "Direction");
                foreach (var parameter in command.Parameters)
                {
                    parameters.AddRow()
                        .Column(parameter.ParameterName)
                        .Column(parameter.Value)
                        .Column(parameter.DbType.ToString())
                        .Column(parameter.Direction.ToString());
                }

                var row = queries.AddRow()
                    .Column(ordinal)
                    .Column(command.Database)
                    .Column(command.CommandText)
                    .Column(command.Parameters.Any() ? parameters : null)
                    .Column(command.CommandType.ToString())
                    .Column(command.WithTransaction)
                    .Column(command.Records ?? 0)
                    .Column(command.IsError)
                    .Column(command.Duration)
                    .Column(command.Offset);

                var isDuplicated = !duplicationKeys.Add(command.CommandText);
                if (isDuplicated)
                {
                    row.WarnIf(true);
                    duplicationCount++;
                }

                ordinal++;
            }

            var sqlStatistics = new TabSection("Queries", "Duplication", "Total Query Duration");

            sqlStatistics.AddRow()
                .Column(commands.Length)
                .Column(duplicationCount)
                .Column(commands.Select(x => x.Duration).Aggregate((x, y) => x.Add(y)));

            var root = new TabObject();

            root.AddRow().Key("SQL Statistics").Value(sqlStatistics);
            root.AddRow().Key("Queries").Value(queries);

            return root.Build();
        }
Esempio n. 50
0
        public override object GetData(ITabContext context)
        {
            var connectionLifetimes = context.GetMessages<ConnectionLifetimeTimelineMessage>().ToArray();
            var transactionLifetimes = context.GetMessages<TransactionLifetimeTimelineMessage>().ToArray();
            var transactionEvents = context.GetMessages<TransactionEventTimelineMessage>().ToArray();
            var commands = context.GetMessages<CommandTimelineMessage>().ToArray();

            var statisticsSection = new TabSection("Database", "Queries", "Total Transaction Duration");
            var eventSection = new TabSection("Database", "Events", "Queries", "IsCommited", "Total Duration");

            // Statistics
            foreach (var transactionLifetime in transactionLifetimes.OrderBy(x => x.Offset).ToArray())
            {
                statisticsSection.AddRow()
                    .Column(connectionLifetimes.First(x => x.ConnectionId == transactionLifetime.ConnectionId).Database)
                    .Column(commands.Count(x => x.TransactionId.HasValue && x.TransactionId.Value == transactionLifetime.TransactionId))
                    .Column(transactionLifetime.Duration);
            }

            // Events
            foreach (var transactionLifetime in transactionLifetimes.OrderBy(x => x.Offset).ToArray())
            {
                var queries = commands
                    .Where(x => x.TransactionId.HasValue && x.TransactionId.Value == transactionLifetime.TransactionId)
                    .ToArray();

                var events = transactionEvents
                    .Where(x => x.TransactionId == transactionLifetime.TransactionId)
                    .Select(x => new
                    {
                        EventType = "Transaction",
                        EventName = x.TransactionEvent.ToString(),
                        Duration  = x.Duration,
                        Offset    = x.Offset
                    })
                    .Concat(queries
                        .Select(x => new
                        {
                            EventType = "Command",
                            EventName = x.CommandText,
                            Duration  = x.Duration,
                            Offset    = x.Offset
                        })
                    )
                    .OrderBy(x => x.Offset)
                    .ToArray();

                var eventDetailSection = new TabSection("EventType", "EventName", "Duration", "Offset");
                var duplicatedKeys = new HashSet<string>();

                foreach (var @event in events)
                {
                    var row = eventDetailSection.AddRow()
                        .Column(@event.EventType)
                        .Column(@event.EventName)
                        .Column(@event.Duration)
                        .Column(@event.Offset);

                    if (@event.EventType == "Command")
                    {
                        row.WarnIf(!duplicatedKeys.Add(@event.EventName));
                    }
                }

                eventSection.AddRow()
                    .Column(transactionLifetime.Database)
                    .Column(eventDetailSection)
                    .Column(commands.Length)
                    .Column(transactionLifetime.IsCommited)
                    .Column(transactionLifetime.Duration);
            }

            var root = new TabObject();

            root.AddRow().Key("Transaction Statistics").Value(statisticsSection);
            root.AddRow().Key("Transaction Events").Value(eventSection);

            return root.Build();
        }
Esempio n. 51
0
 public override object GetData(ITabContext context)
 {
     List<GlimpseMail> m = context.GetMessages<GlimpseMail>().ToList();
     return m;
 }
 public override object GetData(ITabContext context)
 {
     return context.GetMessages<ComponentModelMessage>().ToList();
 }
Esempio n. 53
0
 public object GetData(ITabContext context)
 {
     if (context == null) return string.Empty;
     var messages = context.GetMessages<LogStatistic>();
     if (messages == null) return string.Empty;
     var logParser = new LogParser();
     var logStatistics = messages as LogStatistic[] ?? messages.ToArray();
     var stat = logParser.Transform(logStatistics);
     if (stat == null) return string.Empty;
     var headerSection = new TabSection("Selects",
                                        "Inserts",
                                        "Updates",
                                        "Deletes",
                                        "Batch Commands");
     headerSection.AddRow()
                  .Column((stat.Selects > 50)
                              ? string.Format("{0} - (ONLY FIRST 50 DISPLAYED)", stat.Selects)
                              : stat.Selects.ToString(CultureInfo.InvariantCulture)).Strong()
                  .Column(stat.Inserts)
                  .Column(stat.Updates)
                  .Column(stat.Deletes)
                  .Column(stat.Batch)
                  .ErrorIf(stat.Selects > 50);
     var detailSection = new TabSection("Log");
     var sqlCount = 0;
     var inLoadLog = false;
     var loaded = 0;
     foreach (var item in logStatistics)
     {
         if (sqlCount == 50) break;
         if (!string.IsNullOrEmpty(item.CommandNotification))
         {
             inLoadLog = false;
             detailSection.AddRow().Column(string.Format("!<span style='color:Red;'>Command: {0}</span>!", item.CommandNotification.Trim()));
             continue;
         }
         if (!string.IsNullOrEmpty(item.ConnectionNotification))
         {
             inLoadLog = false;
             detailSection.AddRow().Column(string.Format("!<span style='color:Teal;'>Connection: {0}</span>!", item.ConnectionNotification.Trim()));
             continue;
         }
         if (!string.IsNullOrEmpty(item.FlushNotification))
         {
             inLoadLog = false;
             detailSection.AddRow().Column(string.Format("!<span style='color:DarkSlateGray;'>Flush: {0}</span>!", item.FlushNotification.Trim()));
             continue;
         }
         if (!string.IsNullOrEmpty(item.LoadNotification))
         {
             if (inLoadLog)
             {
                 loaded += 1;
             }
             else
             {
                 inLoadLog = true;
                 loaded = 1;
             }
             if (loaded < 50)
             {
                 detailSection.AddRow().Column(string.Format("!<span style='color:DarkSlateBlue;'>Load: {0}</span>!", item.LoadNotification.Trim()));    
             }
             if (loaded == 50)
             {
                 detailSection.AddRow().Column("ENTITY LOAD STATS TRUNCATED DUE TO NUMBER OF ENTITIES").Warn();
             }
             continue;
         }
         if (!string.IsNullOrEmpty(item.TransactionNotification))
         {
             inLoadLog = false;
             detailSection.AddRow().Column(string.Format("!<span style='color:Darkorange;'>Transaction: {0}</span>!", item.TransactionNotification.Trim()));
             continue;
         }
         if (!string.IsNullOrEmpty(item.Sql))
         {
             inLoadLog = false;
             detailSection
                 .AddRow()
                 .Column(string.Format("!<div style='color:RoyalBlue ;'>{0}</div><code class='prettyprint glimpse-code' data-codeType='sql'>{1}</code>!", item.Id, item.Sql))
                 .Selected();
             sqlCount += 1;
         }
         var stackFrames = new TabSection("Stack Trace");
         if (item.StackFrames != null && item.StackFrames.Count > 0)
         {
             foreach (var stackFrame in item.StackFrames)
             {
                 stackFrames.AddRow().Column(stackFrame);
             }
             detailSection.AddRow().Column(stackFrames);
         }
     }
     var data = Assist.Plugin.Create("Section", "Content");
     data.AddRow().Column("Request Summary").Column(headerSection);
     data.AddRow().Column("Request Details").Column(detailSection);
     if (!SessionFactories.Any(f => f.Statistics.IsStatisticsEnabled)) return data;
     foreach (var sessionFactory in SessionFactories)
     {
         var factoryDetailSection = new TabSection("Statistic", "Value");
         factoryDetailSection.AddRow().Column("Close Statement Count").Column(sessionFactory.Statistics.CloseStatementCount);
         factoryDetailSection.AddRow().Column("Collection Fetch Count").Column(sessionFactory.Statistics.CollectionFetchCount);
         factoryDetailSection.AddRow().Column("Collection Load Count").Column(sessionFactory.Statistics.CollectionLoadCount);
         factoryDetailSection.AddRow().Column("Collection Recreate Count").Column(sessionFactory.Statistics.CollectionRecreateCount);
         factoryDetailSection.AddRow().Column("Collection Remove Count").Column(sessionFactory.Statistics.CollectionRemoveCount);
         factoryDetailSection.AddRow().Column("Collection Role Names").Column(sessionFactory.Statistics.CollectionRoleNames);
         factoryDetailSection.AddRow().Column("Collection Update Count").Column(sessionFactory.Statistics.CollectionUpdateCount);
         factoryDetailSection.AddRow().Column("Connect Count").Column(sessionFactory.Statistics.ConnectCount);
         factoryDetailSection.AddRow().Column("Entity Delete Count").Column(sessionFactory.Statistics.EntityDeleteCount);
         factoryDetailSection.AddRow().Column("Entity Fetch Count").Column(sessionFactory.Statistics.EntityFetchCount);
         factoryDetailSection.AddRow().Column("Entity Insert Count").Column(sessionFactory.Statistics.EntityInsertCount);
         factoryDetailSection.AddRow().Column("Entity Load Count").Column(sessionFactory.Statistics.EntityLoadCount);
         factoryDetailSection.AddRow().Column("Entity Names").Column(sessionFactory.Statistics.EntityNames);
         factoryDetailSection.AddRow().Column("Entity Update Count").Column(sessionFactory.Statistics.EntityUpdateCount);
         factoryDetailSection.AddRow().Column("Flush Count").Column(sessionFactory.Statistics.FlushCount);
         factoryDetailSection.AddRow().Column("Optimistic Failure Count").Column(sessionFactory.Statistics.OptimisticFailureCount);
         factoryDetailSection.AddRow().Column("Prepare Statement Count").Column(sessionFactory.Statistics.PrepareStatementCount);
         factoryDetailSection.AddRow().Column("Queries").Column(sessionFactory.Statistics.Queries);
         factoryDetailSection.AddRow().Column("Query Cache Hit Count").Column(sessionFactory.Statistics.QueryCacheHitCount);
         factoryDetailSection.AddRow().Column("Query Cache Miss Count").Column(sessionFactory.Statistics.QueryCacheMissCount);
         factoryDetailSection.AddRow().Column("Query Cache Put Count").Column(sessionFactory.Statistics.QueryCachePutCount);
         factoryDetailSection.AddRow().Column("Query Execution Count").Column(sessionFactory.Statistics.QueryExecutionCount);
         factoryDetailSection.AddRow().Column("Query Execution Max Time").Column(sessionFactory.Statistics.QueryExecutionMaxTime);
         factoryDetailSection.AddRow().Column("Query Execution Max Time QueryString").Column(sessionFactory.Statistics.QueryExecutionMaxTimeQueryString);
         factoryDetailSection.AddRow().Column("Second Level Cache Hit Count").Column(sessionFactory.Statistics.SecondLevelCacheHitCount);
         factoryDetailSection.AddRow().Column("Second Level Cache Miss Count").Column(sessionFactory.Statistics.SecondLevelCacheMissCount);
         factoryDetailSection.AddRow().Column("Second Level Cache Put Count").Column(sessionFactory.Statistics.SecondLevelCachePutCount);
         factoryDetailSection.AddRow().Column("Second Level Cache Region Names").Column(sessionFactory.Statistics.SecondLevelCacheRegionNames);
         factoryDetailSection.AddRow().Column("Session Close Count").Column(sessionFactory.Statistics.SessionCloseCount);
         factoryDetailSection.AddRow().Column("Session Open Count").Column(sessionFactory.Statistics.SessionOpenCount);
         factoryDetailSection.AddRow().Column("Start Time").Column(sessionFactory.Statistics.StartTime);
         factoryDetailSection.AddRow().Column("Successful Transaction Count").Column(sessionFactory.Statistics.SuccessfulTransactionCount);
         factoryDetailSection.AddRow().Column("Transaction Count").Column(sessionFactory.Statistics.TransactionCount);
         var impl = sessionFactory as SessionFactoryImpl;
         data.AddRow().Column(string.Format("Factory: {0}", (impl == null) ? string.Empty : impl.Uuid)).Column(factoryDetailSection);
     }
     return data;
 }
Esempio n. 54
0
        public override object GetData(ITabContext context)
        {
            var activity = context.GetMessages<Messages.ConnectionActivity>().ToList();

            return activity.Any() ? activity : null;
        }
Esempio n. 55
0
 public override object GetData(ITabContext context)
 {
     return(context.GetMessages <GlimpseMessage <CacheMessage> >());
 }
Esempio n. 56
0
 public object GetData(ITabContext context)
 {
     var data = ProcessData(context.GetMessages<PageLifeCycleMessage>(), context);
     return data;
 }
Esempio n. 57
0
        public override object GetData(ITabContext context)
        {
            var messages = context.GetMessages<AdomdMessage>().ToList();
            var aggregator = new MessageAggregator(messages);
            var metadata = aggregator.Aggregate();

            if (metadata == null)
            {
                return null;
            }

            var connections = new List<object[]> { new object[] { "Commands per Connection", "Duration" } };
            foreach (var connection in metadata.Connections.Values)
            {
                if (connection.Commands.Count == 0 && connection.Transactions.Count == 0)
                {
                    continue;
                }

                var commands = new List<object[]> { new object[] { "Transaction Start", "Ordinal", "Command", "Parameters", "Duration", "Offset", "Transaction End", "Errors" } };
                var commandCount = 1;
                foreach (var command in connection.Commands.Values)
                {
                    // Transaction Start
                    List<object[]> headTransaction = null;
                    if (command.HeadTransaction != null)
                    {
                        headTransaction = new List<object[]> { new object[] { "\t▼ Transaction - Started", "Isolation Level - " + command.HeadTransaction.IsolationLevel } };
                        if (!command.HeadTransaction.Committed.HasValue)
                        {
                            headTransaction.Add(new object[] { string.Empty, "Transaction was never completed", "error" });
                        }
                    }

                    // Transaction Finish
                    List<object[]> tailTransaction = null;
                    if (command.TailTransaction != null)
                    {
                        tailTransaction = new List<object[]> { new object[] { "\t▲ Transaction - Finished", "Status - " + (command.TailTransaction.Committed.GetValueOrDefault() ? "Committed" : "Rollbacked") } };
                    }

                    // Parameters
                    List<object[]> parameters = null;
                    if (command.Parameters.Count > 0)
                    {
                        parameters = new List<object[]> { new object[] { "Name", "Value"} };
                        foreach (var parameter in command.Parameters)
                        {
                            parameters.Add(new[] { parameter.Name, parameter.Value });
                        }
                    }

                    // Exception
                    List<object[]> errors = null;
                    if (command.Exception != null)
                    {
                        var exception = command.Exception.GetBaseException();
                        var exceptionName = command.Exception != exception ? command.Exception.Message + ": " + exception.Message : exception.Message;

                        errors = new List<object[]> { new object[] { "Error", "Stack" }, new object[] { exceptionName, exception.StackTrace } };
                    }

                    // Commands
                    var records = command.RecordsAffected == null || command.RecordsAffected < 0 ? command.TotalRecords : command.RecordsAffected;

                    var status = string.Empty;
                    commands.Add(new object[] { headTransaction, string.Format("{0}{1}", command.HasTransaction ? "\t\t\t" : string.Empty, commandCount++), command.Command, parameters, command.Duration, command.Offset, tailTransaction, errors, status });
                }

                connections.Add(new[] { commands, connection.Duration.HasValue ? (object)connection.Duration.Value : null });
            }

            if (connections.Count > 1)
            {
                var statistics = MdxStatisticsBuilder.Build(metadata);

                return new Dictionary<string, object>()
                {
                    {
                        "MDX Statistics",
                        new object[]
                        {
                            new
                            {
                                statistics.ConnectionCount,
                                statistics.QueryCount,
                                statistics.TransactionCount,
                                statistics.QueryExecutionTime,
                                statistics.ConnectionOpenTime
                            }
                        }
                    },
                    {"Queries", connections}
                };
            }
            return null;
        }
        /// <summary>
        /// Gets the data that should be shown in the UI.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <returns>Object that will be shown.</returns>
        public object GetData(ITabContext context)
        {
            var data = new List<object>();

            var telemetryMessages = context.GetMessages<ITelemetry>();
            foreach (var telemetry in telemetryMessages)
            {
                if (telemetry is TraceTelemetry)
                {
                    var trace = new TraceTelemetryMessage(telemetry as TraceTelemetry);
                    data.Add(trace);
                }

                if (telemetry is DependencyTelemetry) 
                {
                    var dependency = new DependencyTelemetryMessage(telemetry as DependencyTelemetry);
                    data.Add(dependency);
                }

                if (telemetry is EventTelemetry)
                {
                    var tevent = new EventTelemetryMessage(telemetry as EventTelemetry);
                    data.Add(tevent);
                }

                if (telemetry is ExceptionTelemetry)
                {
                    var exception = new ExceptionTelemetryMessage(telemetry as ExceptionTelemetry);
                    data.Add(exception);
                }

                if (telemetry is RequestTelemetry)
                {
                    var request = new RequestTelemetryMessage(telemetry as RequestTelemetry);
                    data.Add(request);
                }
            }

            // This is a temporary fix that allows to show request telemetry object inside Application Insights tab
            // The issue here is that ApplicationInsights's End callback that produces request telemetry object will be called after 
            // Glimpse's EndRequest method that will populate all request details. See github issue #17 for details:
            // https://github.com/Glimpse/Glimpse.ApplicationInsights/issues/17
            // Long term we might need to switch Application Insights tab from showing request-specific telemetry to show all telemetry
            // like history tab does with the ability to 
            var requestTelemetry = System.Web.HttpContext.Current.Items["Microsoft.ApplicationInsights.RequestTelemetry"] as RequestTelemetry;
            if (requestTelemetry != null)
            {
                HttpContext ctx = HttpContext.Current;
                if (ctx != null)
                {
                    requestTelemetry.ResponseCode = ctx.Response.StatusCode.ToString(CultureInfo.InvariantCulture);
                    requestTelemetry.Success =
                        (ctx.Response.StatusCode < 400) ||
                        (ctx.Response.StatusCode == 401);
                    requestTelemetry.Url = ctx.Request.Unvalidated.Url;
                }

                foreach (var initializer in TelemetryConfiguration.Active.TelemetryInitializers)
                {
                    initializer.Initialize(requestTelemetry);
                }

                data.Add(new RequestTelemetryMessage(requestTelemetry));
            }

            return data;
        }
Esempio n. 59
0
    public override object GetData(ITabContext context)
    {
      IList<JsonModel> data = context.GetMessages<JsonTraceMessage>().Select(m => new JsonModel(m)).ToList();

      return data;
    }
Esempio n. 60
0
        public override object GetData(ITabContext context)
        {
            var sanitizer = new CommandSanitizer();
            var messages = context.GetMessages<AdoMessage>().ToList();
            var aggregator = new MessageAggregator(messages);
            var queryMetadata = aggregator.Aggregate();

            if (queryMetadata == null)
            {
                return null;
            }

            var connections = new List<object[]> { new object[] { "Commands per Connection", "Duration" } };

            foreach (var connection in queryMetadata.Connections.Values)
            {
                if (connection.Commands.Count == 0 && connection.Transactions.Count == 0)
                {
                    continue;
                }

                var commands = new List<object[]> { new object[] { "Transaction Start", "Ordinal", "Command", "Parameters", "Records", "Duration", "Offset", "Async", "Transaction End", "Errors" } };
                var commandCount = 1;
                foreach (var command in connection.Commands.Values)
                {
                    // Transaction Start
                    List<object[]> headTransaction = null;
                    if (command.HeadTransaction != null)
                    {
                        headTransaction = new List<object[]> { new object[] { "\t▼ Transaction - Started", "Isolation Level - " + command.HeadTransaction.IsolationLevel } };
                        if (!command.HeadTransaction.Committed.HasValue)
                        {
                            headTransaction.Add(new object[] { string.Empty, "Transaction was never completed", "error" });
                        }
                    }

                    // Transaction Finish
                    List<object[]> tailTransaction = null;
                    if (command.TailTransaction != null)
                    {
                        tailTransaction = new List<object[]> { new object[] { "\t▲ Transaction - Finished", "Status - " + (command.TailTransaction.Committed.GetValueOrDefault() ? "Committed" : "Rollbacked") } };
                    }

                    // Parameters
                    List<object[]> parameters = null;
                    if (command.Parameters.Count > 0)
                    {
                        parameters = new List<object[]> { new object[] { "Name", "Value", "Type", "Size" } };
                        foreach (var parameter in command.Parameters)
                        {
                            parameters.Add(new[] { parameter.Name, parameter.Value, parameter.Type, parameter.Size });
                        }
                    }
                    else if (command.BatchParameters.Count > 0)
                    {
                        parameters = new List<object[]>(command.BatchParameters.Count + 1);
                        parameters.Add(new object[] { "#", "Name", "Value", "Type", "Size" });
                        for(int i = 0; i < command.BatchParameters.Count; i++)
                        {
                            foreach(var parameter in command.BatchParameters[i])
                            {
                                parameters.Add(new object[] { i, parameter.Name, parameter.Value, parameter.Type, parameter.Size });
                            }
                        }
                    }

                    // Exception
                    List<object[]> errors = null;
                    if (command.Exception != null)
                    {
                        var exception = command.Exception.GetBaseException();
                        var exceptionName = command.Exception != exception ? command.Exception.Message + ": " + exception.Message : exception.Message;

                        errors = new List<object[]> { new object[] { "Error", "Stack" }, new object[] { exceptionName, exception.StackTrace } };
                    }

                    // Commands
                    var records = command.RecordsAffected == null || command.RecordsAffected < 0 ? command.TotalRecords : command.RecordsAffected;

                    var status = errors != null ? "error" : (command.IsDuplicate ? "warn" : string.Empty);
                    commands.Add(new object[] { headTransaction, string.Format("{0}{1}", command.HasTransaction ? "\t\t\t" : string.Empty, commandCount++), sanitizer.Process(command.Command, command.Parameters), parameters, records, command.Duration, command.Offset, command.IsAsync, tailTransaction, errors, status });
                }

                connections.Add(new[] { commands, connection.Duration.HasValue ? (object)connection.Duration.Value : null });
            }

            if (connections.Count > 1)
            {
                SqlStatistics sqlStatistics = SqlStatisticsCalculator.Caluculate(queryMetadata);

                return new Dictionary<string, object>
                {
                    { "SQL Statistics", new object[] { new { sqlStatistics.ConnectionCount, sqlStatistics.QueryCount, sqlStatistics.TransactionCount, sqlStatistics.QueryExecutionTime, sqlStatistics.ConnectionOpenTime } } }, 
                    { "Queries", connections }
                };
            }

            return null;
        }