Пример #1
0
        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);
        }
Пример #2
0
        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);
            }
        }