Conversation
🚀 Fusion Gateway Performance ResultsSimple Composite Query
📊 Response Time Metrics
Executed Query fragment User on User {
id
username
name
}
fragment Review on Review {
id
body
}
fragment Product on Product {
inStock
name
price
shippingEstimate
upc
weight
}
query TestQuery {
topProducts(first: 5) {
...Product
reviews {
...Review
author {
...User
}
}
}
}Variable Batching Throughput
📊 Response Time Metrics
Executed Query query TestQuery_8f7a46ce_2(
$__fusion_1_upc: ID!
$__fusion_2_price: Long!
$__fusion_2_weight: Long!
) {
productByUpc(upc: $__fusion_1_upc) {
inStock
shippingEstimate(weight: $__fusion_2_weight, price: $__fusion_2_price)
}
}Variables (5 sets batched in single request) [
{ "__fusion_1_upc": "1", "__fusion_2_price": 899, "__fusion_2_weight": 100 },
{ "__fusion_1_upc": "2", "__fusion_2_price": 1299, "__fusion_2_weight": 1000 },
{ "__fusion_1_upc": "3", "__fusion_2_price": 15, "__fusion_2_weight": 20 },
{ "__fusion_1_upc": "4", "__fusion_2_price": 499, "__fusion_2_weight": 100 },
{ "__fusion_1_upc": "5", "__fusion_2_price": 1299, "__fusion_2_weight": 1000 }
]No baseline data available for comparison. Run 19289634204 • Commit 5a1b607 • Wed, 12 Nov 2025 07:31:10 GMT |
There was a problem hiding this comment.
Pull Request Overview
This PR adds an OpenAPI adapter to HotChocolate, enabling GraphQL schemas to be exposed as OpenAPI/REST endpoints. The adapter supports mapping GraphQL operations to HTTP endpoints with validation, hot-reloading, and both standalone and Fusion gateway scenarios.
Key changes:
- New OpenAPI adapter implementation with document parsing, validation, and transformation
- Support for fragment documents and operation documents with GraphQL-to-OpenAPI mapping
- Comprehensive validation rules for operations, routes, parameters, and directives
- Test infrastructure with Xunit2/Xunit3 support and extensive integration/validation tests
Reviewed Changes
Copilot reviewed 143 out of 143 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| OneOfMutableDirectiveDefinition.cs | Added description for @OneOf directive |
| FusionScalarTypeDefinition.cs | Added SerializationType mapping for built-in scalar types |
| GraphQLQueryBenchmark.cs | Updated namespace from Exporters.Csv to Adapters.Csv |
| Xunit3.Directory.Build.props | New test configuration for Xunit3 projects |
| Xunit2.Directory.Build.props | New test configuration for Xunit2 projects |
| ValidationTests.cs | Test class for standalone validation scenarios |
| ValidationTestBase.cs | Base class with 872 lines of validation tests |
| FusionValidationTests.cs | Test class for Fusion gateway validation |
| TestServerSession.cs | Test infrastructure for managing test servers |
| TestHelpers.cs | Helper methods and test schema setup |
| OpenApiTestBase.cs | Base test class with storage and JWT helpers |
| Multiple snapshot files | Expected OpenAPI JSON outputs for various scenarios |
| OpenApi adapter core files | Implementation of parsing, validation, storage, execution |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
src/HotChocolate/Fusion-vnext/src/Fusion.Execution.Types/FusionScalarTypeDefinition.cs
Outdated
Show resolved
Hide resolved
src/HotChocolate/Adapters/src/Adapters.OpenApi.Core/OpenApiWarmupTask.cs
Outdated
Show resolved
Hide resolved
🚀 Fusion Gateway Performance ResultsSimple Composite Query
📊 Response Time Metrics
Executed Query fragment User on User {
id
username
name
}
fragment Review on Review {
id
body
}
fragment Product on Product {
inStock
name
price
shippingEstimate
upc
weight
}
query TestQuery {
topProducts(first: 5) {
...Product
reviews {
...Review
author {
...User
}
}
}
}Variable Batching Throughput
📊 Response Time Metrics
Executed Query query TestQuery_8f7a46ce_2(
$__fusion_1_upc: ID!
$__fusion_2_price: Long!
$__fusion_2_weight: Long!
) {
productByUpc(upc: $__fusion_1_upc) {
inStock
shippingEstimate(weight: $__fusion_2_weight, price: $__fusion_2_price)
}
}Variables (5 sets batched in single request) [
{ "__fusion_1_upc": "1", "__fusion_2_price": 899, "__fusion_2_weight": 100 },
{ "__fusion_1_upc": "2", "__fusion_2_price": 1299, "__fusion_2_weight": 1000 },
{ "__fusion_1_upc": "3", "__fusion_2_price": 15, "__fusion_2_weight": 20 },
{ "__fusion_1_upc": "4", "__fusion_2_price": 499, "__fusion_2_weight": 100 },
{ "__fusion_1_upc": "5", "__fusion_2_price": 1299, "__fusion_2_weight": 1000 }
]No baseline data available for comparison. Run 19289961012 • Commit f4de428 • Wed, 12 Nov 2025 07:46:29 GMT |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #8886 +/- ##
============================
============================
☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
No description provided.