Пример #1
0
        public async Task <IHttpActionResult> GetSessionsAsync(string filter = null, string time = null, string offset = null)
        {
            var timeInfo = GetTimeInfo(time, offset);

            var processResult = QueryProcessor.Process(filter);

            if (!processResult.IsValid)
            {
                return(BadRequest(processResult.Message));
            }

            string systemFilter = await GetAssociatedOrganizationsFilterAsync(_organizationRepository, true, HasOrganizationOrProjectFilter(filter));

            SessionStatsResult result;

            try {
                result = await _stats.GetSessionStatsAsync(timeInfo.UtcRange.Start, timeInfo.UtcRange.End, systemFilter, processResult.ExpandedQuery, timeInfo.Offset);
            } catch (ApplicationException ex) {
                Logger.Error().Exception(ex)
                .Property("Search Filter", new { SystemFilter = systemFilter, UserFilter = filter, Time = time, Offset = offset })
                .Tag("Search")
                .Identity(ExceptionlessUser.EmailAddress)
                .Property("User", ExceptionlessUser)
                .SetActionContext(ActionContext)
                .Write();

                return(BadRequest("An error has occurred. Please check your search filter."));
            }

            return(Ok(result));
        }
Пример #2
0
        public async Task CanGetSessionStatsAsync()
        {
            await RemoveDataAsync();
            await CreateDataAsync();

            var startDate = DateTime.UtcNow.SubtractHours(1);

            await CreateSessionEventsAsync();

            _metricsClient.DisplayStats();
            var result = await _stats.GetSessionStatsAsync(startDate, DateTime.UtcNow, null);

            Assert.Equal(7, result.Sessions);
            Assert.Equal(7, result.Timeline.Sum(t => t.Sessions));
            Assert.Equal(3, result.Users);
            Assert.Equal(6, result.Timeline.Sum(t => t.Users));
            Assert.Equal((decimal)(3600.0 / result.Sessions), result.AvgDuration);
            Assert.Equal(900, result.Timeline.Sum(t => t.AvgDuration));
        }