Beispiel #1
0
        public async Task Run([TimerTrigger("0 0 */1 * * *")] TimerInfo myTimer, ILogger log)
        {
            log.LogInformation($"C# Timer trigger function executed at: {DateTime.UtcNow}");

            var benchMarkTypes = BenchMarkTypeGenerator.Generate();

            foreach (var benchMarkType in benchMarkTypes)
            {
                var tasksCold = new List <Task <BenchMarkResponse> >();
                var tasksWarm = new List <Task <BenchMarkResponse> >();

                for (int i = 0; i < 5; i++)
                {
                    tasksCold.Add(_benchMarkService.RunBenchMark(benchMarkType));
                }

                await Task.WhenAll(tasksCold);

                await Task.Delay(TimeSpan.FromSeconds(30));

                for (int i = 0; i < 10; i++)
                {
                    tasksWarm.Add(_benchMarkService.RunBenchMark(benchMarkType));
                }

                await Task.WhenAll(tasksWarm);

                var resultsCold =
                    ResultConverter.ConvertToResultObject(tasksCold.Select(t => t.Result), benchMarkType, true);

                var resultWarm =
                    ResultConverter.ConvertToResultObject(tasksWarm.Select(t => t.Result), benchMarkType, false);


                using (var dbContext =
                           BenchMarkDbContextFactory.Create(Environment.GetEnvironmentVariable("BenchMarkDatabase")))
                {
                    foreach (var result in resultsCold)
                    {
                        dbContext.BenchMarkResult.Add(result);
                    }

                    foreach (var result in resultWarm)
                    {
                        dbContext.BenchMarkResult.Add(result);
                    }


                    await dbContext.SaveChangesAsync();
                }
            }
        }
        public void GetAllTypes_Should_Return_BenchMarkTypes()
        {
            //  Arrange



            //  Act

            var benchMarkTypes = BenchMarkTypeGenerator.GetAllTypes();



            //  Assert

            Assert.NotNull(benchMarkTypes);
            Assert.NotEmpty(benchMarkTypes);
        }
        public static IServiceCollection AddBenchMarkClients(this IServiceCollection services)
        {
            var benchMarkTypes = BenchMarkTypeGenerator.GetAllTypes();

            foreach (var benchMarkType in benchMarkTypes)
            {
                services.AddHttpClient(benchMarkType.ClientName,
                                       client =>
                {
                    client.BaseAddress = new Uri(Environment.GetEnvironmentVariable(benchMarkType.UrlName));
                    if (benchMarkType.SetXFunctionsKey)
                    {
                        client.DefaultRequestHeaders.Add("x-functions-key", Environment.GetEnvironmentVariable(benchMarkType.KeyName));
                    }
                });
            }
            return(services);
        }
        public void GetAllTypes_Should_Return_BenchMarkType_With_All_Data()
        {
            //  Arrange



            //  Act

            var benchMarkTypes = BenchMarkTypeGenerator.GetAllTypes();



            //  Assert

            Assert.NotNull(benchMarkTypes);

            // we hard coded verify only the first and last(because its so different) entries for now
            var firstTypeForTesting = benchMarkTypes.First();

            Assert.Equal(CloudProvider.Azure, firstTypeForTesting.CloudProvider);
            Assert.Equal(HostEnvironment.Windows, firstTypeForTesting.HostEnvironment);
            Assert.Equal(Runtime.Csharp, firstTypeForTesting.Runtime);
            Assert.Equal("AzureWindowsCsharp", firstTypeForTesting.Name);
            Assert.Equal("AzureWindowsCsharpClient", firstTypeForTesting.ClientName);
            Assert.Equal("AzureWindowsCsharpKey", firstTypeForTesting.KeyName);
            Assert.Equal("AzureWindowsCsharpUrl", firstTypeForTesting.UrlName);
            Assert.True(firstTypeForTesting.SetXFunctionsKey);


            var lastTypeForTesting = benchMarkTypes.Last();

            Assert.Equal(CloudProvider.Firebase, lastTypeForTesting.CloudProvider);
            Assert.Equal(HostEnvironment.Linux, lastTypeForTesting.HostEnvironment);
            Assert.Equal(Runtime.Nodejs, lastTypeForTesting.Runtime);
            Assert.Equal("FirebaseLinuxNodejs", lastTypeForTesting.Name);
            Assert.Equal("FirebaseLinuxNodejsClient", lastTypeForTesting.ClientName);
            Assert.Equal("FirebaseLinuxNodejsKey", lastTypeForTesting.KeyName);
            Assert.Equal("FirebaseLinuxNodejsUrl", lastTypeForTesting.UrlName);
            Assert.False(lastTypeForTesting.SetXFunctionsKey);
        }
Beispiel #5
0
 public IEnumerable <BenchMarkType> GetAllTypes()
 {
     return(BenchMarkTypeGenerator.GetAllTypes());
 }