Skip to content

Commit deb5cc7

Browse files
committed
feat(tests): enhance telemetry tests with EventCounter listener
1 parent 6abf2bd commit deb5cc7

File tree

3 files changed

+22
-4
lines changed

3 files changed

+22
-4
lines changed

Directory.Packages.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<PackageVersion Include="NaughtyStrings" Version="2.4.1" />
77
</ItemGroup>
88
<ItemGroup Label="Dependencies">
9-
<PackageVersion Include="Microsoft.Extensions.Caching.Abstractions" Version="10.0.1" />
9+
<PackageVersion Include="Microsoft.Extensions.Caching.Abstractions" Version="8.0.0" />
1010
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="8.0.1" />
1111
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
1212
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.2" />
@@ -71,4 +71,4 @@
7171
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
7272
</PackageVersion>
7373
</ItemGroup>
74-
</Project>
74+
</Project>

tests/HttpUserAgentParser.AspNetCore.UnitTests/Telemetry/EventCounterTestListener.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ internal sealed class EventCounterTestListener(string eventSourceName) : EventLi
88
{
99
private readonly string _eventSourceName = eventSourceName;
1010
private volatile bool _sawEventCounters;
11+
private volatile bool _enabled;
1112

1213
protected override void OnEventSourceCreated(EventSource eventSource)
1314
{
@@ -24,6 +25,8 @@ protected override void OnEventSourceCreated(EventSource eventSource)
2425
{
2526
["EventCounterIntervalSec"] = "0.1"
2627
});
28+
29+
_enabled = true;
2730
}
2831

2932
protected override void OnEventWritten(EventWrittenEventArgs eventData)
@@ -44,4 +47,15 @@ public bool WaitForCounters(TimeSpan timeout)
4447

4548
return _sawEventCounters;
4649
}
50+
51+
public bool WaitUntilEnabled(TimeSpan timeout)
52+
{
53+
DateTimeOffset start = DateTimeOffset.UtcNow;
54+
while (!_enabled && DateTimeOffset.UtcNow - start < timeout)
55+
{
56+
Thread.Sleep(10);
57+
}
58+
59+
return _enabled;
60+
}
4761
}

tests/HttpUserAgentParser.AspNetCore.UnitTests/Telemetry/HttpUserAgentParserAspNetCoreTelemetryTests.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,15 @@ public void EventCounters_DoNotThrow_WhenEnabled()
2121

2222
DefaultHttpContext ctx = new();
2323

24-
// present
24+
// First call ensures the EventSource gets created (listener enables right after creation).
25+
ctx.Request.Headers.UserAgent = "UA";
26+
Assert.NotNull(ctx.GetUserAgentString());
27+
Assert.True(listener.WaitUntilEnabled(TimeSpan.FromSeconds(2)));
28+
29+
// Now exercise telemetry-enabled paths.
2530
ctx.Request.Headers.UserAgent = "UA";
2631
Assert.NotNull(ctx.GetUserAgentString());
2732

28-
// missing
2933
ctx.Request.Headers.Remove("User-Agent");
3034
Assert.Null(ctx.GetUserAgentString());
3135

0 commit comments

Comments
 (0)