public Handler.PerformanceData.DataTypes.PerformanceStatisticsForPageCollection GetStatisticsForAllPages(DateTime forDate)
        {
            FlushNotProcessedPackets();
            lock (_readerLock) {
                var pages = GetPerPageDistributionDictionary(forDate).Select(p => PerformanceStatisticsForPage.Calculate(p.Value.ToArray(), p.Key)).ToArray();

                var allPages = PerformanceStatisticsForPage.Calculate(GetAllPagesDistribution(forDate).ToArray(), "All Pages");

                return(new PerformanceStatisticsForPageCollection(pages, allPages));
            }
        }
Exemplo n.º 2
0
        public DataTypes.PerformanceStatisticsForPageCollection GetStatisticsForAllPages(DateTime forDate)
        {
            if (!_getStatisticsForAllPagesCache.ContainsKey(forDate))
            {
                FillCache(forDate);
            }

            var allStats = _getStatisticsForAllPagesCache[forDate];

            return(new PerformanceStatisticsForPageCollection(
                       _perPageCache[forDate].Keys.Select(pp => PerformanceStatisticsForPage.Calculate(_perPageCache[forDate][pp], pp)).ToArray(),
                       PerformanceStatisticsForPage.Calculate(allStats, "All Pages")
                       ));
        }
Exemplo n.º 3
0
        private PerformanceStatisticsForPageCollection GetRequestsForDate(DateTime forDate)
        {
            using (var connection = new SqlConnection(_connectionString)) {
                var q = connection.CreateCommand();
                q.CommandText = "select Duration,PageId from Requests where Timestamp>=@From and Timestamp<@Till";
                q.Parameters.Add(new SqlParameter("From", forDate));
                q.Parameters.Add(new SqlParameter("Till", forDate.AddDays(1)));

                connection.Open();

                var overall = new List <int>();
                var pages   = new Dictionary <int, List <int> >();

                using (var rdr = q.ExecuteReader()) {
                    while (rdr.Read())
                    {
                        var page = (int)rdr[1];

                        var duration = (int)rdr[0];

                        overall.Add(duration);

                        if (!pages.ContainsKey(page))
                        {
                            pages[page] = new List <int>();
                        }

                        pages[page].Add(duration);
                    }
                }

                var pageIdToNameMap = _pageIdProvider.GetPageNames(pages.Keys);

                return(new PerformanceStatisticsForPageCollection(
                           pages.Keys.Select(p => PerformanceStatisticsForPage.Calculate(pages[p].ToArray(), pageIdToNameMap[p])).ToArray(),
                           //new PerformanceStatisticsForPage[0],
                           PerformanceStatisticsForPage.Calculate(overall.ToArray(), "All pages")
                           ));
            }
        }
        private PerformanceStatisticsForPageCollection GetFromCacheTable(DateTime forDate)
        {
            //AssertCacheAvailable(forDate);

            using (var conn = new SqlConnection(_connectionString)) {
                var cmd = conn.CreateCommand();
                cmd.CommandText = @"select * from PreCalculatedPagesStatistics rc left join PageIds pid on pid.Id = rc.PageId where Date=@Date";
                cmd.Parameters.Add(new SqlParameter("Date", forDate));
                conn.Open();

                var pageList = new List <PerformanceStatisticsForPage>();
                var allPages = PerformanceStatisticsForPage.Empty;
                using (var rdr = cmd.ExecuteReader()) {
                    while (rdr.Read())
                    {
                        var item = new PerformanceStatisticsForPage {
                            Count  = (int)rdr["Count"],
                            Mean   = (int)rdr["Mean"],
                            Median = (int)rdr["Median"],
                            Sum    = (int)rdr["Sum"]
                        };

                        if (rdr["PageName"] == DBNull.Value)
                        {
                            item.PageName = "All Pages";
                            allPages      = item;
                        }
                        else
                        {
                            item.PageName = (string)rdr["PageName"];
                            pageList.Add(item);
                        }
                    }

                    return(new PerformanceStatisticsForPageCollection(pageList.ToArray(), allPages));
                }
            }
        }