Beispiel #1
0
 private static String GenerateFileName(TestItem testItem)
 {
     var parts = testItem.ContainerTypeName.Split(',');
     var id = (!String.IsNullOrEmpty(testItem.Id)) ? String.Concat("_", testItem.Id) : String.Empty;
     var mode = testItem.Mode.Equals("jit") ? "_J" : "_R";
     return String.Concat(parts[0],id,mode,".png");
 }
Beispiel #2
0
        private static void CreatePlotAndSave(TestItem testItem)
        {
            // Create a Chart
            var chart = new Chart();

            // Chart title
            var chartTitle = new Title(testItem.Label);
            chart.Titles.Add(chartTitle);

            // Create Chart Area
            ChartArea chartArea = new ChartArea();
            chartArea.AxisX.Title = "Milestone title";
            chartArea.AxisY.Title = "ms";
            chartArea.AxisX.IsMarginVisible = false;

            for (int i = 0; i < testItem.MilestoneLabels.Length;i++)
            {
                chartArea.AxisX.CustomLabels.Add(i + 0.5, i + 1.5, testItem.MilestoneLabels[i]);
            }

            // Legend
            Legend legend = new Legend("default");
            legend.Docking = Docking.Bottom;
            chart.Legends.Add(legend);

            // Add Chart Area to the Chart
            chart.ChartAreas.Add(chartArea);

            foreach (var line in testItem.Lines)
            {
                Series series = new Series();
                series.Legend = "default";
                series.LegendText = line.Label;
                series.ChartType = SeriesChartType.Line;
                series.MarkerStyle = MarkerStyle.Circle;
                series.BorderWidth = 2;
                series.MarkerSize = 5;
                for (int i = 0; i < line.Points.Length; i++)
                {
                    series.Points.Add(line.Points[i].GetMinTime());
                }
                chart.Series.Add(series);
            }

            // Set chart control location
            chart.Location = new System.Drawing.Point(16, 48);

            // Set Chart control size
            chart.Size = new System.Drawing.Size(400, 300);
            var fileName = GenerateFileName(testItem);
            var file = new FileStream(fileName, FileMode.Create);
            chart.SaveImage(file, ChartImageFormat.Png);
            file.Close();

            Console.WriteLine(String.Format("Report: \"{0}\" created.", fileName));
        }
Beispiel #3
0
        private static List<TestItem> ParseXml(XmlDocument xmlResults)
        {
            var rootNode = xmlResults.SelectSingleNode("root");
            var testNodes = rootNode.SelectNodes("test");
            var results = new List<TestItem>();
            foreach (XmlNode testNode in testNodes)
            {
                var resultItem = new TestItem();

                var labelNode = testNode.SelectSingleNode("label");
                resultItem.Label = (labelNode != null) ? labelNode.InnerText : String.Empty;

                var descriptionNode = testNode.SelectSingleNode("description");
                resultItem.Description = (descriptionNode != null) ? descriptionNode.InnerText : String.Empty;

                var idNode = testNode.SelectSingleNode("id");
                resultItem.Id = (idNode != null) ? idNode.InnerText : String.Empty;

                var containerTypeNode = testNode.SelectSingleNode("containerType");
                resultItem.ContainerTypeName = (containerTypeNode != null) ? containerTypeNode.InnerText : String.Empty;

                var testedTypeNode = testNode.SelectSingleNode("testedType");
                resultItem.TestedTypeName = (testedTypeNode != null) ? testedTypeNode.InnerText : String.Empty;

                var modeNode = testNode.SelectSingleNode("mode");
                resultItem.Mode = (modeNode != null) ? modeNode.InnerText : String.Empty;

                var milestonesNode = testNode.SelectSingleNode("milestones");
                var milesoneNodes = milestonesNode.SelectNodes("milestone");
                resultItem.MilestoneLabels = new String[milesoneNodes.Count];
                for (int i = 0; i < milesoneNodes.Count; i++)
                {
                    resultItem.MilestoneLabels[i] = milesoneNodes[i].InnerText;
                }

                resultItem.Lines = new List<LineItem>();

                var linesNode = testNode.SelectSingleNode("lines");
                var lineNodes = linesNode.SelectNodes("line");
                foreach (XmlNode lineNode in lineNodes)
                {
                    var lineItem = new LineItem();

                    var lineLabelNode = lineNode.SelectSingleNode("label");
                    lineItem.Label = (lineLabelNode != null) ? lineLabelNode.InnerText : String.Empty;

                    var guidStringNode = lineNode.SelectSingleNode("guid");
                    lineItem.GuidString = (guidStringNode != null) ? guidStringNode.InnerText : String.Empty;

                    var lineResultsNode = lineNode.SelectSingleNode("results");
                    var lineResultNodes = lineResultsNode.SelectNodes("result");

                    var groupByMilestone = (from XmlNode r in lineResultNodes
                                            orderby r.Attributes["iteration"].InnerText
                                            group r by r.Attributes["milestone"].InnerText into ms
                                            select ms);

                    lineItem.Points = new PointItem[groupByMilestone.Count()];
                    var index = 0;
                    foreach (var group in groupByMilestone)
                    {
                        var point = new PointItem();

                        foreach (var resultNode in group)
                        {
                            //todo: check for null
                            var timeNode = resultNode.SelectSingleNode("time");
                            point.AddTimeMeasure(timeNode.InnerText, timeNode.Attributes["units"].InnerText);
                            var memoryNode = resultNode.SelectSingleNode("memory");
                            point.AddMemoryMeasure(memoryNode.InnerText, memoryNode.Attributes["units"].InnerText);
                        }

                    lineItem.Points[index++] = point;
                    }

                    resultItem.Lines.Add(lineItem);
                }

                results.Add(resultItem);
            }

            return results;
        }