public async Task StoreBenchMarkResultsAsync_Should_SaveChangesAsync_Once() { // Arrange var sourceList = new List <BenchMarkResult>(); var mockDbContext = new Mock <BenchMarkDbContext>(); var mockedDbSet = new Mock <DbSet <BenchMarkResult> >(); mockedDbSet.Setup(d => d.Add(It.IsAny <BenchMarkResult>())).Callback <BenchMarkResult>((s) => sourceList.Add(s)); mockDbContext.Setup(dbContext => dbContext.BenchMarkResult).Returns(mockedDbSet.Object); var benchMarkResults = new List <BenchMarkResult>() { new BenchMarkResult() }; var testService = new BenchMarkTypeService(null, mockDbContext.Object); // Act await testService.StoreBenchMarkResultsAsync(benchMarkResults); // Assert mockDbContext.Verify(dbContext => dbContext.SaveChangesAsync(It.IsAny <CancellationToken>()), Times.Once); }
public async Task RunBenchMarksAsync_Should_Return_Results_For_BenchMarkType_when_Cold_And_Warm_Calls_Are_Asked() { // Arrange var benchMarks = new List <BenchMarkType>() { // no properties are needer new BenchMarkType() }; var coldCalls = 1; var warmCalls = 1; var benchMarkResponse = new BenchMarkResponse(true, 1); _mockIBenchMarkService.Setup(service => service.RunBenchMarkAsync(It.IsAny <string>())).ReturnsAsync(benchMarkResponse); var testService = new BenchMarkTypeService(_mockIBenchMarkService.Object, null); // Act var benchMarkResults = await testService.RunBenchMarksAsync(benchMarks, coldCalls, warmCalls, 0); // Assert Assert.NotNull(benchMarkResults); Assert.Equal(2, benchMarkResults.Count); // colds are always run before the warm calls Assert.True(benchMarkResults[0].IsColdRequest); // warms come after the cold calls Assert.False(benchMarkResults[1].IsColdRequest); }
public async Task RunBenchMarksAsync_Should_Return_Results_For_BenchMarkType_when_Warm_Calls_Are_Asked() { // Arrange var benchMarks = new List <BenchMarkType>() { // no properties are needer new BenchMarkType() }; var coldCalls = 0; var warmCalls = 1; var benchMarkResponse = new BenchMarkResponse(true, 1); _mockIBenchMarkService.Setup(service => service.RunBenchMarkAsync(It.IsAny <string>())).ReturnsAsync(benchMarkResponse); var testService = new BenchMarkTypeService(_mockIBenchMarkService.Object, null); // Act var benchMarkResults = await testService.RunBenchMarksAsync(benchMarks, coldCalls, warmCalls, 0); // Assert Assert.NotNull(benchMarkResults); Assert.Single(benchMarkResults); Assert.False(benchMarkResults[0].IsColdRequest); }
public async Task RunBenchMarksAsync_Should_Return_Results_For_Multiple_BenchMarkTypes_When_Cold_And_Warm_Calls_Are_Asked() { // Arrange var benchMarks = new List <BenchMarkType>() { new BenchMarkType() { CloudProvider = CloudProvider.Azure, }, new BenchMarkType() { CloudProvider = CloudProvider.Firebase, } }; var coldCalls = 1; var warmCalls = 1; var benchMarkResponse = new BenchMarkResponse(true, 1); _mockIBenchMarkService.Setup(service => service.RunBenchMarkAsync(It.IsAny <string>())).ReturnsAsync(benchMarkResponse); var testService = new BenchMarkTypeService(_mockIBenchMarkService.Object, null); // Act var benchMarkResults = await testService.RunBenchMarksAsync(benchMarks, coldCalls, warmCalls, 0); // Assert Assert.NotNull(benchMarkResults); // 2 types, ,1 cold, 1 warm = 4 total Assert.Equal(4, benchMarkResults.Count); // FOR THE AZURE TYPE // colds are always run before the warm calls Assert.True(benchMarkResults[0].IsColdRequest); Assert.Equal(CloudProvider.Azure, benchMarkResults[0].CloudProvider); // we need something to identify the difference so use the provider for now // warms come after the cold calls Assert.False(benchMarkResults[1].IsColdRequest); Assert.Equal(CloudProvider.Azure, benchMarkResults[1].CloudProvider); // we need something to identify the difference so use the provider for now // FOR THE FIREBASE TYPE // colds are always run before the warm calls Assert.True(benchMarkResults[2].IsColdRequest); Assert.Equal(CloudProvider.Firebase, benchMarkResults[2].CloudProvider); // we need something to identify the difference so use the provider for now // warms come after the cold calls Assert.False(benchMarkResults[3].IsColdRequest); Assert.Equal(CloudProvider.Firebase, benchMarkResults[3].CloudProvider); // we need something to identify the difference so use the provider for now }
public async Task RunBenchMarksAsync_Should_Return_BenchMarkResponse_as_Properly_Converted_Results() { // Arrange var benchMarks = new List <BenchMarkType>() { new BenchMarkType() { Name = "TestBenchMark", CloudProvider = CloudProvider.Firebase, HostEnvironment = HostEnvironment.Linux, Runtime = Runtime.Fsharp, SetXFunctionsKey = true, }, }; var coldCalls = 1; var warmCalls = 0; var benchMarkResponse = new BenchMarkResponse(true, 567); _mockIBenchMarkService.Setup(service => service.RunBenchMarkAsync(It.IsAny <string>())).ReturnsAsync(benchMarkResponse); var testService = new BenchMarkTypeService(_mockIBenchMarkService.Object, null); // Act var benchMarkResults = await testService.RunBenchMarksAsync(benchMarks, coldCalls, warmCalls, 0); // Assert Assert.NotNull(benchMarkResults); var validationResult = benchMarkResults[0]; // from the benchmarktype Assert.True(validationResult.IsColdRequest); Assert.Equal(CloudProvider.Firebase, validationResult.CloudProvider); Assert.Equal(HostEnvironment.Linux, validationResult.HostingEnvironment); Assert.Equal(Runtime.Fsharp, validationResult.Runtime); // from the actual benchmark Assert.Equal(567, validationResult.RequestDuration); Assert.True(validationResult.Success); // Set by the DB Assert.Equal(default(DateTimeOffset), validationResult.CreatedAt); Assert.Equal(0, validationResult.Id); }
public void GetAllTypes_Should_Return_BenchMarkType_With_All_Data() { // Arrange var testService = new BenchMarkTypeService(null, null); // Act var benchMarkTypes = testService.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); }
public async Task RunBenchMarksAsync_Should_Return_Empty_Results_On_No_BenchMarkTypes() { // Arrange var benchMarks = new List <BenchMarkType>(); var testService = new BenchMarkTypeService(null, null); // Act var benchMarkResults = await testService.RunBenchMarksAsync(benchMarks); // Assert Assert.NotNull(benchMarkResults); Assert.Empty(benchMarkResults); }
public void GetAllTypes_Should_Return_BenchMarkTypes() { // Arrange var testService = new BenchMarkTypeService(null, null); // Act var benchMarkTypes = testService.GetAllTypes(); // Assert Assert.NotNull(benchMarkTypes); Assert.NotEmpty(benchMarkTypes); }
public async Task StoreBenchMarkResultsAsync_Should_Return_When_No_Results_and_Not_Call_DbContext() { // Arrange var benchMarkResults = new List <BenchMarkResult>(); var mockDbContext = new Mock <BenchMarkDbContext>(); var testService = new BenchMarkTypeService(null, mockDbContext.Object); // Act await testService.StoreBenchMarkResultsAsync(benchMarkResults); // Assert mockDbContext.Verify(dbContext => dbContext.SaveChangesAsync(It.IsAny <CancellationToken>()), Times.Never); }
public async Task RunBenchMarksAsync_Should_Call_RunBenchMarkAsync_With_BenchMarkClient_String() { // Arrange var benchMarks = new List <BenchMarkType>() { new BenchMarkType() { Name = "TestBenchMark", CloudProvider = CloudProvider.Firebase, HostEnvironment = HostEnvironment.Linux, Runtime = Runtime.Fsharp, SetXFunctionsKey = true, }, }; var coldCalls = 1; var warmCalls = 0; var benchMarkResponse = new BenchMarkResponse(true, 567); _mockIBenchMarkService.Setup(service => service.RunBenchMarkAsync(It.IsAny <string>())).ReturnsAsync(benchMarkResponse); var testService = new BenchMarkTypeService(_mockIBenchMarkService.Object, null); // Act var benchMarkResults = await testService.RunBenchMarksAsync(benchMarks, coldCalls, warmCalls, 0); // Assert _mockIBenchMarkService.Verify(service => service.RunBenchMarkAsync(It.Is <string>(clientName => clientName == "TestBenchMarkClient")), Times.Once); }