@@ -21,16 +21,27 @@ public class TransformersBenchmark : OpenApiDocumentServiceTestBase
2121 public int TransformerCount { get ; set ; }
2222
2323 private readonly IEndpointRouteBuilder _builder = CreateBuilder ( ) ;
24- private readonly OpenApiOptions _options = new OpenApiOptions ( ) ;
24+ private readonly OpenApiOptions _options = new ( ) ;
2525 private OpenApiDocumentService _documentService ;
2626
27+ [ GlobalSetup ( Target = nameof ( ActivatedOperationTransformer ) ) ]
28+ public void ActivatedOperationTransformer_Setup ( )
29+ {
30+ _builder . MapGet ( "/" , ( ) => { } ) ;
31+ for ( var i = 0 ; i <= TransformerCount ; i ++ )
32+ {
33+ _options . AddOperationTransformer < OperationTransformer > ( ) ;
34+ }
35+ _documentService = CreateDocumentService ( _builder , _options ) ;
36+ }
37+
2738 [ GlobalSetup ( Target = nameof ( OperationTransformerAsDelegate ) ) ]
2839 public void OperationTransformerAsDelegate_Setup ( )
2940 {
3041 _builder . MapGet ( "/" , ( ) => { } ) ;
3142 for ( var i = 0 ; i <= TransformerCount ; i ++ )
3243 {
33- _options . UseOperationTransformer ( ( operation , context , token ) =>
44+ _options . AddOperationTransformer ( ( operation , context , token ) =>
3445 {
3546 operation . Description = "New Description" ;
3647 return Task . CompletedTask ;
@@ -45,7 +56,7 @@ public void ActivatedDocumentTransformer_Setup()
4556 _builder . MapGet ( "/" , ( ) => { } ) ;
4657 for ( var i = 0 ; i <= TransformerCount ; i ++ )
4758 {
48- _options . UseTransformer < ActivatedTransformer > ( ) ;
59+ _options . AddDocumentTransformer < DocumentTransformer > ( ) ;
4960 }
5061 _documentService = CreateDocumentService ( _builder , _options ) ;
5162 }
@@ -56,7 +67,7 @@ public void DocumentTransformerAsDelegate_Delegate()
5667 _builder . MapGet ( "/" , ( ) => { } ) ;
5768 for ( var i = 0 ; i <= TransformerCount ; i ++ )
5869 {
59- _options . UseTransformer ( ( document , context , token ) =>
70+ _options . AddDocumentTransformer ( ( document , context , token ) =>
6071 {
6172 document . Info . Description = "New Description" ;
6273 return Task . CompletedTask ;
@@ -65,13 +76,24 @@ public void DocumentTransformerAsDelegate_Delegate()
6576 _documentService = CreateDocumentService ( _builder , _options ) ;
6677 }
6778
68- [ GlobalSetup ( Target = nameof ( SchemaTransformer ) ) ]
79+ [ GlobalSetup ( Target = nameof ( ActivatedSchemaTransformer ) ) ]
80+ public void ActivatedSchemaTransformer_Setup ( )
81+ {
82+ _builder . MapPost ( "/" , ( Todo todo ) => todo ) ;
83+ for ( var i = 0 ; i <= TransformerCount ; i ++ )
84+ {
85+ _options . AddSchemaTransformer < SchemaTransformer > ( ) ;
86+ }
87+ _documentService = CreateDocumentService ( _builder , _options ) ;
88+ }
89+
90+ [ GlobalSetup ( Target = nameof ( SchemaTransformerAsDelegate ) ) ]
6991 public void SchemaTransformer_Setup ( )
7092 {
7193 _builder . MapPost ( "/" , ( Todo todo ) => todo ) ;
7294 for ( var i = 0 ; i <= TransformerCount ; i ++ )
7395 {
74- _options . UseSchemaTransformer ( ( schema , context , token ) =>
96+ _options . AddSchemaTransformer ( ( schema , context , token ) =>
7597 {
7698 if ( context . Type == typeof ( Todo ) && context . ParameterDescription != null )
7799 {
@@ -87,6 +109,12 @@ public void SchemaTransformer_Setup()
87109 _documentService = CreateDocumentService ( _builder , _options ) ;
88110 }
89111
112+ [ Benchmark ]
113+ public async Task ActivatedOperationTransformer ( )
114+ {
115+ await _documentService . GetOpenApiDocumentAsync ( ) ;
116+ }
117+
90118 [ Benchmark ]
91119 public async Task OperationTransformerAsDelegate ( )
92120 {
@@ -106,17 +134,48 @@ public async Task DocumentTransformerAsDelegate()
106134 }
107135
108136 [ Benchmark ]
109- public async Task SchemaTransformer ( )
137+ public async Task ActivatedSchemaTransformer ( )
138+ {
139+ await _documentService . GetOpenApiDocumentAsync ( ) ;
140+ }
141+
142+ [ Benchmark ]
143+ public async Task SchemaTransformerAsDelegate ( )
110144 {
111145 await _documentService . GetOpenApiDocumentAsync ( ) ;
112146 }
113147
114- private class ActivatedTransformer : IOpenApiDocumentTransformer
148+ private class DocumentTransformer : IOpenApiDocumentTransformer
115149 {
116150 public Task TransformAsync ( OpenApiDocument document , OpenApiDocumentTransformerContext context , CancellationToken cancellationToken )
117151 {
118152 document . Info . Description = "Info Description" ;
119153 return Task . CompletedTask ;
120154 }
121155 }
156+
157+ private class OperationTransformer : IOpenApiOperationTransformer
158+ {
159+ public Task TransformAsync ( OpenApiOperation operation , OpenApiOperationTransformerContext context , CancellationToken cancellationToken )
160+ {
161+ operation . Description = "Operation Description" ;
162+ return Task . CompletedTask ;
163+ }
164+ }
165+
166+ private class SchemaTransformer : IOpenApiSchemaTransformer
167+ {
168+ public Task TransformAsync ( OpenApiSchema schema , OpenApiSchemaTransformerContext context , CancellationToken cancellationToken )
169+ {
170+ if ( context . Type == typeof ( Todo ) && context . ParameterDescription != null )
171+ {
172+ schema . Extensions [ "x-my-extension" ] = new OpenApiString ( context . ParameterDescription . Name ) ;
173+ }
174+ else
175+ {
176+ schema . Extensions [ "x-my-extension" ] = new OpenApiString ( "response" ) ;
177+ }
178+ return Task . CompletedTask ;
179+ }
180+ }
122181}
0 commit comments