-
Notifications
You must be signed in to change notification settings - Fork 5.3k
[release/8.0] Backport improvements to Http and Ssl stress tests #122141
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: release/8.0-staging
Are you sure you want to change the base?
Conversation
|
Tagging subscribers to this area: @dotnet/ncl |
|
/azp run runtime-libraries stress-http |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run runtime-libraries stress-ssl |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
@MihaZupan - the code complete for January servicing for 8.0.x and 9.0.x is December 5th in case you were planning to get this in for Jan. |
ManickaP
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thanks!
Co-authored-by: Marie Píchová <[email protected]>
|
/azp run runtime-libraries stress-http |
|
Azure Pipelines successfully started running 1 pipeline(s). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR backports stress test infrastructure improvements from the main branch to release/8.0, updating both HttpStress and SslStress projects to use a common, shared infrastructure. The key change specific to 8.0 is that TrackUnobservedExceptions is disabled by default, as noted in the PR description, since many product fixes have been made since 8.0 that would make this feature very noisy in the release branch.
Key Changes
- Consolidates duplicate stress test infrastructure code into a common location (
src/libraries/Common/tests/System/Net/StressTests/) - Updates Docker configurations to use correct SDK versions (8.0 instead of 6.0/7.0)
- Standardizes environment variable names (
STRESS_ARGSinstead ofHTTPSTRESS_ARGS/SSLSTRESS_ARGS) - Adds new entrypoint scripts for improved dump collection and error handling
- Upgrades System.CommandLine package from experimental version to beta5
- Adds connection initialization logic to SslStress client to handle container startup race conditions
Reviewed changes
Copilot reviewed 41 out of 41 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| src/libraries/System.Net.Security/tests/StressTests/SslStress/windows.Dockerfile | Updates SDK base image to 8.0, adds NetCoreAppCurrentVersion parameter, standardizes environment variables |
| src/libraries/System.Net.Security/tests/StressTests/SslStress/run-docker-compose.sh | Refactored to delegate to common infrastructure script |
| src/libraries/System.Net.Security/tests/StressTests/SslStress/run-docker-compose.ps1 | Refactored to delegate to common infrastructure script |
| src/libraries/System.Net.Security/tests/StressTests/SslStress/entrypoint.sh | New script for container entry with dump collection support |
| src/libraries/System.Net.Security/tests/StressTests/SslStress/entrypoint.ps1 | New PowerShell script for Windows container entry with dump collection |
| src/libraries/System.Net.Security/tests/StressTests/SslStress/docker-compose.yml | Updates volume mounts and environment variables for standardization |
| src/libraries/System.Net.Security/tests/StressTests/SslStress/build-local.sh | Refactored to delegate to common infrastructure script |
| src/libraries/System.Net.Security/tests/StressTests/SslStress/StressOperations.cs | Adds InitializeAsync method for connection retry logic, fixes whitespace formatting |
| src/libraries/System.Net.Security/tests/StressTests/SslStress/SslStress.csproj | Adds custom NuGet feed, upgrades System.CommandLine package |
| src/libraries/System.Net.Security/tests/StressTests/SslStress/SslClientBase.cs | Removes unused random parameter, fixes whitespace formatting |
| src/libraries/System.Net.Security/tests/StressTests/SslStress/Program.cs | Updates to new System.CommandLine API, improves command-line parsing |
| src/libraries/System.Net.Security/tests/StressTests/SslStress/Dockerfile | Updates SDK base image, adds NetCoreAppCurrentVersion parameter, uses entrypoint script |
| src/libraries/System.Net.Security/tests/StressTests/SslStress/Directory.Build.targets | Uses variable for NETCoreAppMaximumVersion instead of hardcoded value |
| src/libraries/System.Net.Security/tests/StressTests/SslStress/Directory.Build.props | Imports Versions.props, dynamically computes version properties, renames OutputRID to TargetRid |
| src/libraries/System.Net.Security/tests/StressTests/SslStress/Build-Local.ps1 | Refactored to delegate to common infrastructure script |
| src/libraries/System.Net.Http/tests/StressTests/HttpStress/windows.Dockerfile | Updates SDK base image to 8.0, moves dump configuration to entrypoint |
| src/libraries/System.Net.Http/tests/StressTests/HttpStress/run-docker-compose.sh | Refactored to delegate to common infrastructure script |
| src/libraries/System.Net.Http/tests/StressTests/HttpStress/run-docker-compose.ps1 | Refactored to delegate to common infrastructure script |
| src/libraries/System.Net.Http/tests/StressTests/HttpStress/entrypoint.sh | New script for container entry with dump collection and ulimit configuration |
| src/libraries/System.Net.Http/tests/StressTests/HttpStress/entrypoint.ps1 | New PowerShell script for Windows container entry with dump collection |
| src/libraries/System.Net.Http/tests/StressTests/HttpStress/docker-compose.yml | Consolidates volume mounts, standardizes environment variables |
| src/libraries/System.Net.Http/tests/StressTests/HttpStress/build-local.sh | Refactored to delegate to common infrastructure script |
| src/libraries/System.Net.Http/tests/StressTests/HttpStress/build-local.ps1 | Refactored to delegate to common infrastructure script |
| src/libraries/System.Net.Http/tests/StressTests/HttpStress/StressServer.cs | Updates documentation URL from docs.microsoft.com to learn.microsoft.com |
| src/libraries/System.Net.Http/tests/StressTests/HttpStress/StressClient.cs | Enables multiple HTTP/2 connections |
| src/libraries/System.Net.Http/tests/StressTests/HttpStress/Program.cs | Updates to new System.CommandLine API, adds unobserved exception tracking (disabled by default for 8.0), fixes formatting |
| src/libraries/System.Net.Http/tests/StressTests/HttpStress/HttpStress.csproj | Adds custom NuGet feed, upgrades System.CommandLine package |
| src/libraries/System.Net.Http/tests/StressTests/HttpStress/Dockerfile | Updates SDK base image, enables ASAN for msquic, adds NetCoreAppCurrentVersion parameter |
| src/libraries/System.Net.Http/tests/StressTests/HttpStress/Directory.Build.targets | Uses variable for NETCoreAppMaximumVersion instead of hardcoded value |
| src/libraries/System.Net.Http/tests/StressTests/HttpStress/Directory.Build.props | Imports Versions.props, dynamically computes version properties, renames OutputRID to TargetRid |
| src/libraries/System.Net.Http/tests/StressTests/HttpStress/Configuration.cs | Adds TrackUnobservedExceptions property |
| src/libraries/Common/tests/System/Net/StressTests/run-docker-compose.sh | New common script implementing docker-compose run logic for stress tests |
| src/libraries/Common/tests/System/Net/StressTests/run-docker-compose.ps1 | New common PowerShell script implementing docker-compose run logic |
| src/libraries/Common/tests/System/Net/StressTests/build-local.sh | New common script implementing local build logic for stress tests |
| src/libraries/Common/tests/System/Net/StressTests/build-local.ps1 | New common PowerShell script implementing local build logic |
| eng/pipelines/libraries/stress/ssl.yml | Adds release/*.0 branch trigger, updates dump share handling, removes Windows workarounds |
| eng/pipelines/libraries/stress/http.yml | Adds release/*.0 branch trigger, consolidates dump share handling, removes Windows workarounds |
| eng/docker/libraries-sdk.windows.Dockerfile | Updates to 8.0 SDK, uses new dotnet-install URL, removes old ASP.NET versions |
| eng/docker/libraries-sdk.linux.Dockerfile | Updates to CentOS Stream 9, uses new dotnet-install URL, removes existing SDK |
| eng/docker/build-docker-sdk.sh | Adds dynamic version detection from Versions.props, fixes comparison operator |
| eng/docker/build-docker-sdk.ps1 | Adds dynamic version detection from Versions.props, adds VERSION build arg |
Closes #122267
Customer Impact
Our HTTP and SSL stress tests are experiencing intermittent build failures.
This change backports stress infra & testing improvements we've made since the 8.0 release, which also resolves the build failures.
Regression
Infra update.
Testing
CI stress runs.
Risk
Low. Test only change.