From 903321a30f09ee2bd07b76b144de851016b2ac96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marie=20P=C3=ADchov=C3=A1?= <11718369+ManickaP@users.noreply.github.com> Date: Mon, 9 Oct 2023 11:54:41 +0200 Subject: [PATCH] [HTTP/SSL] Fix stress (#93135) * Fix stress docker images and ignore file * Fix msquic build to use openssl3 * Fix SSL stress version * SSL stress fixes --- .dockerignore | 3 --- eng/docker/libraries-sdk.linux.Dockerfile | 4 ++-- eng/docker/libraries-sdk.windows.Dockerfile | 4 ++-- .../tests/StressTests/HttpStress/Dockerfile | 6 +++--- .../tests/StressTests/HttpStress/Program.cs | 8 ++++---- .../tests/StressTests/HttpStress/windows.Dockerfile | 4 ++-- .../tests/StressTests/SslStress/Build-Local.ps1 | 2 +- .../tests/StressTests/SslStress/Directory.Build.targets | 2 +- .../tests/StressTests/SslStress/Dockerfile | 4 ++-- .../tests/StressTests/SslStress/build-local.sh | 3 ++- .../tests/StressTests/SslStress/windows.Dockerfile | 4 ++-- 11 files changed, 21 insertions(+), 23 deletions(-) diff --git a/.dockerignore b/.dockerignore index 95e3c995379568..6e9e93621e5d89 100644 --- a/.dockerignore +++ b/.dockerignore @@ -332,6 +332,3 @@ # performance testing sandbox **/sandbox - -#IL linker for testing -**/linker diff --git a/eng/docker/libraries-sdk.linux.Dockerfile b/eng/docker/libraries-sdk.linux.Dockerfile index 401ce9f1ffd432..056740da3e07c2 100644 --- a/eng/docker/libraries-sdk.linux.Dockerfile +++ b/eng/docker/libraries-sdk.linux.Dockerfile @@ -1,6 +1,6 @@ # Builds and copies library artifacts into target dotnet sdk image ARG BUILD_BASE_IMAGE=mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8 -ARG SDK_BASE_IMAGE=mcr.microsoft.com/dotnet/nightly/sdk:7.0-bullseye-slim +ARG SDK_BASE_IMAGE=mcr.microsoft.com/dotnet/nightly/sdk:8.0 FROM $BUILD_BASE_IMAGE as corefxbuild @@ -12,7 +12,7 @@ RUN ./build.sh clr+libs -runtimeconfiguration Release -configuration $CONFIGURAT FROM $SDK_BASE_IMAGE as target -ARG VERSION=8.0 +ARG VERSION=9.0 ARG CONFIGURATION=Release ENV _DOTNET_INSTALL_CHANNEL="$VERSION.1xx" diff --git a/eng/docker/libraries-sdk.windows.Dockerfile b/eng/docker/libraries-sdk.windows.Dockerfile index 444b0b4c94d452..52f4487b8f7cc7 100644 --- a/eng/docker/libraries-sdk.windows.Dockerfile +++ b/eng/docker/libraries-sdk.windows.Dockerfile @@ -1,11 +1,11 @@ # escape=` # Simple Dockerfile which copies clr and library build artifacts into target dotnet sdk image -ARG SDK_BASE_IMAGE=mcr.microsoft.com/dotnet/nightly/sdk:7.0-nanoserver-ltsc2022 +ARG SDK_BASE_IMAGE=mcr.microsoft.com/dotnet/nightly/sdk:8.0-nanoserver-ltsc2022 FROM $SDK_BASE_IMAGE as target SHELL ["pwsh", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] -ARG VERSION=8.0 +ARG VERSION=9.0 ENV _DOTNET_INSTALL_CHANNEL="$VERSION.1xx" ARG CONFIGURATION=Release diff --git a/src/libraries/System.Net.Http/tests/StressTests/HttpStress/Dockerfile b/src/libraries/System.Net.Http/tests/StressTests/HttpStress/Dockerfile index 6dc83bce1895eb..95f3cb0eb8c0e1 100644 --- a/src/libraries/System.Net.Http/tests/StressTests/HttpStress/Dockerfile +++ b/src/libraries/System.Net.Http/tests/StressTests/HttpStress/Dockerfile @@ -1,4 +1,4 @@ -ARG SDK_BASE_IMAGE=mcr.microsoft.com/dotnet/nightly/sdk:7.0-bullseye-slim +ARG SDK_BASE_IMAGE=mcr.microsoft.com/dotnet/nightly/sdk:8.0 FROM $SDK_BASE_IMAGE # Build latest msquic locally @@ -10,7 +10,7 @@ RUN apt-get update -y && \ RUN git clone --recursive https://github.com/dotnet/msquic RUN cd msquic/src/msquic && \ mkdir build && \ - cmake -B build -DCMAKE_BUILD_TYPE=Release -DQUIC_ENABLE_LOGGING=false -DQUIC_USE_SYSTEM_LIBCRYPTO=true -DQUIC_BUILD_TOOLS=off -DQUIC_BUILD_TEST=off -DQUIC_BUILD_PERF=off && \ + cmake -B build -DCMAKE_BUILD_TYPE=Release -DQUIC_ENABLE_LOGGING=false -DQUIC_USE_SYSTEM_LIBCRYPTO=true -DQUIC_BUILD_TOOLS=off -DQUIC_BUILD_TEST=off -DQUIC_BUILD_PERF=off -DQUIC_TLS=openssl3 && \ cd build && \ cmake --build . --config Release RUN cd msquic/src/msquic/build/bin/Release && \ @@ -20,7 +20,7 @@ RUN cd msquic/src/msquic/build/bin/Release && \ $( ls ./* | cut -d "/" -f 2 | sed -r "s/(.*)/\1=\/usr\/lib\/\1/g" ) && \ dpkg -i libmsquic_*.deb -ARG VERSION=8.0 +ARG VERSION=9.0 ARG CONFIGURATION=Release # Build the stress server diff --git a/src/libraries/System.Net.Http/tests/StressTests/HttpStress/Program.cs b/src/libraries/System.Net.Http/tests/StressTests/HttpStress/Program.cs index 0f47ae1b232fd9..e97e4baaf8208a 100644 --- a/src/libraries/System.Net.Http/tests/StressTests/HttpStress/Program.cs +++ b/src/libraries/System.Net.Http/tests/StressTests/HttpStress/Program.cs @@ -162,8 +162,8 @@ private static async Task Run(Configuration config) string GetAssemblyInfo(Assembly assembly) => $"{assembly.Location}, modified {new FileInfo(assembly.Location).LastWriteTime}"; - Type msQuicApiType = Type.GetType("System.Net.Quic.MsQuicApi, System.Net.Quic"); - string msQuicLibraryVersion = (string)msQuicApiType.GetProperty("MsQuicLibraryVersion", BindingFlags.NonPublic | BindingFlags.Static).GetGetMethod(true).Invoke(null, Array.Empty()); + Type msQuicApiType = Type.GetType("System.Net.Quic.MsQuicApi, System.Net.Quic")!; + string msQuicLibraryVersion = (string)msQuicApiType.GetProperty("MsQuicLibraryVersion", BindingFlags.NonPublic | BindingFlags.Static)!.GetGetMethod(true)!.Invoke(null, Array.Empty())!; Console.WriteLine(" .NET Core: " + GetAssemblyInfo(typeof(object).Assembly)); Console.WriteLine(" ASP.NET Core: " + GetAssemblyInfo(typeof(WebHost).Assembly)); @@ -192,8 +192,8 @@ private static async Task Run(Configuration config) { // If the system gets overloaded, MsQuic has a tendency to drop incoming connections, see https://github.com/dotnet/runtime/issues/55979. // So in case we're running H/3 stress test, we're using the same hack as for System.Net.Quic tests, which increases the time limit for pending operations in MsQuic thread pool. - object msQuicApiInstance = msQuicApiType.GetProperty("Api", BindingFlags.NonPublic | BindingFlags.Static).GetGetMethod(true).Invoke(null, Array.Empty()); - QUIC_API_TABLE* apiTable = (QUIC_API_TABLE*)(Pointer.Unbox(msQuicApiType.GetProperty("ApiTable").GetGetMethod().Invoke(msQuicApiInstance, Array.Empty()))); + object msQuicApiInstance = msQuicApiType.GetProperty("Api", BindingFlags.NonPublic | BindingFlags.Static)!.GetGetMethod(true)!.Invoke(null, Array.Empty())!; + QUIC_API_TABLE* apiTable = (QUIC_API_TABLE*)(Pointer.Unbox(msQuicApiType.GetProperty("ApiTable")!.GetGetMethod()!.Invoke(msQuicApiInstance, Array.Empty())!)); QUIC_SETTINGS settings = default(QUIC_SETTINGS); settings.IsSet.MaxWorkerQueueDelayUs = 1; settings.MaxWorkerQueueDelayUs = 2_500_000u; // 2.5s, 10x the default diff --git a/src/libraries/System.Net.Http/tests/StressTests/HttpStress/windows.Dockerfile b/src/libraries/System.Net.Http/tests/StressTests/HttpStress/windows.Dockerfile index b090d4eb246364..c17711ba837979 100644 --- a/src/libraries/System.Net.Http/tests/StressTests/HttpStress/windows.Dockerfile +++ b/src/libraries/System.Net.Http/tests/StressTests/HttpStress/windows.Dockerfile @@ -1,5 +1,5 @@ # escape=` -ARG SDK_BASE_IMAGE=mcr.microsoft.com/dotnet/nightly/sdk:7.0-nanoserver-ltsc2022 +ARG SDK_BASE_IMAGE=mcr.microsoft.com/dotnet/nightly/sdk:8.0-nanoserver-ltsc2022 FROM $SDK_BASE_IMAGE # Use powershell as the default shell @@ -8,7 +8,7 @@ SHELL ["pwsh", "-Command"] WORKDIR /app COPY . . -ARG VERSION=8.0 +ARG VERSION=9.0 ARG CONFIGURATION=Release RUN dotnet build -c $env:CONFIGURATION ` diff --git a/src/libraries/System.Net.Security/tests/StressTests/SslStress/Build-Local.ps1 b/src/libraries/System.Net.Security/tests/StressTests/SslStress/Build-Local.ps1 index cb60b735380d36..e05157c49b7253 100644 --- a/src/libraries/System.Net.Security/tests/StressTests/SslStress/Build-Local.ps1 +++ b/src/libraries/System.Net.Security/tests/StressTests/SslStress/Build-Local.ps1 @@ -7,7 +7,7 @@ # In SslStress it's a thin utility to generate a runscript for running the app with the live-built testhost. # The main reason to use an equivalent solution in SslStress is consistency with HttpStress. -$Version="8.0" +$Version="9.0" $RepoRoot="$(git rev-parse --show-toplevel)" $DailyDotnetRoot= "./.dotnet-daily" diff --git a/src/libraries/System.Net.Security/tests/StressTests/SslStress/Directory.Build.targets b/src/libraries/System.Net.Security/tests/StressTests/SslStress/Directory.Build.targets index e3ebd0de328758..db6e799e071df0 100644 --- a/src/libraries/System.Net.Security/tests/StressTests/SslStress/Directory.Build.targets +++ b/src/libraries/System.Net.Security/tests/StressTests/SslStress/Directory.Build.targets @@ -6,6 +6,6 @@ Define this here because the SDK resets it unconditionally in Microsoft.NETCoreSdk.BundledVersions.props. --> - 8.0 + 9.0 \ No newline at end of file diff --git a/src/libraries/System.Net.Security/tests/StressTests/SslStress/Dockerfile b/src/libraries/System.Net.Security/tests/StressTests/SslStress/Dockerfile index cfc7bd3e50418d..a170f0f3d5cc7d 100644 --- a/src/libraries/System.Net.Security/tests/StressTests/SslStress/Dockerfile +++ b/src/libraries/System.Net.Security/tests/StressTests/SslStress/Dockerfile @@ -1,11 +1,11 @@ -ARG SDK_BASE_IMAGE=mcr.microsoft.com/dotnet/nightly/sdk:6.0-bullseye-slim +ARG SDK_BASE_IMAGE=mcr.microsoft.com/dotnet/nightly/sdk:8.0 FROM $SDK_BASE_IMAGE WORKDIR /app COPY . . WORKDIR /app/System.Net.Security/tests/StressTests/SslStress -ARG VERSION=8.0 +ARG VERSION=9.0 ARG CONFIGURATION=Release RUN dotnet build -c $CONFIGURATION \ diff --git a/src/libraries/System.Net.Security/tests/StressTests/SslStress/build-local.sh b/src/libraries/System.Net.Security/tests/StressTests/SslStress/build-local.sh index 1d4b0ae73461d9..0156f4b7a43b25 100755 --- a/src/libraries/System.Net.Security/tests/StressTests/SslStress/build-local.sh +++ b/src/libraries/System.Net.Security/tests/StressTests/SslStress/build-local.sh @@ -8,8 +8,9 @@ # In SslStress it's a thin utility to generate a runscript for running the app with the live-built testhost. # The main reason to use an equivalent solution in SslStress is consistency with HttpStress. -version=8.0 +version=9.0 repo_root=$(git rev-parse --show-toplevel) +daily_dotnet_root=./.dotnet-daily stress_configuration="Release" if [ "$1" != "" ]; then diff --git a/src/libraries/System.Net.Security/tests/StressTests/SslStress/windows.Dockerfile b/src/libraries/System.Net.Security/tests/StressTests/SslStress/windows.Dockerfile index bd402f5a2a8818..3a7b811d2d48eb 100644 --- a/src/libraries/System.Net.Security/tests/StressTests/SslStress/windows.Dockerfile +++ b/src/libraries/System.Net.Security/tests/StressTests/SslStress/windows.Dockerfile @@ -1,5 +1,5 @@ # escape=` -ARG SDK_BASE_IMAGE=mcr.microsoft.com/dotnet/nightly/sdk:6.0-nanoserver-1809 +ARG SDK_BASE_IMAGE=mcr.microsoft.com/dotnet/nightly/sdk:8.0-nanoserver-ltsc2022 FROM $SDK_BASE_IMAGE # Use powershell as the default shell @@ -9,7 +9,7 @@ WORKDIR /app COPY . . WORKDIR /app/System.Net.Security/tests/StressTests/SslStress -ARG VERSION=8.0 +ARG VERSION=9.0 ARG CONFIGURATION=Release RUN dotnet build -c $env:CONFIGURATION `