public IEnumerable <BaseInformationChart> GetSmokeGrades() { List <OlderInformationChart> smokeList = new List <OlderInformationChart>(); try { var node = new Uri(StaticParams.SmokeApiUrl); var settings = new ConnectionSettings(node); var client = new ElasticClient(settings); const string byStage = "by_stage"; const string byStatus = "by_status"; var searchResults = client.Search <SmokeEntityRequest>(s => s .Index("cx-metrics") .Type("8_6") .Query(q => q.Term(f => f.Pipeline, "smoke") && q.Term(f => f.State, "end") && q.DateRange(r => r.Name("time") .Field(f => f.Timestamp) .LessThan(DateTime.Now) .GreaterThan(DateTime.Now.AddDays(-30))) ) .Aggregations(a => a .Terms(byStage, t => t .Field(f => f.Stage) .Size(3) .Order(TermsOrder.CountDescending) .Aggregations(t1 => t1 .Terms(byStatus, aa => aa .Field(f => f.Status) .Size(2) .Order(TermsOrder.CountDescending) ) ) ) ) ); var buckets = searchResults.Aggs.Terms(byStage).Buckets .ToDictionary(x => x.Key, x => { var aggregation = (BucketAggregate)x.Aggregations[byStatus]; return(aggregation.Items.Cast <KeyedBucket <object> >() .ToDictionary(y => y.Key.ToString().ToLower(), y => y.DocCount)); }); foreach (var bucket in buckets) { var SmokeItem = new OlderInformationChart(); SmokeItem.Name = string.Format("{0} smoke success rate (Last 30 days)", bucket.Key.First().ToString().ToUpper() + bucket.Key.Substring(1)); SmokeItem.Color = "default"; long?total = 0; long?success = 0; foreach (var item in bucket.Value) { total += item.Value; if (item.Key == "success") { success = item.Value; } } double precentage = ((double)success / (double)total) * 100; int fail = total > success ? (int)(total - success) : 0; SmokeItem.Data = string.Format("{0:0.##}%", precentage); //SmokeItem.Marx = "question"; SmokeItem.ChartData = new List <InformationChartData> { new InformationChartData { Data = success.ToString(), DataName = "Success #" }, new InformationChartData { Data = fail.ToString(), DataName = "Fail #" }, new InformationChartData { Data = "", DataName = "" }, new InformationChartData { Data = total.ToString(), DataName = "Total #" } }; smokeList.Add(SmokeItem); } } catch (Exception ex) { smokeList.Add(new OlderInformationChart { Color = "red", Data = "NA", Marx = "question", Name = "Smoke Grade" }); } smokeList = smokeList.OrderByDescending(k => k.Name).ToList(); return(smokeList); }
public async Task <OlderInformationChart> GetEngineGrade(string versin) { OlderInformationChart oldVersionChart = new OlderInformationChart(); try { var engineApiResult = await HttpProvider.GetHttpRequest(StaticParams.EngineAPIUrl, "?version=" + versin); var engineAPIObject = JsonConvert.DeserializeObject <EngineAPIData>(engineApiResult); double newGoodHiddenBad = engineAPIObject.newGood + engineAPIObject.hiddenBad; double NewHiddenGoodBad = engineAPIObject.newBad + engineAPIObject.newGood + engineAPIObject.hiddenBad + engineAPIObject.hiddenGood; double newGoodBad = engineAPIObject.newBad + engineAPIObject.newGood; double hiddenGoodBad = engineAPIObject.hiddenBad + engineAPIObject.hiddenGood; double unanalyzed = engineAPIObject.hiddenUnknown + engineAPIObject.newUnknown; double totalAnalyzed = engineAPIObject.hiddenGood + engineAPIObject.hiddenBad + engineAPIObject.newGood + engineAPIObject.newBad + unanalyzed; double Analyzed = totalAnalyzed - unanalyzed; double precentOfAnalyzed = Analyzed == 0 || totalAnalyzed == 0 ? 0 : (Analyzed / totalAnalyzed) * 100; double precentOfRemovedBad = engineAPIObject.hiddenBad == 0 || hiddenGoodBad == 0 ? 0 : (engineAPIObject.hiddenBad / hiddenGoodBad) * 100; double precentOfNewGood = engineAPIObject.newGood == 0 || newGoodBad == 0 ? 0 : (engineAPIObject.newGood / newGoodBad) * 100; double engineTotalGrade = newGoodHiddenBad == 0 || NewHiddenGoodBad == 0 ? 0 : (newGoodHiddenBad / NewHiddenGoodBad) * 100; oldVersionChart.ApplicationVersion = versin; oldVersionChart.Name = "Engine quality grade"; oldVersionChart.Data = string.Format("{0:0.00}", engineTotalGrade); if (engineTotalGrade >= 95 && precentOfAnalyzed >= 80) { oldVersionChart.Color = "green"; oldVersionChart.Marx = "check"; } else if (engineTotalGrade >= 70) { oldVersionChart.Color = "yellow"; oldVersionChart.Marx = "exclamation"; } else { oldVersionChart.Color = "red"; oldVersionChart.Marx = "times"; } oldVersionChart.ChartData = new List <InformationChartData> { new InformationChartData { Data = string.Format("{0:0.0}", precentOfNewGood), DataName = "New good %" }, new InformationChartData { Data = string.Format("{0:0.0}", precentOfRemovedBad), DataName = "Removed bad %" }, new InformationChartData { Data = string.Format("{0:0.0}", precentOfAnalyzed), DataName = "Analyzed %" }, new InformationChartData { Data = "", DataName = "" }, new InformationChartData { Data = string.Format("{0:0,0}", unanalyzed), DataName = "Unanalyzed count" }, new InformationChartData { Data = string.Format("{0:0,0}", Analyzed), DataName = "Analyzed count" }, new InformationChartData { Data = string.Format("{0:0,0}", totalAnalyzed), DataName = "Total count" } }; return(oldVersionChart); } catch (Exception ex) { oldVersionChart.ApplicationVersion = versin; oldVersionChart.Data = "NA"; oldVersionChart.Color = "red"; oldVersionChart.Marx = "question"; oldVersionChart.Name = "Engine quality grade"; return(oldVersionChart); } }