From 07112a70ff8da47eafa0868a036cf1451c8ab75e Mon Sep 17 00:00:00 2001 From: Harsimar Kaur Date: Fri, 27 Mar 2026 16:22:10 -0700 Subject: [PATCH] Rename EnablePerfCounters to EnablePerformanceCounters per API review Renamed across Exporter and AspNetCore source, tests, API listings, and changelogs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../CHANGELOG.md | 2 +- ...onitor.OpenTelemetry.AspNetCore.net10.0.cs | 2 +- ...Monitor.OpenTelemetry.AspNetCore.net8.0.cs | 2 +- ...OpenTelemetry.AspNetCore.netstandard2.0.cs | 2 +- .../src/AzureMonitorOptions.cs | 4 +- .../AzureMonitorOptionsTests.cs | 38 +++++++++---------- .../CHANGELOG.md | 2 +- ....Monitor.OpenTelemetry.Exporter.net10.0.cs | 2 +- ...e.Monitor.OpenTelemetry.Exporter.net8.0.cs | 2 +- ...r.OpenTelemetry.Exporter.netstandard2.0.cs | 2 +- .../src/AzureMonitorExporterOptions.cs | 2 +- .../StandardMetricsExtractionProcessor.cs | 12 +++--- .../StandardMetricTests.cs | 10 ++--- 13 files changed, 41 insertions(+), 41 deletions(-) diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md index 997e5e57e85a..fb0a7346cdbc 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/CHANGELOG.md @@ -4,7 +4,7 @@ ### Features Added -* Add ability to specify EnableStandardMetrics and EnablePerfCounters +* Add ability to specify EnableStandardMetrics and EnablePerformanceCounters ([#56438](https://github.com/Azure/azure-sdk-for-net/pull/56438)) ### Breaking Changes diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/api/Azure.Monitor.OpenTelemetry.AspNetCore.net10.0.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/api/Azure.Monitor.OpenTelemetry.AspNetCore.net10.0.cs index 68411b159f7c..42dd01b7bbd9 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/api/Azure.Monitor.OpenTelemetry.AspNetCore.net10.0.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/api/Azure.Monitor.OpenTelemetry.AspNetCore.net10.0.cs @@ -7,7 +7,7 @@ public AzureMonitorOptions() { } public Azure.Core.TokenCredential Credential { get { throw null; } set { } } public bool DisableOfflineStorage { get { throw null; } set { } } public bool EnableLiveMetrics { get { throw null; } set { } } - public bool EnablePerfCounters { get { throw null; } set { } } + public bool EnablePerformanceCounters { get { throw null; } set { } } public bool EnableStandardMetrics { get { throw null; } set { } } public bool EnableTraceBasedLogsSampler { get { throw null; } set { } } public float SamplingRatio { get { throw null; } set { } } diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/api/Azure.Monitor.OpenTelemetry.AspNetCore.net8.0.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/api/Azure.Monitor.OpenTelemetry.AspNetCore.net8.0.cs index 68411b159f7c..42dd01b7bbd9 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/api/Azure.Monitor.OpenTelemetry.AspNetCore.net8.0.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/api/Azure.Monitor.OpenTelemetry.AspNetCore.net8.0.cs @@ -7,7 +7,7 @@ public AzureMonitorOptions() { } public Azure.Core.TokenCredential Credential { get { throw null; } set { } } public bool DisableOfflineStorage { get { throw null; } set { } } public bool EnableLiveMetrics { get { throw null; } set { } } - public bool EnablePerfCounters { get { throw null; } set { } } + public bool EnablePerformanceCounters { get { throw null; } set { } } public bool EnableStandardMetrics { get { throw null; } set { } } public bool EnableTraceBasedLogsSampler { get { throw null; } set { } } public float SamplingRatio { get { throw null; } set { } } diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/api/Azure.Monitor.OpenTelemetry.AspNetCore.netstandard2.0.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/api/Azure.Monitor.OpenTelemetry.AspNetCore.netstandard2.0.cs index 68411b159f7c..42dd01b7bbd9 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/api/Azure.Monitor.OpenTelemetry.AspNetCore.netstandard2.0.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/api/Azure.Monitor.OpenTelemetry.AspNetCore.netstandard2.0.cs @@ -7,7 +7,7 @@ public AzureMonitorOptions() { } public Azure.Core.TokenCredential Credential { get { throw null; } set { } } public bool DisableOfflineStorage { get { throw null; } set { } } public bool EnableLiveMetrics { get { throw null; } set { } } - public bool EnablePerfCounters { get { throw null; } set { } } + public bool EnablePerformanceCounters { get { throw null; } set { } } public bool EnableStandardMetrics { get { throw null; } set { } } public bool EnableTraceBasedLogsSampler { get { throw null; } set { } } public float SamplingRatio { get { throw null; } set { } } diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/src/AzureMonitorOptions.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/src/AzureMonitorOptions.cs index cc436c9f7e16..fb00d25e692b 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/src/AzureMonitorOptions.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/src/AzureMonitorOptions.cs @@ -58,7 +58,7 @@ public class AzureMonitorOptions : ClientOptions /// Gets or sets a value indicating whether performance counters should be collected. /// Default is true. /// - public bool EnablePerfCounters { get; set; } = true; + public bool EnablePerformanceCounters { get; set; } = true; /// /// Enables or disables filtering logs based on trace sampling decisions. @@ -108,7 +108,7 @@ internal void SetValueToExporterOptions(AzureMonitorExporterOptions exporterOpti exporterOptions.StorageDirectory = StorageDirectory; exporterOptions.EnableLiveMetrics = EnableLiveMetrics; exporterOptions.EnableStandardMetrics = EnableStandardMetrics; - exporterOptions.EnablePerfCounters = EnablePerfCounters; + exporterOptions.EnablePerformanceCounters = EnablePerformanceCounters; exporterOptions.EnableTraceBasedLogsSampler = EnableTraceBasedLogsSampler; if (Transport != null) { diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/tests/Azure.Monitor.OpenTelemetry.AspNetCore.Tests/AzureMonitorOptionsTests.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/tests/Azure.Monitor.OpenTelemetry.AspNetCore.Tests/AzureMonitorOptionsTests.cs index 185d76fab398..f4897b540f21 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/tests/Azure.Monitor.OpenTelemetry.AspNetCore.Tests/AzureMonitorOptionsTests.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/tests/Azure.Monitor.OpenTelemetry.AspNetCore.Tests/AzureMonitorOptionsTests.cs @@ -270,36 +270,36 @@ public void UseAzureMonitor_EnableStandardMetrics_PropagatesCorrectly() } [Fact] - public void AzureMonitorOptions_EnablePerfCounters_DefaultValue_IsTrue() + public void AzureMonitorOptions_EnablePerformanceCounters_DefaultValue_IsTrue() { // Arrange & Act var options = new AzureMonitorOptions(); // Assert - Assert.True(options.EnablePerfCounters); + Assert.True(options.EnablePerformanceCounters); } [Fact] - public void AzureMonitorOptions_EnablePerfCounters_CanBeDisabled() + public void AzureMonitorOptions_EnablePerformanceCounters_CanBeDisabled() { // Arrange & Act var options = new AzureMonitorOptions { - EnablePerfCounters = false + EnablePerformanceCounters = false }; // Assert - Assert.False(options.EnablePerfCounters); + Assert.False(options.EnablePerformanceCounters); } [Fact] - public void AzureMonitorOptions_SetValueToExporterOptions_CopiesEnablePerfCounters() + public void AzureMonitorOptions_SetValueToExporterOptions_CopiesEnablePerformanceCounters() { // Arrange var azureMonitorOptions = new AzureMonitorOptions { ConnectionString = TestConnectionString, - EnablePerfCounters = false + EnablePerformanceCounters = false }; var exporterOptions = new AzureMonitorExporterOptions(); @@ -308,12 +308,12 @@ public void AzureMonitorOptions_SetValueToExporterOptions_CopiesEnablePerfCounte azureMonitorOptions.SetValueToExporterOptions(exporterOptions); // Assert - Assert.False(exporterOptions.EnablePerfCounters); + Assert.False(exporterOptions.EnablePerformanceCounters); Assert.Equal(TestConnectionString, exporterOptions.ConnectionString); } [Fact] - public void UseAzureMonitor_DefaultEnablePerfCounters() + public void UseAzureMonitor_DefaultEnablePerformanceCounters() { // Arrange var serviceCollection = new ServiceCollection(); @@ -332,16 +332,16 @@ public void UseAzureMonitor_DefaultEnablePerfCounters() var azureMonitorOptions = serviceProvider.GetRequiredService>() .Get(Options.DefaultName); - Assert.True(azureMonitorOptions.EnablePerfCounters); + Assert.True(azureMonitorOptions.EnablePerformanceCounters); var exporterOptions = serviceProvider.GetRequiredService>() .Get(Options.DefaultName); - Assert.True(exporterOptions.EnablePerfCounters); + Assert.True(exporterOptions.EnablePerformanceCounters); } [Fact] - public void UseAzureMonitor_CanDisablePerfCounters() + public void UseAzureMonitor_CanDisablePerformanceCounters() { // Arrange var serviceCollection = new ServiceCollection(); @@ -351,7 +351,7 @@ public void UseAzureMonitor_CanDisablePerfCounters() .UseAzureMonitor(options => { options.ConnectionString = TestConnectionString; - options.EnablePerfCounters = false; + options.EnablePerformanceCounters = false; options.DisableOfflineStorage = true; }); @@ -361,16 +361,16 @@ public void UseAzureMonitor_CanDisablePerfCounters() var azureMonitorOptions = serviceProvider.GetRequiredService>() .Get(Options.DefaultName); - Assert.False(azureMonitorOptions.EnablePerfCounters); + Assert.False(azureMonitorOptions.EnablePerformanceCounters); var exporterOptions = serviceProvider.GetRequiredService>() .Get(Options.DefaultName); - Assert.False(exporterOptions.EnablePerfCounters); + Assert.False(exporterOptions.EnablePerformanceCounters); } [Fact] - public void UseAzureMonitor_EnablePerfCounters_PropagatesCorrectly() + public void UseAzureMonitor_EnablePerformanceCounters_PropagatesCorrectly() { // Arrange var serviceCollection = new ServiceCollection(); @@ -380,7 +380,7 @@ public void UseAzureMonitor_EnablePerfCounters_PropagatesCorrectly() .UseAzureMonitor(options => { options.ConnectionString = TestConnectionString; - options.EnablePerfCounters = true; + options.EnablePerformanceCounters = true; options.DisableOfflineStorage = true; }); @@ -393,8 +393,8 @@ public void UseAzureMonitor_EnablePerfCounters_PropagatesCorrectly() var exporterOptions = serviceProvider.GetRequiredService>() .Get(Options.DefaultName); - Assert.Equal(azureMonitorOptions.EnablePerfCounters, exporterOptions.EnablePerfCounters); - Assert.True(exporterOptions.EnablePerfCounters); + Assert.Equal(azureMonitorOptions.EnablePerformanceCounters, exporterOptions.EnablePerformanceCounters); + Assert.True(exporterOptions.EnablePerformanceCounters); } [Fact] diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md index 235c37ebadcf..b72c1c9c6dd0 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/CHANGELOG.md @@ -21,7 +21,7 @@ ([#57549](https://github.com/Azure/azure-sdk-for-net/pull/57549)) * Made `AzureMonitorLogExporter`, `AzureMonitorMetricExporter`, and `AzureMonitorTraceExporter` public for direct use when configuring OpenTelemetry. ([#56344](https://github.com/Azure/azure-sdk-for-net/pull/56344)) -* Made options `EnablePerfCounters` and `EnableStandardMetrics` public in `AzureMonitorExporterOptions`. +* Made options `EnablePerformanceCounters` and `EnableStandardMetrics` public in `AzureMonitorExporterOptions`. ([#56344](https://github.com/Azure/azure-sdk-for-net/pull/56344)) ## 1.6.0 (2026-01-28) diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/api/Azure.Monitor.OpenTelemetry.Exporter.net10.0.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/api/Azure.Monitor.OpenTelemetry.Exporter.net10.0.cs index d16f9bc7ef91..76ed0659064b 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/api/Azure.Monitor.OpenTelemetry.Exporter.net10.0.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/api/Azure.Monitor.OpenTelemetry.Exporter.net10.0.cs @@ -15,7 +15,7 @@ public AzureMonitorExporterOptions(Azure.Monitor.OpenTelemetry.Exporter.AzureMon public Azure.Core.TokenCredential Credential { get { throw null; } set { } } public bool DisableOfflineStorage { get { throw null; } set { } } public bool EnableLiveMetrics { get { throw null; } set { } } - public bool EnablePerfCounters { get { throw null; } set { } } + public bool EnablePerformanceCounters { get { throw null; } set { } } public bool EnableStandardMetrics { get { throw null; } set { } } public bool EnableTraceBasedLogsSampler { get { throw null; } set { } } public float SamplingRatio { get { throw null; } set { } } diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/api/Azure.Monitor.OpenTelemetry.Exporter.net8.0.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/api/Azure.Monitor.OpenTelemetry.Exporter.net8.0.cs index d16f9bc7ef91..76ed0659064b 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/api/Azure.Monitor.OpenTelemetry.Exporter.net8.0.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/api/Azure.Monitor.OpenTelemetry.Exporter.net8.0.cs @@ -15,7 +15,7 @@ public AzureMonitorExporterOptions(Azure.Monitor.OpenTelemetry.Exporter.AzureMon public Azure.Core.TokenCredential Credential { get { throw null; } set { } } public bool DisableOfflineStorage { get { throw null; } set { } } public bool EnableLiveMetrics { get { throw null; } set { } } - public bool EnablePerfCounters { get { throw null; } set { } } + public bool EnablePerformanceCounters { get { throw null; } set { } } public bool EnableStandardMetrics { get { throw null; } set { } } public bool EnableTraceBasedLogsSampler { get { throw null; } set { } } public float SamplingRatio { get { throw null; } set { } } diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/api/Azure.Monitor.OpenTelemetry.Exporter.netstandard2.0.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/api/Azure.Monitor.OpenTelemetry.Exporter.netstandard2.0.cs index d16f9bc7ef91..76ed0659064b 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/api/Azure.Monitor.OpenTelemetry.Exporter.netstandard2.0.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/api/Azure.Monitor.OpenTelemetry.Exporter.netstandard2.0.cs @@ -15,7 +15,7 @@ public AzureMonitorExporterOptions(Azure.Monitor.OpenTelemetry.Exporter.AzureMon public Azure.Core.TokenCredential Credential { get { throw null; } set { } } public bool DisableOfflineStorage { get { throw null; } set { } } public bool EnableLiveMetrics { get { throw null; } set { } } - public bool EnablePerfCounters { get { throw null; } set { } } + public bool EnablePerformanceCounters { get { throw null; } set { } } public bool EnableStandardMetrics { get { throw null; } set { } } public bool EnableTraceBasedLogsSampler { get { throw null; } set { } } public float SamplingRatio { get { throw null; } set { } } diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterOptions.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterOptions.cs index 36065562f8f5..4b1499e42690 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterOptions.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/AzureMonitorExporterOptions.cs @@ -130,7 +130,7 @@ public enum ServiceVersion /// Gets or sets a value indicating whether performance counters should be collected. /// Default is true. /// - public bool EnablePerfCounters { get; set; } = true; + public bool EnablePerformanceCounters { get; set; } = true; internal void SetValueToLiveMetricsOptions(AzureMonitorLiveMetricsOptions liveMetricsOptions) { diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/Internals/StandardMetricsExtractionProcessor.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/Internals/StandardMetricsExtractionProcessor.cs index 5793b7d9e0f0..1bb538a3fd23 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/Internals/StandardMetricsExtractionProcessor.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/Internals/StandardMetricsExtractionProcessor.cs @@ -21,7 +21,7 @@ internal sealed class StandardMetricsExtractionProcessor : BaseProcessor _meterProvider; private readonly Meter? _standardMetricMeter; @@ -73,12 +73,12 @@ internal sealed class StandardMetricsExtractionProcessor : BaseProcessor for thread-safe lazy initialization of MeterProvider _meterProvider = new Lazy(() => { - if (!_enableStandardMetrics && !_enablePerfCounters) + if (!_enableStandardMetrics && !_enablePerformanceCounters) { return null; } @@ -90,7 +90,7 @@ internal StandardMetricsExtractionProcessor(AzureMonitorMetricExporter metricExp meterProviderBuilder.AddMeter(StandardMetricConstants.StandardMetricMeterName); } - if (_enablePerfCounters) + if (_enablePerformanceCounters) { meterProviderBuilder.AddMeter(PerfCounterConstants.PerfCounterMeterName); } @@ -115,7 +115,7 @@ internal StandardMetricsExtractionProcessor(AzureMonitorMetricExporter metricExp _dependencyDuration = _standardMetricMeter.CreateHistogram(StandardMetricConstants.DependencyDurationInstrumentName); } - if (_enablePerfCounters) + if (_enablePerformanceCounters) { _process = Process.GetCurrentProcess(); _perfCounterMeter = new Meter(PerfCounterConstants.PerfCounterMeterName); @@ -157,7 +157,7 @@ public override void OnEnd(Activity activity) } // Increment request count for rate calculation - if (_enablePerfCounters) + if (_enablePerformanceCounters) { Interlocked.Increment(ref _requestCount); } diff --git a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/StandardMetricTests.cs b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/StandardMetricTests.cs index e38e77d6abe4..efac1e101f81 100644 --- a/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/StandardMetricTests.cs +++ b/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/StandardMetricTests.cs @@ -632,7 +632,7 @@ public void ValidatePerfCountersDisabled() var traceTelemetryItems = new List(); var metricTelemetryItems = new List(); - var options = new AzureMonitorExporterOptions { EnablePerfCounters = false }; + var options = new AzureMonitorExporterOptions { EnablePerformanceCounters = false }; var standardMetricCustomProcessor = new StandardMetricsExtractionProcessor(new AzureMonitorMetricExporter(new MockTransmitter(metricTelemetryItems)), options); using var tracerProvider = Sdk.CreateTracerProviderBuilder() @@ -687,7 +687,7 @@ public void ValidateBothMetricsAndPerfCountersDisabled() var options = new AzureMonitorExporterOptions { EnableStandardMetrics = false, - EnablePerfCounters = false + EnablePerformanceCounters = false }; var standardMetricCustomProcessor = new StandardMetricsExtractionProcessor(new AzureMonitorMetricExporter(new MockTransmitter(metricTelemetryItems)), options); @@ -724,7 +724,7 @@ public void ValidateBothMetricsAndPerfCountersDisabled() [InlineData(true, false)] [InlineData(false, true)] [InlineData(false, false)] - public void ValidateEnablePropertiesConfiguration(bool enableStandardMetrics, bool enablePerfCounters) + public void ValidateEnablePropertiesConfiguration(bool enableStandardMetrics, bool enablePerformanceCounters) { var activitySource = new ActivitySource(nameof(StandardMetricTests.ValidateEnablePropertiesConfiguration)); var traceTelemetryItems = new List(); @@ -733,7 +733,7 @@ public void ValidateEnablePropertiesConfiguration(bool enableStandardMetrics, bo var options = new AzureMonitorExporterOptions { EnableStandardMetrics = enableStandardMetrics, - EnablePerfCounters = enablePerfCounters + EnablePerformanceCounters = enablePerformanceCounters }; var standardMetricCustomProcessor = new StandardMetricsExtractionProcessor(new AzureMonitorMetricExporter(new MockTransmitter(metricTelemetryItems)), options); @@ -785,7 +785,7 @@ public void ValidateEnablePropertiesConfiguration(bool enableStandardMetrics, bo var requestRate = FindMetric(PerfCounterConstants.RequestRateMetricIdValue); var privateBytes = FindMetric(PerfCounterConstants.ProcessPrivateBytesMetricIdValue); - if (enablePerfCounters) + if (enablePerformanceCounters) { // At least some perf counter metrics should be present Assert.True(requestRate != null || privateBytes != null, "Expected at least one performance counter metric when enabled");