4
4
using BenchmarkDotNet . Attributes ;
5
5
using Microsoft . AspNetCore . Builder ;
6
6
using Microsoft . AspNetCore . Routing ;
7
+ using Microsoft . Extensions . DependencyInjection ;
7
8
using Microsoft . OpenApi . Any ;
8
9
using Microsoft . OpenApi . Models ;
9
10
@@ -23,6 +24,7 @@ public class TransformersBenchmark : OpenApiDocumentServiceTestBase
23
24
private readonly IEndpointRouteBuilder _builder = CreateBuilder ( ) ;
24
25
private readonly OpenApiOptions _options = new ( ) ;
25
26
private OpenApiDocumentService _documentService ;
27
+ private IServiceProvider _serviceProvider ;
26
28
27
29
[ GlobalSetup ( Target = nameof ( ActivatedOperationTransformer ) ) ]
28
30
public void ActivatedOperationTransformer_Setup ( )
@@ -33,6 +35,7 @@ public void ActivatedOperationTransformer_Setup()
33
35
_options . AddOperationTransformer < OperationTransformer > ( ) ;
34
36
}
35
37
_documentService = CreateDocumentService ( _builder , _options ) ;
38
+ _serviceProvider = _builder . ServiceProvider . CreateScope ( ) . ServiceProvider ;
36
39
}
37
40
38
41
[ GlobalSetup ( Target = nameof ( OperationTransformerAsDelegate ) ) ]
@@ -48,6 +51,7 @@ public void OperationTransformerAsDelegate_Setup()
48
51
} ) ;
49
52
}
50
53
_documentService = CreateDocumentService ( _builder , _options ) ;
54
+ _serviceProvider = _builder . ServiceProvider . CreateScope ( ) . ServiceProvider ;
51
55
}
52
56
53
57
[ GlobalSetup ( Target = nameof ( ActivatedDocumentTransformer ) ) ]
@@ -59,6 +63,7 @@ public void ActivatedDocumentTransformer_Setup()
59
63
_options . AddDocumentTransformer < DocumentTransformer > ( ) ;
60
64
}
61
65
_documentService = CreateDocumentService ( _builder , _options ) ;
66
+ _serviceProvider = _builder . ServiceProvider . CreateScope ( ) . ServiceProvider ;
62
67
}
63
68
64
69
[ GlobalSetup ( Target = nameof ( DocumentTransformerAsDelegate ) ) ]
@@ -74,6 +79,7 @@ public void DocumentTransformerAsDelegate_Delegate()
74
79
} ) ;
75
80
}
76
81
_documentService = CreateDocumentService ( _builder , _options ) ;
82
+ _serviceProvider = _builder . ServiceProvider . CreateScope ( ) . ServiceProvider ;
77
83
}
78
84
79
85
[ GlobalSetup ( Target = nameof ( ActivatedSchemaTransformer ) ) ]
@@ -85,6 +91,7 @@ public void ActivatedSchemaTransformer_Setup()
85
91
_options . AddSchemaTransformer < SchemaTransformer > ( ) ;
86
92
}
87
93
_documentService = CreateDocumentService ( _builder , _options ) ;
94
+ _serviceProvider = _builder . ServiceProvider . CreateScope ( ) . ServiceProvider ;
88
95
}
89
96
90
97
[ GlobalSetup ( Target = nameof ( SchemaTransformerAsDelegate ) ) ]
@@ -107,42 +114,43 @@ public void SchemaTransformer_Setup()
107
114
} ) ;
108
115
}
109
116
_documentService = CreateDocumentService ( _builder , _options ) ;
117
+ _serviceProvider = _builder . ServiceProvider . CreateScope ( ) . ServiceProvider ;
110
118
}
111
119
112
120
[ Benchmark ]
113
121
public async Task ActivatedOperationTransformer ( )
114
122
{
115
- await _documentService . GetOpenApiDocumentAsync ( ) ;
123
+ await _documentService . GetOpenApiDocumentAsync ( _serviceProvider ) ;
116
124
}
117
125
118
126
[ Benchmark ]
119
127
public async Task OperationTransformerAsDelegate ( )
120
128
{
121
- await _documentService . GetOpenApiDocumentAsync ( ) ;
129
+ await _documentService . GetOpenApiDocumentAsync ( _serviceProvider ) ;
122
130
}
123
131
124
132
[ Benchmark ]
125
133
public async Task ActivatedDocumentTransformer ( )
126
134
{
127
- await _documentService . GetOpenApiDocumentAsync ( ) ;
135
+ await _documentService . GetOpenApiDocumentAsync ( _serviceProvider ) ;
128
136
}
129
137
130
138
[ Benchmark ]
131
139
public async Task DocumentTransformerAsDelegate ( )
132
140
{
133
- await _documentService . GetOpenApiDocumentAsync ( ) ;
141
+ await _documentService . GetOpenApiDocumentAsync ( _serviceProvider ) ;
134
142
}
135
143
136
144
[ Benchmark ]
137
145
public async Task ActivatedSchemaTransformer ( )
138
146
{
139
- await _documentService . GetOpenApiDocumentAsync ( ) ;
147
+ await _documentService . GetOpenApiDocumentAsync ( _serviceProvider ) ;
140
148
}
141
149
142
150
[ Benchmark ]
143
151
public async Task SchemaTransformerAsDelegate ( )
144
152
{
145
- await _documentService . GetOpenApiDocumentAsync ( ) ;
153
+ await _documentService . GetOpenApiDocumentAsync ( _serviceProvider ) ;
146
154
}
147
155
148
156
private class DocumentTransformer : IOpenApiDocumentTransformer
0 commit comments