Skip to content

Conversation

@MihaZupan
Copy link
Member

@MihaZupan MihaZupan commented Dec 3, 2025

Closes #122267

Customer Impact

  • Found internally

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

  • No

Infra update.

Testing

CI stress runs.

Risk

Low. Test only change.

@MihaZupan MihaZupan self-assigned this Dec 3, 2025
@dotnet-policy-service
Copy link
Contributor

Tagging subscribers to this area: @dotnet/ncl
See info in area-owners.md if you want to be subscribed.

@MihaZupan
Copy link
Member Author

/azp run runtime-libraries stress-http

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@MihaZupan
Copy link
Member Author

/azp run runtime-libraries stress-ssl

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@SamMonoRT
Copy link
Member

@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.

Copy link
Member

@ManickaP ManickaP left a 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]>
@MihaZupan
Copy link
Member Author

/azp run runtime-libraries stress-http

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@MihaZupan MihaZupan marked this pull request as ready for review December 8, 2025 17:01
Copilot AI review requested due to automatic review settings December 8, 2025 17:01
Copy link
Contributor

Copilot AI left a 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_ARGS instead of HTTPSTRESS_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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants