예제 #1
0
        public void ConvertBenchMarkResult_Should_Convert_BenchMarkResult_Date_With_The_Enviroment_DataRange_Into_DataPoints_Regardless_Of_Cold_Or_Warm_Status()
        {
            //  Arrange

            Environment.SetEnvironmentVariable("dayRange", "20");

            var benchMarkResults = new List <BenchMarkResult>()
            {
                new BenchMarkResult()
                {
                    CreatedAt     = new DateTimeOffset(new DateTime(2020, 1, 1)), // we need a date and as such a singular result
                    IsColdRequest = true                                          // even though this is a cold request warm data points are still added
                },
            };

            var responseConverter = new ResponseConverterService();



            //  Act

            var benchMarkData = responseConverter.ConvertToBenchMarkData(benchMarkResults);



            //  Assert

            Assert.NotNull(benchMarkData);
            // 20 of the date range
            Assert.Equal(20, benchMarkData.ColdDataPoints.Count);
            Assert.Equal(20, benchMarkData.WarmDataPoints.Count);
        }
예제 #2
0
        public void ConvertBenchMarkResult_Should_Set_Enum_Number_Into_BenchMarkData_When_RequestData_Is_Outside_Of_EnumRange()
        {
            //  Arrange

            Environment.SetEnvironmentVariable("dayRange", "2");

            var benchMarkResults = new List <BenchMarkResult>()
            {
                new BenchMarkResult()
                {
                    CloudProvider      = (CloudProvider)(-1),  // does not exist on enum
                    HostingEnvironment = (HostEnvironment)100, // does not exist on enum
                    Runtime            = (Runtime)789,         // does not exist on enum
                    CreatedAt          = new DateTimeOffset(new DateTime(2020, 1, 1)),
                },
            };

            var responseConverter = new ResponseConverterService();



            //  Act

            var benchMarkData = responseConverter.ConvertToBenchMarkData(benchMarkResults);



            //  Assert

            Assert.NotNull(benchMarkData);
            Assert.Equal("-1", benchMarkData.CloudProvider);
            Assert.Equal("100", benchMarkData.HostingEnvironment);
            Assert.Equal("789", benchMarkData.Runtime);
        }
예제 #3
0
        public void ConvertBenchMarkResult_Should_Set_RequestData_Of_First_Result_Into_BenchMarkData_When_Conflicting_RequestData()
        {
            //  Arrange

            Environment.SetEnvironmentVariable("dayRange", "2");

            var benchMarkResults = new List <BenchMarkResult>()
            {
                new BenchMarkResult()
                {
                    CloudProvider      = CloudProvider.Firebase,
                    HostingEnvironment = HostEnvironment.Linux,
                    Runtime            = Runtime.Java,
                    CreatedAt          = new DateTimeOffset(new DateTime(2020, 1, 1)),
                },
                new BenchMarkResult()
                {
                    CloudProvider      = CloudProvider.Azure, // different than the main
                    HostingEnvironment = HostEnvironment.Windows,
                    Runtime            = Runtime.Csharp,
                    CreatedAt          = new DateTimeOffset(new DateTime(2020, 1, 1)),
                },
                new BenchMarkResult()
                {
                    CloudProvider      = CloudProvider.Azure, // different than the main
                    HostingEnvironment = HostEnvironment.Windows,
                    Runtime            = Runtime.Csharp,
                    CreatedAt          = new DateTimeOffset(new DateTime(2020, 1, 1)),
                },
                new BenchMarkResult()
                {
                    CloudProvider      = CloudProvider.Azure, // different than the main
                    HostingEnvironment = HostEnvironment.Windows,
                    Runtime            = Runtime.Csharp,
                    CreatedAt          = new DateTimeOffset(new DateTime(2020, 1, 1)),
                },
            };

            var responseConverter = new ResponseConverterService();



            //  Act

            var benchMarkData = responseConverter.ConvertToBenchMarkData(benchMarkResults);



            //  Assert

            Assert.NotNull(benchMarkData);
            Assert.Equal(CloudProvider.Firebase.ToString(), benchMarkData.CloudProvider);
            Assert.Equal(HostEnvironment.Linux.ToString(), benchMarkData.HostingEnvironment);
            Assert.Equal(Runtime.Java.ToString(), benchMarkData.Runtime);
        }
예제 #4
0
        public void ConvertBenchMarkResult_Should_Add_BenchMarkResult_DataRows_Into_DataPoints_By_Cold_Or_Warm_Status()
        {
            //  Arrange

            Environment.SetEnvironmentVariable("dayRange", "1");

            var benchMarkResults = new List <BenchMarkResult>()
            {
                new BenchMarkResult()
                {
                    CreatedAt     = new DateTimeOffset(new DateTime(2020, 1, 1)),
                    IsColdRequest = true
                },
                new BenchMarkResult()
                {
                    CreatedAt     = new DateTimeOffset(new DateTime(2020, 1, 1)),
                    IsColdRequest = true
                },
                new BenchMarkResult()
                {
                    CreatedAt     = new DateTimeOffset(new DateTime(2020, 1, 1)),
                    IsColdRequest = true
                },
                new BenchMarkResult()
                {
                    CreatedAt     = new DateTimeOffset(new DateTime(2020, 1, 1)),
                    IsColdRequest = true
                },
                new BenchMarkResult()
                {
                    CreatedAt     = new DateTimeOffset(new DateTime(2020, 1, 1)),
                    IsColdRequest = false
                },
            };

            var responseConverter = new ResponseConverterService();



            //  Act

            var benchMarkData = responseConverter.ConvertToBenchMarkData(benchMarkResults);



            //  Assert

            Assert.NotNull(benchMarkData);
            Assert.Equal(4, benchMarkData.ColdDataPoints[0].ExecutionTimes.Count);
            Assert.Single(benchMarkData.WarmDataPoints[0].ExecutionTimes);
        }
예제 #5
0
        public void ConvertBenchMarkResult_Throws_InvalidOperationException_when_No_Results_Given()
        {
            //  Arrange

            var benchMarkResults = new List <BenchMarkResult>()
            {
            };

            var responseConverter = new ResponseConverterService();



            //  Act & Assert

            Assert.Throws <InvalidOperationException>(() => responseConverter.ConvertToBenchMarkData(benchMarkResults));
        }
예제 #6
0
        public void ConvertBenchMarkResult_Should_Set_RequestData_Into_BenchMarkData()
        {
            //  Arrange

            Environment.SetEnvironmentVariable("dayRange", "2");


            var cloudProvider      = CloudProvider.Azure;
            var hostingEnvironment = HostEnvironment.Windows;
            var runtime            = Runtime.Csharp;


            var benchMarkResults = new List <BenchMarkResult>()
            {
                new BenchMarkResult()
                {
                    CloudProvider      = cloudProvider,
                    HostingEnvironment = hostingEnvironment,
                    Runtime            = runtime,
                    CreatedAt          = new DateTimeOffset(new DateTime(2020, 1, 1)),
                },
            };

            var responseConverter = new ResponseConverterService();



            //  Act

            var benchMarkData = responseConverter.ConvertToBenchMarkData(benchMarkResults);



            //  Assert

            Assert.NotNull(benchMarkData);
            Assert.Equal(cloudProvider.ToString(), benchMarkData.CloudProvider);
            Assert.Equal(hostingEnvironment.ToString(), benchMarkData.HostingEnvironment);
            Assert.Equal(runtime.ToString(), benchMarkData.Runtime);
        }
예제 #7
0
        public void ConvertBenchMarkResult_Should_Calculate_Correct_Medians_By_Cold_Status()
        {
            //  Arrange

            Environment.SetEnvironmentVariable("dayRange", "1");

            var benchMarkResults = new List <BenchMarkResult>()
            {
                new BenchMarkResult()
                {
                    CreatedAt       = new DateTimeOffset(new DateTime(2020, 1, 1)),//yesterday
                    RequestDuration = 120,
                    IsColdRequest   = true
                },
                new BenchMarkResult()
                {
                    CreatedAt       = new DateTimeOffset(new DateTime(2020, 1, 1)),//yesterday
                    RequestDuration = 160,
                    IsColdRequest   = true
                },
                new BenchMarkResult()
                {
                    CreatedAt       = new DateTimeOffset(new DateTime(2020, 1, 2)), //today
                    RequestDuration = 84,
                    IsColdRequest   = true
                },
                new BenchMarkResult()
                {
                    CreatedAt       = new DateTimeOffset(new DateTime(2020, 1, 2)),//today
                    RequestDuration = 42,
                    IsColdRequest   = true
                },

                // warm request that can be ignored and should not be taken into the medians
                new BenchMarkResult()
                {
                    CreatedAt       = new DateTimeOffset(new DateTime(2020, 1, 1)), //yesterday
                    RequestDuration = 7684,
                    IsColdRequest   = false
                },
                new BenchMarkResult()
                {
                    CreatedAt       = new DateTimeOffset(new DateTime(2020, 1, 2)),//today
                    RequestDuration = 9942,
                    IsColdRequest   = false
                },
            };

            var responseConverter = new ResponseConverterService();



            //  Act

            var benchMarkData = responseConverter.ConvertToBenchMarkData(benchMarkResults);



            //  Assert

            Assert.NotNull(benchMarkData);
            Assert.Equal(63, benchMarkData.ColdMedianExecutionTime);        // 42-84 = 63 median
            Assert.Equal(-122.22, benchMarkData.ColdPreviousDayDifference); // (42-84)(63) vs (120-160)(140) = -77 diff = -122.22%
            Assert.True(benchMarkData.ColdPreviousDayPositive);
        }