1+ using Microsoft . Extensions . Logging ;
12using Newtonsoft . Json ;
23using QAToolKit . Core . Models ;
4+ using QAToolKit . Core . Test ;
35using System ;
46using System . Collections . Generic ;
57using System . IO ;
68using System . Linq ;
79using System . Net . Http ;
810using System . Threading . Tasks ;
911using Xunit ;
12+ using Xunit . Abstractions ;
1013
1114namespace QAToolKit . Engine . Bombardier . Test
1215{
1316 public class BombardierTestsGeneratorTests
1417 {
18+ private readonly ILogger < BombardierTestsGeneratorTests > _logger ;
19+
20+ public BombardierTestsGeneratorTests ( ITestOutputHelper testOutputHelper )
21+ {
22+ var loggerFactory = new LoggerFactory ( ) ;
23+ loggerFactory . AddProvider ( new XunitLoggerProvider ( testOutputHelper ) ) ;
24+ _logger = loggerFactory . CreateLogger < BombardierTestsGeneratorTests > ( ) ;
25+ }
26+
1527 [ Fact ]
16- public async Task GenerateBombardierTestWithOptionsTest_Successfull ( )
28+ public async Task GenerateBombardierTestWithOptionsVariation1Test_Successfull ( )
1729 {
1830
1931 var bombardierTestsGenerator = new BombardierTestsGenerator ( options =>
@@ -25,19 +37,19 @@ public async Task GenerateBombardierTestWithOptionsTest_Successfull()
2537 } ) ;
2638
2739 var content = File . ReadAllText ( "Assets/getPetById.json" ) ;
28- var httpRequest = JsonConvert . DeserializeObject < IList < HttpTestRequest > > ( content ) ;
40+ var httpRequest = JsonConvert . DeserializeObject < IList < HttpRequest > > ( content ) ;
2941
3042 var bombardierTests = await bombardierTestsGenerator . Generate ( httpRequest ) ;
3143
3244 Assert . NotNull ( bombardierTests ) ;
3345 Assert . Single ( bombardierTests ) ;
34- Assert . Contains ( " -m GET https://petstore3.swagger.io/api/v3/pet/1?petId=1 -c 1 --http2 --timeout=30s --duration=1s" , bombardierTests . FirstOrDefault ( ) . Command ) ;
46+ Assert . Contains ( " -m GET https://petstore3.swagger.io/api/v3/pet/10 -c 1 --http2 --timeout=30s --duration=1s" , bombardierTests . FirstOrDefault ( ) . Command ) ;
3547 Assert . Equal ( HttpMethod . Get , bombardierTests . FirstOrDefault ( ) . Method ) ;
36- Assert . Equal ( "/pet/1 " , bombardierTests . FirstOrDefault ( ) . Url . ToString ( ) ) ;
48+ Assert . Equal ( "/pet/10 " , bombardierTests . FirstOrDefault ( ) . Url . ToString ( ) ) ;
3749 }
3850
3951 [ Fact ]
40- public async Task GenerateBombardierTestWithOptionsAlternativeTest_Successfull ( )
52+ public async Task GenerateBombardierTestWithOptionsVariation2Test_Successfull ( )
4153 {
4254
4355 var bombardierTestsGenerator = new BombardierTestsGenerator ( options =>
@@ -50,52 +62,64 @@ public async Task GenerateBombardierTestWithOptionsAlternativeTest_Successfull()
5062 } ) ;
5163
5264 var content = File . ReadAllText ( "Assets/getPetById.json" ) ;
53- var httpRequest = JsonConvert . DeserializeObject < IList < HttpTestRequest > > ( content ) ;
65+ var httpRequest = JsonConvert . DeserializeObject < IList < HttpRequest > > ( content ) ;
5466
5567 var bombardierTests = await bombardierTestsGenerator . Generate ( httpRequest ) ;
5668
5769 Assert . NotNull ( bombardierTests ) ;
5870 Assert . Single ( bombardierTests ) ;
59- Assert . Contains ( " -m GET https://petstore3.swagger.io/api/v3/pet/1?petId=1 -c 1 --http2 --timeout=30s --duration=10s --insecure" , bombardierTests . FirstOrDefault ( ) . Command ) ;
71+ Assert . Contains ( " -m GET https://petstore3.swagger.io/api/v3/pet/10 -c 1 --http2 --timeout=30s --duration=10s --insecure" , bombardierTests . FirstOrDefault ( ) . Command ) ;
6072 Assert . Equal ( HttpMethod . Get , bombardierTests . FirstOrDefault ( ) . Method ) ;
61- Assert . Equal ( "/pet/1 " , bombardierTests . FirstOrDefault ( ) . Url . ToString ( ) ) ;
73+ Assert . Equal ( "/pet/10 " , bombardierTests . FirstOrDefault ( ) . Url . ToString ( ) ) ;
6274 }
6375
64- /* [Fact]
65- public async Task BombardierTestWithOptionsTest_Successfull ()
76+ [ Fact ]
77+ public async Task GenerateBombardierTestWithOptionsVariation3Test_Successfull ( )
6678 {
6779
6880 var bombardierTestsGenerator = new BombardierTestsGenerator ( options =>
6981 {
7082 options . BombardierConcurrentUsers = 1 ;
7183 options . BombardierDuration = 1 ;
7284 options . BombardierTimeout = 30 ;
73- options.BombardierUseHttp2 = true ;
85+ options . BombardierUseHttp2 = false ;
7486 } ) ;
7587
7688 var content = File . ReadAllText ( "Assets/getPetById.json" ) ;
77- var httpRequest = JsonConvert.DeserializeObject<IList<HttpTestRequest >>(content);
89+ var httpRequest = JsonConvert . DeserializeObject < IList < HttpRequest > > ( content ) ;
7890
7991 var bombardierTests = await bombardierTestsGenerator . Generate ( httpRequest ) ;
8092
81- //Run Bombardier Tests
82- var bombardierTestsRunner = new BombardierTestsRunner(bombardierTests.ToList(), options =>
93+ Assert . NotNull ( bombardierTests ) ;
94+ Assert . Single ( bombardierTests ) ;
95+ Assert . Contains ( " -m GET https://petstore3.swagger.io/api/v3/pet/10 -c 1 --http1 --timeout=30s --duration=1s" , bombardierTests . FirstOrDefault ( ) . Command ) ;
96+ Assert . Equal ( HttpMethod . Get , bombardierTests . FirstOrDefault ( ) . Method ) ;
97+ Assert . Equal ( "/pet/10" , bombardierTests . FirstOrDefault ( ) . Url . ToString ( ) ) ;
98+ }
99+
100+ [ Fact ]
101+ public async Task GenerateBombardierTestWithOptionsVariation4Test_Successfull ( )
102+ {
103+
104+ var bombardierTestsGenerator = new BombardierTestsGenerator ( options =>
83105 {
84- options.ObfuscateAuthenticationHeader = true;
106+ options . BombardierConcurrentUsers = 1 ;
107+ options . BombardierDuration = 1 ;
108+ options . BombardierTimeout = 30 ;
109+ options . BombardierUseHttp2 = true ;
110+ options . BombardierRateLimit = 20 ;
85111 } ) ;
86- var bombardierResults = await bombardierTestsRunner.Run();
87-
88- Assert.NotNull(bombardierResults);
89- Assert.Single(bombardierResults);
90- Assert.True(bombardierResults.FirstOrDefault().AverageLatency > 0);
91- Assert.True(bombardierResults.FirstOrDefault().MaxLatency > 0);
92- Assert.True(bombardierResults.FirstOrDefault().StdevLatency > 0);
93- Assert.True(bombardierResults.FirstOrDefault().AverageRequestsPerSecond > 0);
94- Assert.True(bombardierResults.FirstOrDefault().MaxRequestsPerSecond > 0);
95- Assert.True(bombardierResults.FirstOrDefault().StdevRequestsPerSecond > 0);
96- Assert.True(bombardierResults.FirstOrDefault().TestStart.AddMinutes(60) > DateTime.Now);
97- Assert.True(bombardierResults.FirstOrDefault().TestStop.AddMinutes(60) > DateTime.Now);
98- Assert.True(bombardierResults.FirstOrDefault().TestStop.Subtract(bombardierResults.FirstOrDefault().TestStart).TotalSeconds == bombardierResults.FirstOrDefault().Duration);
99- }*/
112+
113+ var content = File . ReadAllText ( "Assets/getPetById.json" ) ;
114+ var httpRequest = JsonConvert . DeserializeObject < IList < HttpRequest > > ( content ) ;
115+
116+ var bombardierTests = await bombardierTestsGenerator . Generate ( httpRequest ) ;
117+
118+ Assert . NotNull ( bombardierTests ) ;
119+ Assert . Single ( bombardierTests ) ;
120+ Assert . Contains ( " -m GET https://petstore3.swagger.io/api/v3/pet/10 -c 1 --http2 --timeout=30s --duration=1s --rate=20" , bombardierTests . FirstOrDefault ( ) . Command ) ;
121+ Assert . Equal ( HttpMethod . Get , bombardierTests . FirstOrDefault ( ) . Method ) ;
122+ Assert . Equal ( "/pet/10" , bombardierTests . FirstOrDefault ( ) . Url . ToString ( ) ) ;
123+ }
100124 }
101125}
0 commit comments