コード例 #1
0
        public void GrandpaReport()
        {
            // Arrange
            var testMetric = new HiPerfMetric("GrandpaReport");

            // Act
            testMetric.Start("Grandparent task 1");
            Thread.Sleep(31);
            testMetric.Stop();
            MetricInfo parent1 = testMetric.StartChildMetric("Parent 1 Metric");
            parent1.Start("Parent 1 task 1");
            Thread.Sleep(31);
            parent1.Stop();
            MetricInfo child1 = parent1.StartChildMetric("Child 1 metric");
            child1.Start("Child 1 task 1");
            Thread.Sleep(31);
            child1.Stop();
            child1.Start("Child 1 task 2");
            Thread.Sleep(31);
            child1.Stop();
            parent1.Start("Parent 1 task 2");
            Thread.Sleep(31);
            parent1.Stop();

            // Report
            testMetric.GetDeepXmlReport().WriteXmlReport(@"GrandpaReportTest.xml");
        }
コード例 #2
0
        public void ChildMetrics()
        {
            // Arrange
            var testMetric = new HiPerfMetric("ParentMetric");

            // Act
            testMetric.Start("Parent task 1");
            Thread.Sleep(31);
            testMetric.Stop();
            var child = testMetric.StartChildMetric("ChildMetric");
            child.Start("child task 1");
            Thread.Sleep(31);
            child.Stop();
            child.Start("child task 2");
            Thread.Sleep(31);
            child.Stop();
            testMetric.Start("Parent task 2");
            Thread.Sleep(31);
            testMetric.Stop();

            // Assert
            Assert.AreEqual(3, testMetric.TimeDetails.Count());
            Assert.GreaterOrEqual(testMetric.TotalTimeInSeconds, .120);
            Assert.AreEqual(2, child.TimeDetails.Count());
            Assert.GreaterOrEqual(child.Duration, .06);
        }
コード例 #3
0
        public IQueryable <CharacterClassViewModel> GetClasses()
        {
            var metricInfo = new HiPerfMetric("CharacterClassService.GetClasses");
            var classes    = GetClasses(metricInfo);

            _logger.Debug(metricInfo.ReportAsDefault());
            return(classes);
        }
コード例 #4
0
        public async Task <IHttpActionResult> Get()
        {
            var timer = new HiPerfMetric("Get all classes");

            timer.Start("Getting classes");
            var classes = await Task.Run(() => _characterClassService.GetClasses(timer.StartChildMetric("Service")));

            timer.Stop();
            _logger.Debug(timer.ReportAsDefault());
            return(Ok(classes));
        }
コード例 #5
0
        public void StringReport()
        {
            var metric = new HiPerfMetric("NormalTwoTaskReport");
            metric.Start("task 1");
            Thread.Sleep(25);
            metric.Stop();
            metric.Start("task 2");
            Thread.Sleep(50);
            metric.Stop();

            Debug.WriteLine(metric.GetJsonReport().StringJsonReport());
        }
コード例 #6
0
        public void DoubleStart()
        {
            // Arrange
            var testMetric = new HiPerfMetric("test");

            // Act
            testMetric.Start("task 1");
            testMetric.Start("task 2");

            // Assert
            // hopefully there wasn't an exception
        }
コード例 #7
0
        public void NormalTwoTaskreport()
        {
            var metric = new HiPerfMetric("NormalTwoTaskReport");
            metric.Start("task 1");
            Thread.Sleep(25);
            metric.Stop();
            metric.Start("task 2");
            Thread.Sleep(50);
            metric.Stop();

            metric.GetDeepXmlReport().WriteXmlReport(@"NormalTwoTaskReport.xml");
        }
コード例 #8
0
        public void NormalTwoTaskReport()
        {
            var metric = new HiPerfMetric("NormalTwoTaskReport");
            metric.Start("task 1");
            Thread.Sleep(25);
            metric.Stop();
            metric.Start("task 2");
            Thread.Sleep(50);
            metric.Stop();

            var report = new DefaultReport
            {
                Metric = metric
            };
            Debug.WriteLine(report.Report());
        }
コード例 #9
0
        public void ExtensionTest()
        {
            var metric = new HiPerfMetric("NormalTwoTaskReport");
            metric.Start("task 1");
            Thread.Sleep(250);
            metric.Stop();
            metric.Start("task 2");
            Thread.Sleep(500);
            metric.Stop();

            Debug.WriteLine(metric.GetDictionaryReport().SummaryMessage);
            foreach (var taskDetail in metric.GetDictionaryReport().TaskDetails)
            {
                Debug.WriteLine("{0}\t{1}", taskDetail.Key, taskDetail.Value);
            }
        }
コード例 #10
0
        public void ChildrenJson()
        {
            var metric = new HiPerfMetric("TaskWithChildren");
            metric.Start("Parent 1");
            Thread.Sleep(27);
            metric.Stop();
            var parent2 = metric.StartChildMetric("Parent 2");
            parent2.Start("Child 1");
            Thread.Sleep(75);
            parent2.Stop();
            parent2.Start("Child 2");
            Thread.Sleep(50);
            parent2.Stop();
            metric.Start("One last task");
            Thread.Sleep(25);
            metric.Stop();

            Debug.WriteLine(metric.ReportAsJson());
        }
コード例 #11
0
        public void HappyTest()
        {
            var metric = new HiPerfMetric("NormalTwoTaskReport");
            metric.Start("task 1");
            Thread.Sleep(250);
            metric.Stop();
            metric.Start("task 2");
            Thread.Sleep(500);
            metric.Stop();

            var report = new DictionaryReport
            {
                Metric = metric
            };
            Debug.WriteLine(report.SummaryMessage);
            foreach (var taskDetail in report.TaskDetails)
            {
                Debug.WriteLine("{0}\t{1}", taskDetail.Key, taskDetail.Value);
            }
        }
コード例 #12
0
        public void DurationTest()
        {
            // Arrange
            var testMetric = new HiPerfMetric("Test");
            var totalTime = 0.0;

            // Act
            testMetric.Start("task 1");
            Thread.Sleep(501);
            totalTime += .5;
            testMetric.Stop();
            testMetric.Start("task 2");
            Thread.Sleep(1);
            totalTime += 0.0;
            testMetric.Stop();
            testMetric.Start("task 3");
            Thread.Sleep(251);
            totalTime += .25;
            testMetric.Stop();

            // Assert
            Assert.GreaterOrEqual(testMetric.TotalTimeInSeconds, totalTime);
        }
コード例 #13
0
        public void ChildMetricsReport()
        {
            // Arrange
            var testMetric = new HiPerfMetric("ParentMetric");

            // Act
            testMetric.Start("Parent task 1");
            Thread.Sleep(31);
            testMetric.Stop();
            var child = testMetric.StartChildMetric("ChildMetric");
            child.Start("child task 1");
            Thread.Sleep(31);
            child.Stop();
            child.Start("child task 2");
            Thread.Sleep(31);
            child.Stop();
            testMetric.Start("Parent task 2");
            Thread.Sleep(31);
            testMetric.Stop();

            // Report
            Debug.WriteLine(testMetric.GetDefaultReport().Report());
        }
コード例 #14
0
        public void ChildReportTest()
        {
            // Arrange
            var testMetric = new HiPerfMetric("ParentMetric");

            // Act
            testMetric.Start("Parent task 1");
            Thread.Sleep(31);
            testMetric.Stop();
            MetricInfo child = testMetric.StartChildMetric("ChildMetric");
            child.Start("child task 1");
            Thread.Sleep(31);
            child.Stop();
            child.Start("child task 2");
            Thread.Sleep(31);
            child.Stop();
            testMetric.Start("Parent task 2");
            Thread.Sleep(31);
            testMetric.Stop();

            // Report
            testMetric.GetDeepXmlReport().WriteXmlReport(@"ChildReportTest.xml");
        }
コード例 #15
0
        public void PerformanceImpactTest()
        {
            // Arrange
            var realMetric = new HiPerfMetric("PerformanceImpactTest");
            const int iterations = 1000;

            // Act
            realMetric.Start();
            for (var i = 0; i < iterations; i++)
            {
                var testMetric = new HiPerfMetric("Test");
                testMetric.Start("Step 1");
                testMetric.Stop();
                testMetric.Start("Step 2");
                testMetric.Stop();
                testMetric.Start("Step 3");
                testMetric.Stop();
            }
            realMetric.Stop();

            // Assert
            Console.WriteLine(realMetric.ReportAsDefault());
            Console.WriteLine($"Each three step metric took {(realMetric.TotalTimeInSeconds * 1000000f)/(double)iterations} microseconds");
        }
コード例 #16
0
        public void OverallTestHappyPath()
        {
            // Arrange
            var testMetric = new HiPerfMetric("Test");

            // Act
            testMetric.Start("task 1");
            Thread.Sleep(500);
            testMetric.Stop();
            testMetric.Start("task 2");
            testMetric.Stop();

            // Assert
            Debug.WriteLine(testMetric.SummaryMessage);
            Assert.AreEqual(2, testMetric.TimeDetails.Count());
        }
コード例 #17
0
        public void NamelessTasks()
        {
            // Arrange
            var testMetric = new HiPerfMetric("NamelessTasks");

            // Act
            testMetric.Start();
            testMetric.Stop();

            // Assert
            Assert.AreEqual(1, testMetric.TimeDetails.Count());
            Assert.AreEqual("Step 01", ((TaskInfo)testMetric.TimeDetails.First()).Name);
        }