Telemetry refactoring#2985
Conversation
Cherry-pick changes from #2936: - Move `Meter` to `TelemetrySource` class. - Use Polly's actual version for the meter's version. - Extend some test coverage. - Apply some minor code style refactoring.
There was a problem hiding this comment.
Pull request overview
Introduces a shared telemetry Meter source in Polly.Extensions so telemetry components use a consistent meter name/version derived from the assembly, and adjusts related tests and small builder refactors.
Changes:
- Added
TelemetrySourcesingleton to centralize meter creation/versioning, and updatedTelemetryListenerImplto use it. - Updated/added tests to validate the new meter behavior and adjusted existing telemetry/builder tests accordingly.
- Minor refactors: reuse
ResilienceStrategyTelemetryinstance during pipeline build and modernizeRegistryPipelineComponentBuildervia a primary constructor.
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| test/Polly.Extensions.Tests/Telemetry/TelemetrySourceTests.cs | Adds coverage for the new TelemetrySource meter name/version. |
| test/Polly.Extensions.Tests/Telemetry/TelemetryListenerImplTests.cs | Updates tests to align with meter version now coming from assembly metadata. |
| test/Polly.Core.Tests/Telemetry/ResilienceStrategyTelemetryTests.cs | Adds a constructor sanity test and minor cleanup (method group). |
| test/Polly.Core.Tests/StrategyBuilderContextTests.cs | Makes the test class/method static and improves telemetry assertions formatting. |
| test/Polly.Core.Tests/ResiliencePipelineBuilderTests.cs | Adds a “copy-ctor reminder” reflection-based guard test. |
| src/Polly.Extensions/Telemetry/TelemetrySource.cs | New internal telemetry source providing the shared Meter and version parsing. |
| src/Polly.Extensions/Telemetry/TelemetryListenerImpl.cs | Switches telemetry meter creation to use TelemetrySource.Instance.Meter. |
| src/Polly.Core/ResiliencePipelineBuilderBase.cs | Reuses a local ResilienceStrategyTelemetry instance during pipeline component building. |
| src/Polly.Core/Registry/RegistryPipelineComponentBuilder.cs | Refactors to a primary constructor and field initializers. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Fix incorrect test name. Co-authored-by: Martin Costello <[email protected]>
Extend assertions on the version string.
Remove unused constant as of #2985.
Remove unused constant as of #2985.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2985 +/- ##
=======================================
Coverage 96.15% 96.15%
=======================================
Files 309 310 +1
Lines 7128 7135 +7
Branches 1005 1005
=======================================
+ Hits 6854 6861 +7
Misses 221 221
Partials 53 53
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
Cherry-pick changes from #2936:
MetertoTelemetrySourceclass.