44using BenchmarkDotNet . Attributes ;
55using Microsoft . AspNetCore . Builder ;
66using Microsoft . AspNetCore . Routing ;
7+ using Microsoft . Extensions . DependencyInjection ;
78using Microsoft . OpenApi . Any ;
89using Microsoft . OpenApi . Models ;
910
@@ -23,6 +24,7 @@ public class TransformersBenchmark : OpenApiDocumentServiceTestBase
2324 private readonly IEndpointRouteBuilder _builder = CreateBuilder ( ) ;
2425 private readonly OpenApiOptions _options = new ( ) ;
2526 private OpenApiDocumentService _documentService ;
27+ private IServiceProvider _serviceProvider ;
2628
2729 [ GlobalSetup ( Target = nameof ( ActivatedOperationTransformer ) ) ]
2830 public void ActivatedOperationTransformer_Setup ( )
@@ -33,6 +35,7 @@ public void ActivatedOperationTransformer_Setup()
3335 _options . AddOperationTransformer < OperationTransformer > ( ) ;
3436 }
3537 _documentService = CreateDocumentService ( _builder , _options ) ;
38+ _serviceProvider = _builder . ServiceProvider . CreateScope ( ) . ServiceProvider ;
3639 }
3740
3841 [ GlobalSetup ( Target = nameof ( OperationTransformerAsDelegate ) ) ]
@@ -48,6 +51,7 @@ public void OperationTransformerAsDelegate_Setup()
4851 } ) ;
4952 }
5053 _documentService = CreateDocumentService ( _builder , _options ) ;
54+ _serviceProvider = _builder . ServiceProvider . CreateScope ( ) . ServiceProvider ;
5155 }
5256
5357 [ GlobalSetup ( Target = nameof ( ActivatedDocumentTransformer ) ) ]
@@ -59,6 +63,7 @@ public void ActivatedDocumentTransformer_Setup()
5963 _options . AddDocumentTransformer < DocumentTransformer > ( ) ;
6064 }
6165 _documentService = CreateDocumentService ( _builder , _options ) ;
66+ _serviceProvider = _builder . ServiceProvider . CreateScope ( ) . ServiceProvider ;
6267 }
6368
6469 [ GlobalSetup ( Target = nameof ( DocumentTransformerAsDelegate ) ) ]
@@ -74,6 +79,7 @@ public void DocumentTransformerAsDelegate_Delegate()
7479 } ) ;
7580 }
7681 _documentService = CreateDocumentService ( _builder , _options ) ;
82+ _serviceProvider = _builder . ServiceProvider . CreateScope ( ) . ServiceProvider ;
7783 }
7884
7985 [ GlobalSetup ( Target = nameof ( ActivatedSchemaTransformer ) ) ]
@@ -85,6 +91,7 @@ public void ActivatedSchemaTransformer_Setup()
8591 _options . AddSchemaTransformer < SchemaTransformer > ( ) ;
8692 }
8793 _documentService = CreateDocumentService ( _builder , _options ) ;
94+ _serviceProvider = _builder . ServiceProvider . CreateScope ( ) . ServiceProvider ;
8895 }
8996
9097 [ GlobalSetup ( Target = nameof ( SchemaTransformerAsDelegate ) ) ]
@@ -107,42 +114,43 @@ public void SchemaTransformer_Setup()
107114 } ) ;
108115 }
109116 _documentService = CreateDocumentService ( _builder , _options ) ;
117+ _serviceProvider = _builder . ServiceProvider . CreateScope ( ) . ServiceProvider ;
110118 }
111119
112120 [ Benchmark ]
113121 public async Task ActivatedOperationTransformer ( )
114122 {
115- await _documentService . GetOpenApiDocumentAsync ( ) ;
123+ await _documentService . GetOpenApiDocumentAsync ( _serviceProvider ) ;
116124 }
117125
118126 [ Benchmark ]
119127 public async Task OperationTransformerAsDelegate ( )
120128 {
121- await _documentService . GetOpenApiDocumentAsync ( ) ;
129+ await _documentService . GetOpenApiDocumentAsync ( _serviceProvider ) ;
122130 }
123131
124132 [ Benchmark ]
125133 public async Task ActivatedDocumentTransformer ( )
126134 {
127- await _documentService . GetOpenApiDocumentAsync ( ) ;
135+ await _documentService . GetOpenApiDocumentAsync ( _serviceProvider ) ;
128136 }
129137
130138 [ Benchmark ]
131139 public async Task DocumentTransformerAsDelegate ( )
132140 {
133- await _documentService . GetOpenApiDocumentAsync ( ) ;
141+ await _documentService . GetOpenApiDocumentAsync ( _serviceProvider ) ;
134142 }
135143
136144 [ Benchmark ]
137145 public async Task ActivatedSchemaTransformer ( )
138146 {
139- await _documentService . GetOpenApiDocumentAsync ( ) ;
147+ await _documentService . GetOpenApiDocumentAsync ( _serviceProvider ) ;
140148 }
141149
142150 [ Benchmark ]
143151 public async Task SchemaTransformerAsDelegate ( )
144152 {
145- await _documentService . GetOpenApiDocumentAsync ( ) ;
153+ await _documentService . GetOpenApiDocumentAsync ( _serviceProvider ) ;
146154 }
147155
148156 private class DocumentTransformer : IOpenApiDocumentTransformer
0 commit comments