public static double GetSuccessRate(this AggregationItem item, out int successCount, out double successAverageResponseTime) { int totalCount = 0; int sCount = 0; successAverageResponseTime = 0; foreach (AggregationResponseItem responseItem in item.ResponseInformation) { if (responseItem.GetResponseStatus() == ResponseStatus.Success) { successAverageResponseTime += responseItem.AverageResponseTime; sCount += responseItem.DocumentCount; } totalCount += responseItem.DocumentCount; } double percentage = (double)sCount * 100 / totalCount; if (sCount != 0) { successAverageResponseTime = (successAverageResponseTime / sCount) / 1000; } successCount = sCount; return(percentage); }
public KPIMetric GetKPI(AggregationItem item, long searchIndexId, DateTime logDate) { if (!item.Url.CheckIsFormatIncluded()) { return(null); } double failedPercentage = item.GetFailedRate(out int failedCount, out double failedAverage); double successPercentage = item.GetSuccessRate(out int successCount, out double successAverage); if (ServiceManager.LastRuleId == 0) { ServiceManager.LastRuleId = GetMaxComputeRuleId(); } return(new KPIMetric { ServerName = item.ServerName.Trim(), SiteName = item.SiteName.Trim(), PageUrl = item.Url.Trim(), AverageResponseTime = successAverage == 0 ? failedAverage // if success average is 0 pass failed average : failedAverage == 0 ? successAverage // if failed average is 0 pass success average : ((successAverage + failedAverage) / 2), // else take arithmetic average SuccessAverageResponseTime = successAverage, FailedAverageResponseTime = failedAverage, TotalRequestCount = item.RequestCount, FailedPercentage = failedPercentage, FailedRequestCount = failedCount, SuccessPercentage = successPercentage, SuccessRequestCount = successCount, IndexId = searchIndexId, LogDate = logDate, ComputeRuleId = ServiceManager.LastRuleId }); }
public void FillIsAppliedForItems_RangeFilter_IsAppliedSetProperly(string filterLower, string filterUpper, string aggregationItemLowerBound, string aggregationItemUpperBound, bool expectedIsApplied) { // Arrange var filter = new RangeFilter() { Values = new[] { new RangeFilterValue() { Lower = filterLower, Upper = filterUpper } } }; var aggregationItem = new AggregationItem() { RequestedLowerBound = aggregationItemLowerBound, RequestedUpperBound = aggregationItemUpperBound }; // Act filter.FillIsAppliedForItems(new[] { aggregationItem }); // Assert Assert.Equal(expectedIsApplied, aggregationItem.IsApplied); }
protected virtual IList <AggregationItem> GetRangeAggregationItems(string aggregationId, IList <RangeFilterValue> values, IList <AggregationResponse> aggregationResponses) { var result = new List <AggregationItem>(); if (values != null) { foreach (var group in values.GroupBy(v => v.Id, StringComparer.OrdinalIgnoreCase)) { var valueId = group.Key; var aggregationValueId = $"{aggregationId}-{valueId}"; var aggregationResponse = aggregationResponses.FirstOrDefault(v => v.Id.EqualsInvariant(aggregationValueId)); if (aggregationResponse?.Values?.Any() == true) { var value = aggregationResponse.Values.First(); var rangeValue = group.First(); var aggregationItem = new AggregationItem { Value = valueId, Count = (int)value.Count, RequestedLowerBound = !string.IsNullOrEmpty(rangeValue.Lower) ? rangeValue.Lower : null, RequestedUpperBound = !string.IsNullOrEmpty(rangeValue.Upper) ? rangeValue.Upper : null, }; result.Add(aggregationItem); } } } return(result); }
public static double GetFailedRate(this AggregationItem item, out int failedCount, out double failedAverageResponseTime) { int totalCount = 0; int fCount = 0; failedAverageResponseTime = 0; foreach (AggregationResponseItem responseItem in item.ResponseInformation) { if (responseItem.GetResponseStatus() == ResponseStatus.Failed) { failedAverageResponseTime += responseItem.AverageResponseTime; fCount += responseItem.DocumentCount; } totalCount += responseItem.DocumentCount; } double percentage = (double)fCount * 100 / totalCount; if (fCount != 0) { failedAverageResponseTime = (failedAverageResponseTime / fCount) / 1000; } failedCount = fCount; return(percentage); }
public static AggregationItem ToWebModel(this VirtoCommerceCatalogModuleWebModelAggregationItem item) { var result = new AggregationItem(); result.InjectFrom <NullableAndEnumValueInjecter>(item); return(result); }
public static AggregationItem ToAggregationItem(this catalogDto.AggregationItem itemDto, string currentLanguage) { var result = new AggregationItem { Value = itemDto.Value, IsApplied = itemDto.IsApplied ?? false, Count = itemDto.Count ?? 0, Lower = itemDto.RequestedLowerBound, Upper = itemDto.RequestedUpperBound, }; if (itemDto.Labels != null) { result.Label = itemDto.Labels.Where(l => string.Equals(l.Language, currentLanguage, StringComparison.OrdinalIgnoreCase)) .Select(l => l.Label) .FirstOrDefault(); } if (string.IsNullOrEmpty(result.Label) && itemDto.Value != null) { result.Label = itemDto.Value.ToString(); } return(result); }
public virtual Tag ToLiquidTag(AggregationItem item, string groupName, string groupLabel) { var result = new Tag(groupName, item.Value != null ? item.Value.ToString() : null); result.GroupLabel = groupLabel; result.Label = item.Label; result.Count = item.Count; return(result); }
public static Tag ToShopifyModel(this AggregationItem item, string groupName, string groupLabel) { return(new Tag(groupName, item.Value != null ? item.Value.ToString() : null) { GroupLabel = groupLabel, Label = item.Label, Count = item.Count, }); }
public virtual Tag ToLiquidTag(AggregationItem item, string groupName, string groupLabel) { var factory = ServiceLocator.Current.GetInstance <ShopifyModelFactory>(); var result = factory.CreateTag(groupName, item.Value != null ? item.Value.ToString() : null); result.GroupLabel = groupLabel; result.Label = item.Label; result.Count = item.Count; return(result); }
public void GET_FAILED_RATE_RETURNS_VALUE_WHEN_CORRECT_PARAMETER_PASSED() { AggregationItem aggregationItem = AggregationItemGenerator.Generate(); int failedCount = 0; double failedAvgResTime = 0; double percentage = aggregationItem.GetFailedRate(out failedCount, out failedAvgResTime); Assert.IsNotNull(percentage); }
public void GET_SUCCESS_RATE_RETURNS_VALUE_WHEN_CORRECT_PARAMETER_PASSED() { AggregationItem aggregationItem = AggregationItemGenerator.Generate(); int successCount = 0; double successAvgResTime = 0; double percentage = aggregationItem.GetSuccessRate(out successCount, out successAvgResTime); Assert.IsNotNull(percentage); }
public static List <AggregationItem> Generate(int count) { List <AggregationItem> aggregationItems = new List <AggregationItem>(); for (int i = 0; i < count; i++) { AggregationItem aggregationItem = Generate(); aggregationItems.Add(aggregationItem); } return(aggregationItems); }
public async Task InserKPIAsync(AggregationItem item, long searchIndexId, DateTime logDate) { using (var context = new SmartKPIDbContext(this._connectionString)) { KPIMetric metric = this.GetKPI(item, searchIndexId, logDate); if (metric != null) { context.KPIMetrics.Add(metric); await context.SaveChangesAsync(); } } }
public static AggregationItem Generate() { AggregationItem item = new AggregationItem { RequestCount = RandomNumberGenerator.GetRandomInt(), ServerName = RandomStringGenerator.GetRandomString(10), SiteName = RandomStringGenerator.GetRandomString(15), Url = RandomStringGenerator.GetRandomString(20), ResponseInformation = AggregationResponseItemGenerator.Generate(10) }; return(item); }
public virtual Tag ToLiquidTag(AggregationItem item, Aggregation aggregation) { var result = new Tag(aggregation.Field, item.Value?.ToString()) { GroupType = aggregation.AggregationType, GroupLabel = aggregation.Label, Label = item.Label, Count = item.Count, Lower = item.Lower, Upper = item.Upper, }; return(result); }
/// <summary> /// Generates an relative url with query string that contains serialized ProductSearchCriteria as parameters /// and remove a given aggregation item value from terms parameter /// </summary> /// <param name="context"></param> /// <param name="aggregationItem">aggregation item</param> /// <returns>example: /collection</returns> public static string RemoveTermUrl(TemplateContext context, AggregationItem aggregationItem) { Uri result = null; result = BuildUriWithSearchQueryString(context, criteria => { var term = new Term { Name = aggregationItem.GroupLabel, Value = aggregationItem.Value.ToString() }; criteria.Terms.Remove(term); //Need to reset page number every time when criteria changed criteria.PageNumber = 1; }); return(result?.PathAndQuery); }
public static AggregationItem ToModuleModel(this Facet facet, params string[] appliedFilters) { var result = new AggregationItem { Value = facet.Key, Count = facet.Count, IsApplied = appliedFilters.Any(x => x.Equals(facet.Key, StringComparison.OrdinalIgnoreCase)) }; if (facet.Labels != null) { result.Labels = facet.Labels.Select(ToModuleModel).ToArray(); } return(result); }
public static AggregationItem ToModuleModel(this Facet facet, params string[] appliedFilters) { var result = new AggregationItem { Value = facet.Key, Count = (int)facet.Count, IsApplied = appliedFilters.Any(x => x.EqualsInvariant(facet.Key)) }; if (facet.Labels != null) { result.Labels = facet.Labels.Select(ToModuleModel).ToArray(); } return(result); }
public void FillIsAppliedForItems_TermFilter_IsAppliedSetProperly(string termValue, object aggregationItemValue, bool expectedIsApplied) { // Arrange var filter = new TermFilter() { Values = new string[] { termValue } }; var aggregationItem = new AggregationItem() { Value = aggregationItemValue }; // Act filter.FillIsAppliedForItems(new[] { aggregationItem }); // Assert Assert.Equal(expectedIsApplied, aggregationItem.IsApplied); }
public static AggregationItem ToWebModel(this searchModel.AggregationItem item, string currentLanguage) { var result = new AggregationItem(); result.InjectFrom <NullableAndEnumValueInjecter>(item); if (item.Labels != null) { result.Label = item.Labels.Where(l => string.Equals(l.Language, currentLanguage, StringComparison.OrdinalIgnoreCase)) .Select(l => l.Label) .FirstOrDefault(); } if (string.IsNullOrEmpty(result.Label) && item.Value != null) { result.Label = item.Value.ToString(); } return(result); }
public virtual AggregationItem ToAggregationItem(searchDto.AggregationItem itemDto, string currentLanguage) { var result = new AggregationItem(); result.Value = itemDto.Value; result.IsApplied = itemDto.IsApplied ?? false; result.Count = itemDto.Count ?? 0; if (itemDto.Labels != null) { result.Label = itemDto.Labels.Where(l => string.Equals(l.Language, currentLanguage, StringComparison.OrdinalIgnoreCase)) .Select(l => l.Label) .FirstOrDefault(); } if (string.IsNullOrEmpty(result.Label) && itemDto.Value != null) { result.Label = itemDto.Value.ToString(); } return(result); }
private void SetRangeAggregationContainer(AggregationItem currentItem, AggregationContainerDescriptor <TEntity> aggregation) { string name = currentItem.Name.Split('.').LastOrDefault(); if (currentItem.RangesDate != null && currentItem.RangesDate.Count() > 0) { IList <IDateRangeExpression> dataRanges = new List <IDateRangeExpression>(); foreach (var item in currentItem.RangesDate) { var range = new DateRangeExpression() { Key = currentItem.Name }; range.From = item.From; range.To = item.To; dataRanges.Add(range); } aggregation.DateRange(name, d => d.Field(currentItem.Name).Ranges(dataRanges.ToArray())); } else if (currentItem.Ranges != null && currentItem.Ranges.Count() > 0) { List <Func <RangeDescriptor, IRange> > funcs = new List <Func <RangeDescriptor, IRange> >(); foreach (var item in currentItem.Ranges) { funcs.Add(d => { d.From(item.From) .To(item.To) .Key(currentItem.Name); return(d); }); } aggregation.Range(name, f => f.Field(currentItem.Name).Ranges(funcs.ToArray())); } }
public static Tag ToShopifyModel(this AggregationItem item, Aggregation aggregation) { var converter = ServiceLocator.Current.GetInstance <ShopifyModelConverter>(); return(converter.ToLiquidTag(item, aggregation)); }
public static Tag ToShopifyModel(this AggregationItem item, string groupName, string groupLabel) { var converter = ServiceLocator.Current.GetInstance <ShopifyModelConverter>(); return(converter.ToLiquidTag(item, groupName, groupLabel)); }
public static Tag ToShopifyModel(this AggregationItem item, Aggregation aggregation) { var converter = new ShopifyModelConverter(); return(converter.ToLiquidTag(item, aggregation)); }