@@ -12,33 +12,64 @@ public void Run()
12
12
{
13
13
var step1 = await Step . Run ( "login" , context , async ( ) =>
14
14
{
15
- await Task . Delay ( 500 ) ;
15
+ await Task . Delay ( Random . Shared . Next ( 100 , 500 ) ) ;
16
16
return Response . Ok ( sizeBytes : 10 , statusCode : "200" ) ;
17
17
} ) ;
18
18
19
19
var step2 = await Step . Run ( "get_product" , context , async ( ) =>
20
20
{
21
- await Task . Delay ( 1000 ) ;
21
+ await Task . Delay ( Random . Shared . Next ( 500 , 1000 ) ) ;
22
22
return Response . Ok ( sizeBytes : 20 , statusCode : "200" ) ;
23
23
} ) ;
24
24
25
25
var step3 = await Step . Run ( "buy_product" , context , async ( ) =>
26
26
{
27
- await Task . Delay ( 2000 ) ;
28
- return Response . Ok ( sizeBytes : 30 , statusCode : "200" ) ;
27
+ await Task . Delay ( Random . Shared . Next ( 1000 , 2000 ) ) ;
28
+ return Response . Fail ( sizeBytes : 30 , statusCode : "200" ) ;
29
29
} ) ;
30
30
31
31
return Response . Ok ( statusCode : "201" ) ;
32
32
} )
33
+ . WithMaxFailCount ( Int32 . MaxValue )
33
34
. WithWarmUpDuration ( TimeSpan . FromSeconds ( 3 ) )
34
35
. WithLoadSimulations (
35
36
Simulation . RampingInject ( rate : 200 , interval : TimeSpan . FromSeconds ( 1 ) , during : TimeSpan . FromMinutes ( 1 ) ) , // rump-up to rate 200
36
37
Simulation . Inject ( rate : 200 , interval : TimeSpan . FromSeconds ( 1 ) , during : TimeSpan . FromSeconds ( 30 ) ) , // keep injecting with rate 200
37
38
Simulation . RampingInject ( rate : 0 , interval : TimeSpan . FromSeconds ( 1 ) , during : TimeSpan . FromMinutes ( 1 ) ) // rump-down to rate 0
38
39
) ;
39
40
41
+ var scenario2 = Scenario . Create ( "user_flow_scenario2" , async context =>
42
+ {
43
+ var step1 = await Step . Run ( "login" , context , async ( ) =>
44
+ {
45
+ await Task . Delay ( Random . Shared . Next ( 100 , 500 ) ) ;
46
+ return Response . Ok ( sizeBytes : 10 , statusCode : "200" ) ;
47
+ } ) ;
48
+
49
+ var step2 = await Step . Run ( "get_product" , context , async ( ) =>
50
+ {
51
+ await Task . Delay ( Random . Shared . Next ( 500 , 1000 ) ) ;
52
+ return Response . Ok ( sizeBytes : 20 , statusCode : "200" ) ;
53
+ } ) ;
54
+
55
+ var step3 = await Step . Run ( "buy_product" , context , async ( ) =>
56
+ {
57
+ await Task . Delay ( Random . Shared . Next ( 1000 , 2000 ) ) ;
58
+ return Response . Fail ( sizeBytes : 30 , statusCode : "200" ) ;
59
+ } ) ;
60
+
61
+ return Response . Ok ( statusCode : "201" ) ;
62
+ } )
63
+ . WithMaxFailCount ( Int32 . MaxValue )
64
+ . WithWarmUpDuration ( TimeSpan . FromSeconds ( 3 ) )
65
+ . WithLoadSimulations (
66
+ Simulation . RampingInject ( rate : 200 , interval : TimeSpan . FromSeconds ( 1 ) , during : TimeSpan . FromMinutes ( 1 ) ) , // rump-up to rate 200
67
+ Simulation . Inject ( rate : 200 , interval : TimeSpan . FromSeconds ( 1 ) , during : TimeSpan . FromSeconds ( 30 ) ) , // keep injecting with rate 200
68
+ Simulation . RampingInject ( rate : 0 , interval : TimeSpan . FromSeconds ( 1 ) , during : TimeSpan . FromMinutes ( 1 ) ) // rump-down to rate 0
69
+ ) ;
70
+
40
71
NBomberRunner
41
- . RegisterScenarios ( scenario )
72
+ . RegisterScenarios ( scenario , scenario2 )
42
73
. LoadInfraConfig ( "Features/RealtimeReporting/TimescaleDB/infra-config.json" )
43
74
. WithReportingInterval ( TimeSpan . FromSeconds ( 5 ) )
44
75
. WithReportingSinks ( _timescaleDbSink )
0 commit comments