Skip to content

Commit 7fef625

Browse files
committed
log request data + try with new httpclient
1 parent 84a9d29 commit 7fef625

File tree

3 files changed

+68
-7
lines changed

3 files changed

+68
-7
lines changed

scenarios/tls.benchmarks.yml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
imports:
22
- https://raw.githubusercontent.com/dotnet/crank/main/src/Microsoft.Crank.Jobs.Wrk/wrk.yml
33
- https://raw.githubusercontent.com/dotnet/crank/main/src/Microsoft.Crank.Jobs.Bombardier/bombardier.yml
4-
- https://raw.githubusercontent.com/dotnet/crank/main/src/Microsoft.Crank.Jobs.HttpClient/httpclient.yml
4+
# - https://raw.githubusercontent.com/dotnet/crank/main/src/Microsoft.Crank.Jobs.HttpClient/httpclient.yml
5+
- https://raw.githubusercontent.com/DeagleGross/crank/refs/heads/dmkorolev/httpclient/add-tls-protocol-override/src/Microsoft.Crank.Jobs.HttpClient/httpclient.yml
56
- https://github.com/aspnet/Benchmarks/blob/main/scenarios/aspnet.profiles.yml?raw=true
67

78
variables:
@@ -15,12 +16,15 @@ jobs:
1516
project: src/BenchmarksApps/TLS/HttpSys/HttpSys.csproj
1617
readyStateText: Application started.
1718
variables:
19+
# behavioral settings
1820
mTLS: false # enables settings on http.sys to negotiate client cert on connections
1921
tlsRenegotiation: false # enables client cert validation
22+
# debug settings
2023
certValidationConsoleEnabled: false
2124
httpSysLogs: false
2225
statsEnabled: false
23-
arguments: "--urls https://{{serverAddress}}:{{serverPort}} --mTLS {{mTLS}} --certValidationConsoleEnabled {{certValidationConsoleEnabled}} --statsEnabled {{statsEnabled}} --tlsRenegotiation {{tlsRenegotiation}} --httpSysLogs {{httpSysLogs}}"
26+
logRequestDetails: false
27+
arguments: "--urls https://{{serverAddress}}:{{serverPort}} --mTLS {{mTLS}} --certValidationConsoleEnabled {{certValidationConsoleEnabled}} --statsEnabled {{statsEnabled}} --tlsRenegotiation {{tlsRenegotiation}} --httpSysLogs {{httpSysLogs}} --logRequestDetails {{logRequestDetails}}"
2428

2529
kestrelServer:
2630
source:
@@ -29,11 +33,14 @@ jobs:
2933
project: src/BenchmarksApps/TLS/Kestrel/Kestrel.csproj
3034
readyStateText: Application started.
3135
variables:
36+
# behavioral settings
3237
mTLS: false
3338
tlsRenegotiation: false
39+
# debug settings
3440
certValidationConsoleEnabled: false
3541
statsEnabled: false
36-
arguments: "--urls https://{{serverAddress}}:{{serverPort}} --mTLS {{mTLS}} --certValidationConsoleEnabled {{certValidationConsoleEnabled}} --statsEnabled {{statsEnabled}} --tlsRenegotiation {{tlsRenegotiation}}"
42+
logRequestDetails: false
43+
arguments: "--urls https://{{serverAddress}}:{{serverPort}} --mTLS {{mTLS}} --certValidationConsoleEnabled {{certValidationConsoleEnabled}} --statsEnabled {{statsEnabled}} --tlsRenegotiation {{tlsRenegotiation}} --logRequestDetails {{logRequestDetails}}"
3744

3845
scenarios:
3946

src/BenchmarksApps/TLS/HttpSys/Program.cs

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
11
using HttpSys;
2+
using Microsoft.AspNetCore.Connections.Features;
3+
using Microsoft.AspNetCore.Http.Features;
24
using Microsoft.AspNetCore.Server.HttpSys;
35

46
var builder = WebApplication.CreateBuilder(args);
57
builder.Logging.ClearProviders();
68

7-
var writeCertValidationEventsToConsole = bool.TryParse(builder.Configuration["certValidationConsoleEnabled"], out var certValidationConsoleEnabled) && certValidationConsoleEnabled;
9+
// behavioral
810
var httpSysLoggingEnabled = bool.TryParse(builder.Configuration["httpSysLogs"], out var httpSysLogsEnabled) && httpSysLogsEnabled;
9-
var statsEnabled = bool.TryParse(builder.Configuration["statsEnabled"], out var connectionStatsEnabledConfig) && connectionStatsEnabledConfig;
1011
var mTlsEnabled = bool.TryParse(builder.Configuration["mTLS"], out var mTlsEnabledConfig) && mTlsEnabledConfig;
1112
var tlsRenegotiationEnabled = bool.TryParse(builder.Configuration["tlsRenegotiation"], out var tlsRenegotiationEnabledConfig) && tlsRenegotiationEnabledConfig;
1213
var listeningEndpoints = builder.Configuration["urls"] ?? "https://localhost:5000/";
1314
var httpsIpPort = listeningEndpoints.Split(";").First(x => x.Contains("https")).Replace("https://", "");
1415

16+
// debug
17+
var writeCertValidationEventsToConsole = bool.TryParse(builder.Configuration["certValidationConsoleEnabled"], out var certValidationConsoleEnabled) && certValidationConsoleEnabled;
18+
var statsEnabled = bool.TryParse(builder.Configuration["statsEnabled"], out var connectionStatsEnabledConfig) && connectionStatsEnabledConfig;
19+
var logRequestDetails = bool.TryParse(builder.Configuration["logRequestDetails"], out var logRequestDetailsConfig) && logRequestDetailsConfig;
20+
1521
#pragma warning disable CA1416 // Can be launched only on Windows (HttpSys)
1622
builder.WebHost.UseHttpSys(options =>
1723
{
@@ -30,6 +36,27 @@
3036
var connectionIds = new HashSet<string>();
3137
var fetchedCertsCounter = 0;
3238

39+
if (logRequestDetails)
40+
{
41+
var logged = false;
42+
Console.WriteLine("Registered request details logging middleware");
43+
app.Use(async (context, next) =>
44+
{
45+
if (!logged)
46+
{
47+
logged = true;
48+
49+
var tlsHandshakeFeature = context.Features.GetRequiredFeature<ITlsHandshakeFeature>();
50+
51+
Console.WriteLine("Request details:");
52+
Console.WriteLine("-----");
53+
Console.WriteLine("TLS: " + tlsHandshakeFeature.Protocol);
54+
Console.WriteLine("-----");
55+
}
56+
await next();
57+
});
58+
}
59+
3360
if (statsEnabled)
3461
{
3562
Console.WriteLine("Registered stats middleware");

src/BenchmarksApps/TLS/Kestrel/Program.cs

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,25 @@
22
using System.Net.Security;
33
using System.Security.Cryptography.X509Certificates;
44
using Microsoft.AspNetCore.Authentication.Certificate;
5+
using Microsoft.AspNetCore.Connections.Features;
6+
using Microsoft.AspNetCore.Http.Features;
57
using Microsoft.AspNetCore.Server.HttpSys;
68
using Microsoft.AspNetCore.Server.Kestrel.Core;
79
using Microsoft.AspNetCore.Server.Kestrel.Https;
810

911
var builder = WebApplication.CreateBuilder(args);
1012
builder.Logging.ClearProviders();
1113

12-
var writeCertValidationEventsToConsole = bool.TryParse(builder.Configuration["certValidationConsoleEnabled"], out var certValidationConsoleEnabled) && certValidationConsoleEnabled;
14+
// behavioral
1315
var mTlsEnabled = bool.TryParse(builder.Configuration["mTLS"], out var mTlsEnabledConfig) && mTlsEnabledConfig;
1416
var tlsRenegotiationEnabled = bool.TryParse(builder.Configuration["tlsRenegotiation"], out var tlsRenegotiationEnabledConfig) && tlsRenegotiationEnabledConfig;
15-
var statsEnabled = bool.TryParse(builder.Configuration["statsEnabled"], out var connectionStatsEnabledConfig) && connectionStatsEnabledConfig;
1617
var listeningEndpoints = builder.Configuration["urls"] ?? "https://localhost:5000/";
1718

19+
// debug
20+
var writeCertValidationEventsToConsole = bool.TryParse(builder.Configuration["certValidationConsoleEnabled"], out var certValidationConsoleEnabled) && certValidationConsoleEnabled;
21+
var statsEnabled = bool.TryParse(builder.Configuration["statsEnabled"], out var connectionStatsEnabledConfig) && connectionStatsEnabledConfig;
22+
var logRequestDetails = bool.TryParse(builder.Configuration["logRequestDetails"], out var logRequestDetailsConfig) && logRequestDetailsConfig;
23+
1824
if (mTlsEnabled && tlsRenegotiationEnabled)
1925
{
2026
Console.WriteLine("mTLS and tlsRenegotiation require different clientCertMode setup. Using TLS Renegotiation by default.");
@@ -81,6 +87,27 @@ bool AllowAnyCertificateValidationWithLogging(X509Certificate2 certificate, X509
8187
return true;
8288
}
8389

90+
if (logRequestDetails)
91+
{
92+
var logged = false;
93+
Console.WriteLine("Registered request details logging middleware");
94+
app.Use(async (context, next) =>
95+
{
96+
if (!logged)
97+
{
98+
logged = true;
99+
100+
var tlsHandshakeFeature = context.Features.GetRequiredFeature<ITlsHandshakeFeature>();
101+
102+
Console.WriteLine("Request details:");
103+
Console.WriteLine("-----");
104+
Console.WriteLine("TLS: " + tlsHandshakeFeature.Protocol);
105+
Console.WriteLine("-----");
106+
}
107+
await next();
108+
});
109+
}
110+
84111
if (statsEnabled)
85112
{
86113
Console.WriteLine("Registered stats middleware");

0 commit comments

Comments
 (0)