Ejemplo n.º 1
0
        public sealed override void Generate(IBenchmarksReportSource source)
        {
            var slotIdentifier = source.SlotIdentifier;
            var projectID      = GetProjectID(source);
            var protein        = GetProtein(projectID);
            var colors         = source.Colors;

            if (slotIdentifier is null || projectID is null || protein is null)
            {
                Result = null;
                return;
            }

            var benchmarks = SortBenchmarks(BenchmarkService.GetBenchmarks(slotIdentifier.Value, protein.ProjectNumber));

            var zg = CreateZedGraphControl();

            try
            {
                GraphPane pane = zg.GraphPane;

                // Create the bars for each benchmark
                int    i        = 0;
                double yMaximum = 0.0;
                foreach (ProteinBenchmark benchmark in benchmarks)
                {
                    var yPoints = GetYPoints(protein, benchmark);
                    foreach (var y in yPoints)
                    {
                        yMaximum = Math.Max(yMaximum, y);
                    }

                    string label = GetSlotNameAndProcessor(benchmark, protein);
                    var    color = GetNextColor(i++, colors);
                    AddBar(pane, label, yPoints, color);
                }

                ConfigureXAxis(pane.XAxis, protein);
                ConfigureYAxis(pane.YAxis, yMaximum);

                FillChart(pane.Chart);
                FillGraphPane(pane);
            }
            finally
            {
                zg.AxisChange();
            }

            Result = zg;
        }
Ejemplo n.º 2
0
        public override void Generate(IBenchmarksReportSource source)
        {
            var benchmarkText = new List <string>();

            var slotIdentifier = source.SlotIdentifier;
            var projects       = source.Projects;

            if (slotIdentifier is null || projects.Count == 0)
            {
                Result = benchmarkText;
                return;
            }

            string numberFormat     = NumberFormat.Get(Preferences.Get <int>(Preference.DecimalPlaces));
            var    bonusCalculation = Preferences.Get <BonusCalculation>(Preference.BonusCalculation);
            bool   calculateBonus   = bonusCalculation != BonusCalculation.None;

            foreach (var projectID in projects)
            {
                var protein = ProteinService.Get(projectID);
                if (protein is null)
                {
                    benchmarkText.Add(String.Format(CultureInfo.InvariantCulture, " Project ID: {0} Not Found", projectID));
                    benchmarkText.AddRange(Enumerable.Repeat(String.Empty, 2));
                    continue;
                }

                var benchmarks = BenchmarkService.GetBenchmarks(slotIdentifier.Value, protein.ProjectNumber)
                                 .OrderBy(x => x.SlotIdentifier.Name)
                                 .ThenBy(x => x.Threads);

                benchmarkText
                .AddRange(EnumerateProjectInformation(protein)
                          .Concat(Enumerable.Repeat(String.Empty, 2)));

                foreach (var b in benchmarks)
                {
                    benchmarkText
                    .AddRange(EnumerateBenchmarkInformation(protein, b, numberFormat, calculateBonus)
                              .Concat(EnumerateSlotInformation(FindRunningSlot(b), numberFormat, bonusCalculation))
                              .Concat(Enumerable.Repeat(String.Empty, 2)));
                }
            }

            Result = benchmarkText;
        }
Ejemplo n.º 3
0
        public void BenchmarksModel_AsIBenchmarkReportSource()
        {
            // Arrange
            var benchmarkService = CreateBenchmarkServiceWithTwoSlotsAndProjects();
            var model            = CreateModel(benchmarkService);
            var preferences      = model.Preferences;

            preferences.Set(Preference.GraphColors, new List <Color> {
                Color.AliceBlue
            });
            // Act
            model.Load();
            // Assert
            IBenchmarksReportSource source = model;

            Assert.AreEqual(model.SelectedSlotIdentifier.Value, source.SlotIdentifier);
            CollectionAssert.AreEqual(model.SelectedSlotProjectListItems.Select(x => x.GetValue <ValueItem <int> >().Value), source.Projects);
            CollectionAssert.AreEqual(model.GraphColors.Select(x => x.GetValue <ValueItem <Color> >().Value), source.Colors);
        }
Ejemplo n.º 4
0
 public override void Generate(IBenchmarksReportSource source)
 {
     Result = new List <string> {
         Text
     };
 }
Ejemplo n.º 5
0
 public abstract void Generate(IBenchmarksReportSource source);
Ejemplo n.º 6
0
        public override void Generate(IBenchmarksReportSource source)
        {
            var slotIdentifier = source.SlotIdentifier;
            var projects       = source.Projects;
            var colors         = source.Colors;

            if (slotIdentifier is null || projects.Count == 0)
            {
                Result = null;
                return;
            }

            var benchmarks = BenchmarkService.GetBenchmarks(slotIdentifier.Value, projects)
                             .OrderBy(x => x.SlotIdentifier.Name)
                             .ThenBy(x => x.Threads)
                             .ToList();

            if (benchmarks.Count == 0)
            {
                Result = null;
                return;
            }

            var projectToXAxisOrdinal = BuildProjectToXAxisOrdinal(benchmarks);

            var zg = CreateZedGraphControl();

            try
            {
                GraphPane pane = zg.GraphPane;

                int i   = 0;
                var ppd = new List <double>();
                foreach (var group in benchmarks.GroupBy(x => (x.SlotIdentifier, x.Processor, x.Threads)))
                {
                    PointPairList points;
                    string        label;
                    (points, label) = BuildSlotPoints(group.OrderBy(x => x.ProjectID), projectToXAxisOrdinal);

                    if (points.Count > 0)
                    {
                        // collection PPD values from all points
                        ppd.AddRange(points.Select(p => p.Y));

                        Color color = GetNextColor(i++, colors);
                        AddSlotCurve(pane, label, points, color);
                    }
                }

                if (ppd.Count > 0)
                {
                    var averagePPD    = ppd.Average();
                    var averagePoints = BuildAveragePoints(averagePPD, projectToXAxisOrdinal);
                    AddAverageCurve(pane, averagePoints);
                }

                ConfigureXAxis(pane.XAxis, projectToXAxisOrdinal);
                ConfigureYAxis(pane.YAxis, ppd.Max());

                FillGraphPane(pane);
            }
            finally
            {
                zg.AxisChange();
            }

            Result = zg;
        }
Ejemplo n.º 7
0
 private static int?GetProjectID(IBenchmarksReportSource source)
 {
     return(source.Projects.Count > 0 ? (int?)source.Projects.First() : null);
 }