From f4d059c2a81884f182c8975dbb650ef89578e17c Mon Sep 17 00:00:00 2001 From: Martin Taillefer Date: Mon, 29 May 2023 08:11:34 -0700 Subject: [PATCH] Update to latest --- .../ResourceUtilizationHealthCheck.cs | 4 +- .../ResourceUtilizationHealthCheckOptions.cs | 4 +- ...lizationTracker.cs => IResourceMonitor.cs} | 2 +- ...rBuilder.cs => IResourceMonitorBuilder.cs} | 6 +- .../Internal/ResourceUtilizationBuilder.cs | 6 +- ...tilizationTrackerOptionsManualValidator.cs | 4 +- ...ourceUtilizationTrackerOptionsValidator.cs | 2 +- .../ResourceUtilizationTrackerService.cs | 19 +- .../Linux/Internal/UserHz.cs | 13 +- .../Linux/LinuxUtilizationExtensions.cs | 8 +- ...ions.Diagnostics.ResourceMonitoring.csproj | 3 + ...nsions.Diagnostics.ResourceMonitoring.json | 20 +- .../NullResourceUtilizationTrackerService.cs | 14 - .../Null/NullUtilizationExtensions.cs | 32 ++ .../ResourceMonitoringExtensions.cs | 76 +--- ...ptions.cs => ResourceMonitoringOptions.cs} | 8 +- .../Windows/WindowsUtilizationExtensions.cs | 12 +- .../System.Cloud.Messaging.json | 405 ++++++++++++++++++ .../ResourceHealthCheckExtensionsTest.cs | 10 +- .../ResourceHealthCheckTest.cs | 4 +- .../Abstractions/Helpers/DummyTracker.cs | 2 +- ...llResourceUtilizationTrackerServiceTest.cs | 24 -- ...ceUtilizationAbstractionsExtensionsTest.cs | 18 +- .../Core/ResourceUtilizationBuilderTest.cs | 4 +- ...esourceUtilizationTrackerExtensionsTest.cs | 40 +- ...zationTrackerOptionsManualValidatorTest.cs | 4 +- .../ResourceUtilizationTrackerOptionsTest.cs | 2 +- ...eUtilizationTrackerOptionsValidatorTest.cs | 52 +-- .../ResourceUtilizationTrackerServiceTest.cs | 40 +- .../AcceptanceTestResourceUtilizationLinux.cs | 14 +- .../Linux/LinuxUtilizationExtensionsTest.cs | 10 +- .../WindowsUtilizationExtensionsTest.cs | 10 +- 32 files changed, 624 insertions(+), 248 deletions(-) rename src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/{IResourceUtilizationTracker.cs => IResourceMonitor.cs} (95%) rename src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/{IResourceUtilizationTrackerBuilder.cs => IResourceMonitorBuilder.cs} (78%) delete mode 100644 src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Null/NullResourceUtilizationTrackerService.cs create mode 100644 src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Null/NullUtilizationExtensions.cs rename src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/{ResourceUtilizationTrackerOptions.cs => ResourceMonitoringOptions.cs} (87%) create mode 100644 src/Libraries/System.Cloud.Messaging/System.Cloud.Messaging.json delete mode 100644 test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Abstractions/NullResourceUtilizationTest/NullResourceUtilizationTrackerServiceTest.cs diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheck.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheck.cs index db5252874b8..c3d104abe60 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheck.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheck.cs @@ -16,7 +16,7 @@ internal sealed class ResourceUtilizationHealthCheck : IHealthCheck { private static readonly Task _healthy = Task.FromResult(HealthCheckResult.Healthy()); private readonly ResourceUtilizationHealthCheckOptions _options; - private readonly IResourceUtilizationTracker _dataTracker; + private readonly IResourceMonitor _dataTracker; /// /// Initializes a new instance of the class. @@ -24,7 +24,7 @@ internal sealed class ResourceUtilizationHealthCheck : IHealthCheck /// The options. /// The datatracker. public ResourceUtilizationHealthCheck(IOptions options, - IResourceUtilizationTracker dataTracker) + IResourceMonitor dataTracker) { _options = Throw.IfMemberNull(options, options.Value); _dataTracker = Throw.IfNull(dataTracker); diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheckOptions.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheckOptions.cs index 5ff76506055..8fcf9e445a6 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheckOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheckOptions.cs @@ -21,7 +21,7 @@ public class ResourceUtilizationHealthCheckOptions /// /// /// The thresholds are periodically compared against the utilization samples provided by - /// the registered . + /// the registered . /// [ValidateObjectMembers] public ResourceUsageThresholds CpuThresholds { get; set; } = new ResourceUsageThresholds(); @@ -31,7 +31,7 @@ public class ResourceUtilizationHealthCheckOptions /// /// /// The thresholds are periodically compared against the utilization samples provided by - /// the registered . + /// the registered . /// [ValidateObjectMembers] public ResourceUsageThresholds MemoryThresholds { get; set; } = new ResourceUsageThresholds(); diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationTracker.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitor.cs similarity index 95% rename from src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationTracker.cs rename to src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitor.cs index 79435796149..7cb699f6121 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationTracker.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitor.cs @@ -8,7 +8,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring; /// /// Provides the ability to sample the system for current resource utilization. /// -public interface IResourceUtilizationTracker +public interface IResourceMonitor { /// /// Gets utilization for the specified time window. diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationTrackerBuilder.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs similarity index 78% rename from src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationTrackerBuilder.cs rename to src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs index 5cace7493b5..9d6b5752de7 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationTrackerBuilder.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs @@ -8,7 +8,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring; /// /// Helps building resource monitoring infra. /// -public interface IResourceUtilizationTrackerBuilder +public interface IResourceMonitorBuilder { /// /// Gets the service collection being manipulated by the builder. @@ -19,7 +19,7 @@ public interface IResourceUtilizationTrackerBuilder /// Adds implementation of the utilization data publisher. /// /// An implementation of that is used by the tracker to publish to 3rd parties. - /// Instance of for further configurations. - IResourceUtilizationTrackerBuilder AddPublisher() + /// Instance of for further configurations. + IResourceMonitorBuilder AddPublisher() where T : class, IResourceUtilizationPublisher; } diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationBuilder.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationBuilder.cs index b7702aaaf83..dfbf232b151 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationBuilder.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationBuilder.cs @@ -7,7 +7,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Internal; -internal sealed class ResourceUtilizationBuilder : IResourceUtilizationTrackerBuilder +internal sealed class ResourceUtilizationBuilder : IResourceMonitorBuilder { public IServiceCollection Services { get; } @@ -15,12 +15,12 @@ public ResourceUtilizationBuilder(IServiceCollection services) { services.TryAddSingleton(); services.TryAddEnumerable(ServiceDescriptor.Singleton(static sp => sp.GetRequiredService())); - services.TryAddSingleton(static sp => sp.GetRequiredService()); + services.TryAddSingleton(static sp => sp.GetRequiredService()); Services = services; } - public IResourceUtilizationTrackerBuilder AddPublisher() + public IResourceMonitorBuilder AddPublisher() where T : class, IResourceUtilizationPublisher { Services.TryAddEnumerable(ServiceDescriptor.Singleton()); diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationTrackerOptionsManualValidator.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationTrackerOptionsManualValidator.cs index 3e47078943c..979bb556f6d 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationTrackerOptionsManualValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationTrackerOptionsManualValidator.cs @@ -6,9 +6,9 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Internal; -internal sealed class ResourceUtilizationTrackerOptionsManualValidator : IValidateOptions +internal sealed class ResourceUtilizationTrackerOptionsManualValidator : IValidateOptions { - public ValidateOptionsResult Validate(string? name, ResourceUtilizationTrackerOptions options) + public ValidateOptionsResult Validate(string? name, ResourceMonitoringOptions options) { var builder = new ValidateOptionsResultBuilder(); diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationTrackerOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationTrackerOptionsValidator.cs index 9b13d9b6425..e7c38f1bbeb 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationTrackerOptionsValidator.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationTrackerOptionsValidator.cs @@ -7,6 +7,6 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring; [OptionsValidator] -internal sealed partial class ResourceUtilizationTrackerOptionsValidator : IValidateOptions +internal sealed partial class ResourceUtilizationTrackerOptionsValidator : IValidateOptions { } diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationTrackerService.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationTrackerService.cs index 27c998ac496..f022d02d3b1 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationTrackerService.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationTrackerService.cs @@ -13,17 +13,17 @@ using Microsoft.Extensions.Options; using Microsoft.Shared.Diagnostics; -namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring; +namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Internal; /// -/// The implementation of that computes average resource utilization over a configured period of time. +/// The implementation of that computes average resource utilization over a configured period of time. /// /// /// The class also acts as a hosted singleton, intended to be used to manage the /// background process of periodically inspecting and monitoring the utilization /// of an enclosing system. /// -internal sealed class ResourceUtilizationTrackerService : BackgroundService, IResourceUtilizationTracker +internal sealed class ResourceUtilizationTrackerService : BackgroundService, IResourceMonitor { /// /// The data source. @@ -57,7 +57,7 @@ internal sealed class ResourceUtilizationTrackerService : BackgroundService, IRe public ResourceUtilizationTrackerService( ISnapshotProvider provider, ILogger logger, - IOptions options, + IOptions options, IEnumerable publishers) : this(provider, logger, options, publishers, TimeProvider.System) { @@ -66,7 +66,7 @@ public ResourceUtilizationTrackerService( internal ResourceUtilizationTrackerService( ISnapshotProvider provider, ILogger logger, - IOptions options, + IOptions options, IEnumerable publishers, TimeProvider timeProvider) { @@ -103,9 +103,14 @@ public Utilization GetUtilization(TimeSpan window) _ = Throw.IfGreaterThan(window.Ticks, _collectionWindow.Ticks); var samplesToRead = (int)(window.Ticks / _samplingInterval.Ticks) + 1; - var (firstElement, lastElement) = _snapshotsStore.GetFirstAndLastFromWindow(samplesToRead); + (ResourceUtilizationSnapshot first, ResourceUtilizationSnapshot last) t; - return Calculator.CalculateUtilization(firstElement, lastElement, _provider.Resources); + lock (_snapshotsStore) + { + t = _snapshotsStore.GetFirstAndLastFromWindow(samplesToRead); + } + + return Calculator.CalculateUtilization(t.first, t.last, _provider.Resources); } /// diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/Internal/UserHz.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/Internal/UserHz.cs index f5ae3b4718b..0b2fa310021 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/Internal/UserHz.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/Internal/UserHz.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System; using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; @@ -22,7 +23,17 @@ internal sealed class UserHz : IUserHz { private const int SystemConfigurationUserHz = 2; - public long Value { get; } = NativeMethods.sysconf(SystemConfigurationUserHz); + public UserHz(IOperatingSystem os) + { + if (!os.IsLinux) + { + throw new NotSupportedException($"Method 'AddLinuxProvider' was used on '{Environment.OSVersion.Platform}' while it was expected to run on Linux."); + } + + Value = NativeMethods.sysconf(SystemConfigurationUserHz); + } + + public long Value { get; } #if !NET7_0_OR_GREATER private static class NativeMethods diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/LinuxUtilizationExtensions.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/LinuxUtilizationExtensions.cs index 45a377aa481..205e67d29df 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/LinuxUtilizationExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/LinuxUtilizationExtensions.cs @@ -13,7 +13,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring; /// -/// Extensions for adding Linux Resource Utilization providers. +/// Extensions for adding the Linux resource utilization provider. /// public static class LinuxUtilizationExtensions { @@ -23,7 +23,7 @@ public static class LinuxUtilizationExtensions /// The tracker builder instance used to add the provider. /// Returns the input tracker builder for call chaining. /// is . - public static IResourceUtilizationTrackerBuilder AddLinuxProvider(this IResourceUtilizationTrackerBuilder builder) + public static IResourceMonitorBuilder AddLinuxProvider(this IResourceMonitorBuilder builder) { _ = Throw.IfNull(builder); @@ -50,7 +50,7 @@ public static IResourceUtilizationTrackerBuilder AddLinuxProvider(this IResource /// /// . /// - public static IResourceUtilizationTrackerBuilder AddLinuxProvider(this IResourceUtilizationTrackerBuilder builder, IConfigurationSection section) + public static IResourceMonitorBuilder AddLinuxProvider(this IResourceMonitorBuilder builder, IConfigurationSection section) { _ = Throw.IfNull(builder); _ = Throw.IfNull(section); @@ -67,7 +67,7 @@ public static IResourceUtilizationTrackerBuilder AddLinuxProvider(this IResource /// The delegate for configuring of . /// Returns the builder. /// or is . - public static IResourceUtilizationTrackerBuilder AddLinuxProvider(this IResourceUtilizationTrackerBuilder builder, Action configure) + public static IResourceMonitorBuilder AddLinuxProvider(this IResourceMonitorBuilder builder, Action configure) { _ = Throw.IfNull(builder); _ = Throw.IfNull(configure); diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Microsoft.Extensions.Diagnostics.ResourceMonitoring.csproj b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Microsoft.Extensions.Diagnostics.ResourceMonitoring.csproj index 23be7a51db4..3d4645b319d 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Microsoft.Extensions.Diagnostics.ResourceMonitoring.csproj +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Microsoft.Extensions.Diagnostics.ResourceMonitoring.csproj @@ -44,6 +44,9 @@ + + + diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Microsoft.Extensions.Diagnostics.ResourceMonitoring.json b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Microsoft.Extensions.Diagnostics.ResourceMonitoring.json index 5b1ac25667f..c77362148db 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Microsoft.Extensions.Diagnostics.ResourceMonitoring.json +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Microsoft.Extensions.Diagnostics.ResourceMonitoring.json @@ -100,23 +100,25 @@ ] }, { - "Type": "static class Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceMonitoringExtensions", + "Type": "static class Microsoft.Extensions.Diagnostics.ResourceMonitoring.NullUtilizationExtensions", "Stage": "Stable", "Methods": [ { - "Member": "static Microsoft.Extensions.DependencyInjection.IServiceCollection Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceMonitoringExtensions.AddNullResourceUtilization(this Microsoft.Extensions.DependencyInjection.IServiceCollection services);", - "Stage": "Stable" - }, - { - "Member": "static Microsoft.Extensions.Diagnostics.ResourceMonitoring.IResourceUtilizationTrackerBuilder Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceMonitoringExtensions.AddNullResourceUtilizationProvider(this Microsoft.Extensions.Diagnostics.ResourceMonitoring.IResourceUtilizationTrackerBuilder builder);", + "Member": "static Microsoft.Extensions.Diagnostics.ResourceMonitoring.IResourceUtilizationTrackerBuilder Microsoft.Extensions.Diagnostics.ResourceMonitoring.NullUtilizationExtensions.AddNullResourceUtilizationProvider(this Microsoft.Extensions.Diagnostics.ResourceMonitoring.IResourceUtilizationTrackerBuilder builder);", "Stage": "Stable" - }, + } + ] + }, + { + "Type": "static class Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceMonitoringExtensions", + "Stage": "Stable", + "Methods": [ { - "Member": "static Microsoft.Extensions.DependencyInjection.IServiceCollection Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceMonitoringExtensions.AddResourceUtilization(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action configure);", + "Member": "static Microsoft.Extensions.DependencyInjection.IServiceCollection Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceMonitoringExtensions.AddResourceMonitoring(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action configure);", "Stage": "Stable" }, { - "Member": "static Microsoft.Extensions.Hosting.IHostBuilder Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceMonitoringExtensions.ConfigureResourceUtilization(this Microsoft.Extensions.Hosting.IHostBuilder builder, System.Action configure);", + "Member": "static Microsoft.Extensions.Hosting.IHostBuilder Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceMonitoringExtensions.ConfigureResourceMonitoring(this Microsoft.Extensions.Hosting.IHostBuilder builder, System.Action configure);", "Stage": "Stable" }, { diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Null/NullResourceUtilizationTrackerService.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Null/NullResourceUtilizationTrackerService.cs deleted file mode 100644 index dbc846aafbe..00000000000 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Null/NullResourceUtilizationTrackerService.cs +++ /dev/null @@ -1,14 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; - -namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring; - -internal sealed class NullResourceUtilizationTrackerService : IResourceUtilizationTracker -{ - private const double CpuUnits = 1.0; - private static readonly Utilization _utilization = new(0.0, 0U, new(CpuUnits, CpuUnits, long.MaxValue, long.MaxValue)); - - public Utilization GetUtilization(TimeSpan aggregationPeriod) => _utilization; -} diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Null/NullUtilizationExtensions.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Null/NullUtilizationExtensions.cs new file mode 100644 index 00000000000..b695d93e378 --- /dev/null +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Null/NullUtilizationExtensions.cs @@ -0,0 +1,32 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Diagnostics.ResourceMonitoring.Internal; +using Microsoft.Shared.Diagnostics; + +namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring; + +/// +/// Extensions for adding the null resource utilization provider. +/// +public static class NullUtilizationExtensions +{ + /// + /// Adds a platform independent and non-operational provider to the service collection. + /// + /// The builder instance used to configure the tracker. + /// The value of . + /// This extension method will add a non-operational provider that generates fixed CPU and Memory information. Don't use this in + /// production, but you can use it in development environment when you're uncertain about the underlying platform and don't need real data + /// to be generated. + /// If is . + public static IResourceMonitorBuilder AddNullProvider(this IResourceMonitorBuilder builder) + { + _ = Throw.IfNull(builder); + + _ = builder.Services.AddSingleton(); + return builder; + } +} diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitoringExtensions.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitoringExtensions.cs index 4d66cf3e82f..36a0ca3c75d 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitoringExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitoringExtensions.cs @@ -14,20 +14,20 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring; /// -/// Lets you configure and register resource utilization components. +/// Lets you configure and register resource monitoring components. /// public static class ResourceMonitoringExtensions { /// - /// Configures and adds an implementation to your service collection. + /// Configures and adds an implementation to a service collection. /// - /// The dependency injection container to add the tracker to. - /// Delegate to configure . + /// The dependency injection container to add the monitor to. + /// Delegate to configure . /// The value of . /// If either or are . - public static IServiceCollection AddResourceUtilization( + public static IServiceCollection AddResourceMonitoring( this IServiceCollection services, - Action configure) + Action configure) { _ = Throw.IfNull(services); _ = Throw.IfNull(configure); @@ -36,15 +36,15 @@ public static IServiceCollection AddResourceUtilization( } /// - /// Configures and adds an implementation to your host. + /// Configures and adds an implementation to a host. /// /// The host builder to bind to. - /// Delegate to configure . + /// Delegate to configure . /// The value of . /// If either or are . - public static IHostBuilder ConfigureResourceUtilization( + public static IHostBuilder ConfigureResourceMonitoring( this IHostBuilder builder, - Action configure) + Action configure) { _ = Throw.IfNull(builder); _ = Throw.IfNull(configure); @@ -58,12 +58,12 @@ public static IHostBuilder ConfigureResourceUtilization( /// Configures the resource utilization tracker. /// /// The builder instance used to configure the tracker. - /// Delegate to configure . + /// Delegate to configure . /// The value of . /// If either or are . - public static IResourceUtilizationTrackerBuilder ConfigureTracker( - this IResourceUtilizationTrackerBuilder builder, - Action configure) + public static IResourceMonitorBuilder ConfigureMonitor( + this IResourceMonitorBuilder builder, + Action configure) { _ = Throw.IfNull(builder); _ = Throw.IfNull(configure); @@ -75,15 +75,15 @@ public static IResourceUtilizationTrackerBuilder ConfigureTracker( /// Configures the resource utilization tracker. /// /// The builder instance used to configure the tracker. - /// The to use for configuring . + /// The to use for configuring . /// The value of . /// If either or are . [UnconditionalSuppressMessage( "Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "Addressed with [DynamicDependency]")] - public static IResourceUtilizationTrackerBuilder ConfigureTracker( - this IResourceUtilizationTrackerBuilder builder, + public static IResourceMonitorBuilder ConfigureMonitor( + this IResourceMonitorBuilder builder, IConfigurationSection section) { _ = Throw.IfNull(builder); @@ -92,51 +92,21 @@ public static IResourceUtilizationTrackerBuilder ConfigureTracker( return builder.ConfigureTrackerInternal(configure: optionsBuilder => optionsBuilder.Bind(section)); } - /// - /// Adds Null Resource Utilization services to the . - /// - /// The DI container to bind to. - /// Returns the input container. - /// When is . - public static IServiceCollection AddNullResourceUtilization(this IServiceCollection services) - { - services = Throw.IfNull(services); - - return services.AddSingleton(); - } - - /// - /// Adds a platform independent and non-operational to the service collection. - /// - /// The builder instance used to configure the tracker. - /// The value of . - /// This extension method will add a non-operational provider that generates fixed CPU and Memory information. Don't use this in - /// production, but you can use it in development environment when you're uncertain about the underlying platform and don't need real data - /// to be generated. - /// If is . - public static IResourceUtilizationTrackerBuilder AddNullResourceUtilizationProvider(this IResourceUtilizationTrackerBuilder builder) - { - _ = Throw.IfNull(builder); - - _ = builder.Services.AddSingleton(); - return builder; - } - private static IServiceCollection AddResourceUtilizationInternal( this IServiceCollection services, - Action configure) + Action configure) { configure.Invoke(new ResourceUtilizationBuilder(services)); return services; } - private static IResourceUtilizationTrackerBuilder ConfigureTrackerInternal( - this IResourceUtilizationTrackerBuilder builder, - Action> configure) + private static IResourceMonitorBuilder ConfigureTrackerInternal( + this IResourceMonitorBuilder builder, + Action> configure) { var optionsBuilder = builder - .Services.AddValidatedOptions() - .Services.AddValidatedOptions(); + .Services.AddValidatedOptions() + .Services.AddValidatedOptions(); configure.Invoke(optionsBuilder); return builder; diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceUtilizationTrackerOptions.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitoringOptions.cs similarity index 87% rename from src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceUtilizationTrackerOptions.cs rename to src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitoringOptions.cs index d6dc0c5bfc2..a09bce70cc7 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceUtilizationTrackerOptions.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitoringOptions.cs @@ -8,9 +8,9 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring; /// -/// Options for . +/// Options for . /// -public class ResourceUtilizationTrackerOptions +public class ResourceMonitoringOptions { /// /// Internal for testing. @@ -23,7 +23,7 @@ public class ResourceUtilizationTrackerOptions internal static readonly TimeSpan DefaultSamplingInterval = TimeSpan.FromSeconds(1); /// - /// Gets or sets the maximum time window of which utilization can be requested. + /// Gets or sets the maximum time window for which utilization can be requested. /// /// /// Default set to 5 seconds. @@ -32,7 +32,7 @@ public class ResourceUtilizationTrackerOptions public TimeSpan CollectionWindow { get; set; } = DefaultCollectionWindow; /// - /// Gets or sets the interval at which a new sample is captured. + /// Gets or sets the interval at which a new utilization sample is captured. /// /// /// Default set to 1 second. diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsUtilizationExtensions.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsUtilizationExtensions.cs index 76daed5931a..56ef6737a26 100644 --- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsUtilizationExtensions.cs +++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsUtilizationExtensions.cs @@ -15,7 +15,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring; /// -/// Lets you track memory and CPU usage of applications. +/// Extensions for adding the Windows resource utilization provider. /// public static class WindowsUtilizationExtensions { @@ -26,7 +26,7 @@ public static class WindowsUtilizationExtensions /// Returns the input tracker builder for call chaining. /// is . [ExcludeFromCodeCoverage] - public static IResourceUtilizationTrackerBuilder AddWindowsProvider(this IResourceUtilizationTrackerBuilder builder) + public static IResourceMonitorBuilder AddWindowsProvider(this IResourceMonitorBuilder builder) { _ = Throw.IfNull(builder); @@ -48,7 +48,7 @@ public static IResourceUtilizationTrackerBuilder AddWindowsProvider(this IResour /// The tracker builder instance used to add the publisher. /// Returns the input tracker builder for call chaining. /// is . - public static IResourceUtilizationTrackerBuilder AddWindowsPerfCounterPublisher(this IResourceUtilizationTrackerBuilder builder) + public static IResourceMonitorBuilder AddWindowsPerfCounterPublisher(this IResourceMonitorBuilder builder) { _ = Throw.IfNull(builder); _ = builder @@ -68,7 +68,7 @@ public static IResourceUtilizationTrackerBuilder AddWindowsPerfCounterPublisher( /// . /// [Experimental] - public static IResourceUtilizationTrackerBuilder AddWindowsCounters(this IResourceUtilizationTrackerBuilder builder) + public static IResourceMonitorBuilder AddWindowsCounters(this IResourceMonitorBuilder builder) { _ = Throw.IfNull(builder); @@ -98,7 +98,7 @@ public static IResourceUtilizationTrackerBuilder AddWindowsCounters(this IResour /// . /// [Experimental] - public static IResourceUtilizationTrackerBuilder AddWindowsCounters(this IResourceUtilizationTrackerBuilder builder, IConfigurationSection section) + public static IResourceMonitorBuilder AddWindowsCounters(this IResourceMonitorBuilder builder, IConfigurationSection section) { _ = Throw.IfNull(builder); _ = Throw.IfNull(section); @@ -130,7 +130,7 @@ public static IResourceUtilizationTrackerBuilder AddWindowsCounters(this IResour /// . /// [Experimental] - public static IResourceUtilizationTrackerBuilder AddWindowsCounters(this IResourceUtilizationTrackerBuilder builder, Action configure) + public static IResourceMonitorBuilder AddWindowsCounters(this IResourceMonitorBuilder builder, Action configure) { _ = Throw.IfNull(builder); _ = Throw.IfNull(configure); diff --git a/src/Libraries/System.Cloud.Messaging/System.Cloud.Messaging.json b/src/Libraries/System.Cloud.Messaging/System.Cloud.Messaging.json new file mode 100644 index 00000000000..bbe0e471e1e --- /dev/null +++ b/src/Libraries/System.Cloud.Messaging/System.Cloud.Messaging.json @@ -0,0 +1,405 @@ +{ + "Name": "System.Cloud.Messaging, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", + "Types": [ + { + "Type": "static class System.Cloud.Messaging.AsyncProcessingPipelineBuilderExtensions", + "Stage": "Experimental", + "Methods": [ + { + "Member": "static System.Cloud.Messaging.IAsyncProcessingPipelineBuilder System.Cloud.Messaging.AsyncProcessingPipelineBuilderExtensions.AddMessageMiddleware(this System.Cloud.Messaging.IAsyncProcessingPipelineBuilder pipelineBuilder);", + "Stage": "Experimental" + }, + { + "Member": "static System.Cloud.Messaging.IAsyncProcessingPipelineBuilder System.Cloud.Messaging.AsyncProcessingPipelineBuilderExtensions.AddMessageMiddleware(this System.Cloud.Messaging.IAsyncProcessingPipelineBuilder pipelineBuilder, System.Func implementationFactory);", + "Stage": "Experimental" + }, + { + "Member": "static System.Cloud.Messaging.IAsyncProcessingPipelineBuilder System.Cloud.Messaging.AsyncProcessingPipelineBuilderExtensions.AddNamedSingleton(this System.Cloud.Messaging.IAsyncProcessingPipelineBuilder pipelineBuilder);", + "Stage": "Experimental" + }, + { + "Member": "static System.Cloud.Messaging.IAsyncProcessingPipelineBuilder System.Cloud.Messaging.AsyncProcessingPipelineBuilderExtensions.AddNamedSingleton(this System.Cloud.Messaging.IAsyncProcessingPipelineBuilder pipelineBuilder, System.Func implementationFactory);", + "Stage": "Experimental" + }, + { + "Member": "static System.Cloud.Messaging.IAsyncProcessingPipelineBuilder System.Cloud.Messaging.AsyncProcessingPipelineBuilderExtensions.AddNamedSingleton(this System.Cloud.Messaging.IAsyncProcessingPipelineBuilder pipelineBuilder, string name, System.Func implementationFactory);", + "Stage": "Experimental" + }, + { + "Member": "static System.Cloud.Messaging.IAsyncProcessingPipelineBuilder System.Cloud.Messaging.AsyncProcessingPipelineBuilderExtensions.ConfigureMessageConsumer(this System.Cloud.Messaging.IAsyncProcessingPipelineBuilder pipelineBuilder);", + "Stage": "Experimental" + }, + { + "Member": "static System.Cloud.Messaging.IAsyncProcessingPipelineBuilder System.Cloud.Messaging.AsyncProcessingPipelineBuilderExtensions.ConfigureMessageConsumer(this System.Cloud.Messaging.IAsyncProcessingPipelineBuilder pipelineBuilder, System.Func implementationFactory);", + "Stage": "Experimental" + }, + { + "Member": "static System.Cloud.Messaging.IAsyncProcessingPipelineBuilder System.Cloud.Messaging.AsyncProcessingPipelineBuilderExtensions.ConfigureMessageDestination(this System.Cloud.Messaging.IAsyncProcessingPipelineBuilder pipelineBuilder);", + "Stage": "Experimental" + }, + { + "Member": "static System.Cloud.Messaging.IAsyncProcessingPipelineBuilder System.Cloud.Messaging.AsyncProcessingPipelineBuilderExtensions.ConfigureMessageDestination(this System.Cloud.Messaging.IAsyncProcessingPipelineBuilder pipelineBuilder, System.Func implementationFactory);", + "Stage": "Experimental" + }, + { + "Member": "static System.Cloud.Messaging.IAsyncProcessingPipelineBuilder System.Cloud.Messaging.AsyncProcessingPipelineBuilderExtensions.ConfigureMessageDestination(this System.Cloud.Messaging.IAsyncProcessingPipelineBuilder pipelineBuilder, string name, System.Func implementationFactory);", + "Stage": "Experimental" + }, + { + "Member": "static System.Cloud.Messaging.IAsyncProcessingPipelineBuilder System.Cloud.Messaging.AsyncProcessingPipelineBuilderExtensions.ConfigureMessageSource(this System.Cloud.Messaging.IAsyncProcessingPipelineBuilder pipelineBuilder);", + "Stage": "Experimental" + }, + { + "Member": "static System.Cloud.Messaging.IAsyncProcessingPipelineBuilder System.Cloud.Messaging.AsyncProcessingPipelineBuilderExtensions.ConfigureMessageSource(this System.Cloud.Messaging.IAsyncProcessingPipelineBuilder pipelineBuilder, System.Func implementationFactory);", + "Stage": "Experimental" + }, + { + "Member": "static System.Cloud.Messaging.IAsyncProcessingPipelineBuilder System.Cloud.Messaging.AsyncProcessingPipelineBuilderExtensions.ConfigureTerminalMessageDelegate(this System.Cloud.Messaging.IAsyncProcessingPipelineBuilder pipelineBuilder);", + "Stage": "Experimental" + }, + { + "Member": "static System.Cloud.Messaging.IAsyncProcessingPipelineBuilder System.Cloud.Messaging.AsyncProcessingPipelineBuilderExtensions.ConfigureTerminalMessageDelegate(this System.Cloud.Messaging.IAsyncProcessingPipelineBuilder pipelineBuilder, System.Func implementationFactory);", + "Stage": "Experimental" + }, + { + "Member": "static void System.Cloud.Messaging.AsyncProcessingPipelineBuilderExtensions.RunConsumerAsBackgroundService(this System.Cloud.Messaging.IAsyncProcessingPipelineBuilder pipelineBuilder);", + "Stage": "Experimental" + } + ] + }, + { + "Type": "sealed class System.Cloud.Messaging.DefaultMessageConsumer : System.Cloud.Messaging.MessageConsumer", + "Stage": "Experimental", + "Methods": [ + { + "Member": "System.Cloud.Messaging.DefaultMessageConsumer.DefaultMessageConsumer(System.Cloud.Messaging.IMessageSource messageSource, System.Collections.Generic.IReadOnlyList middlewares, System.Cloud.Messaging.MessageDelegate messageDelegate, Microsoft.Extensions.Logging.ILogger logger);", + "Stage": "Experimental" + }, + { + "Member": "override System.Threading.Tasks.ValueTask System.Cloud.Messaging.DefaultMessageConsumer.HandleMessageProcessingFailureAsync(System.Cloud.Messaging.MessageContext context, System.Exception exception);", + "Stage": "Experimental" + }, + { + "Member": "override System.Threading.Tasks.ValueTask System.Cloud.Messaging.DefaultMessageConsumer.ProcessingStepAsync(System.Threading.CancellationToken cancellationToken);", + "Stage": "Experimental" + } + ] + }, + { + "Type": "interface System.Cloud.Messaging.IAsyncProcessingPipelineBuilder", + "Stage": "Experimental", + "Properties": [ + { + "Member": "string System.Cloud.Messaging.IAsyncProcessingPipelineBuilder.PipelineName { get; }", + "Stage": "Experimental" + }, + { + "Member": "Microsoft.Extensions.DependencyInjection.IServiceCollection System.Cloud.Messaging.IAsyncProcessingPipelineBuilder.Services { get; }", + "Stage": "Experimental" + } + ] + }, + { + "Type": "interface System.Cloud.Messaging.IMessageDestination", + "Stage": "Experimental", + "Methods": [ + { + "Member": "System.Threading.Tasks.ValueTask System.Cloud.Messaging.IMessageDestination.WriteAsync(System.Cloud.Messaging.MessageContext context);", + "Stage": "Experimental" + } + ] + }, + { + "Type": "interface System.Cloud.Messaging.IMessageMiddleware", + "Stage": "Experimental", + "Methods": [ + { + "Member": "System.Threading.Tasks.ValueTask System.Cloud.Messaging.IMessageMiddleware.InvokeAsync(System.Cloud.Messaging.MessageContext context, System.Cloud.Messaging.MessageDelegate nextHandler);", + "Stage": "Experimental" + } + ] + }, + { + "Type": "interface System.Cloud.Messaging.IMessagePostponeFeature", + "Stage": "Experimental", + "Methods": [ + { + "Member": "System.Threading.Tasks.ValueTask System.Cloud.Messaging.IMessagePostponeFeature.PostponeAsync(System.TimeSpan delay, System.Threading.CancellationToken cancellationToken);", + "Stage": "Experimental" + } + ] + }, + { + "Type": "interface System.Cloud.Messaging.IMessageSource", + "Stage": "Experimental", + "Methods": [ + { + "Member": "System.Threading.Tasks.ValueTask System.Cloud.Messaging.IMessageSource.ReadAsync(System.Threading.CancellationToken cancellationToken);", + "Stage": "Experimental" + }, + { + "Member": "void System.Cloud.Messaging.IMessageSource.Release(System.Cloud.Messaging.MessageContext context);", + "Stage": "Experimental" + } + ] + }, + { + "Type": "interface System.Cloud.Messaging.IMessageVisibilityDelayFeature", + "Stage": "Experimental", + "Properties": [ + { + "Member": "System.TimeSpan System.Cloud.Messaging.IMessageVisibilityDelayFeature.VisibilityDelay { get; }", + "Stage": "Experimental" + } + ] + }, + { + "Type": "interface System.Cloud.Messaging.ISerializedMessagePayloadFeature where T : notnull", + "Stage": "Experimental", + "Properties": [ + { + "Member": "T System.Cloud.Messaging.ISerializedMessagePayloadFeature.Payload { get; }", + "Stage": "Experimental" + } + ] + }, + { + "Type": "static class System.Cloud.Messaging.LatencyRecorderMiddlewareExtensions", + "Stage": "Experimental", + "Methods": [ + { + "Member": "static System.Cloud.Messaging.IAsyncProcessingPipelineBuilder System.Cloud.Messaging.LatencyRecorderMiddlewareExtensions.AddLatencyContextMiddleware(this System.Cloud.Messaging.IAsyncProcessingPipelineBuilder pipelineBuilder);", + "Stage": "Experimental" + }, + { + "Member": "static System.Cloud.Messaging.IAsyncProcessingPipelineBuilder System.Cloud.Messaging.LatencyRecorderMiddlewareExtensions.AddLatencyContextMiddleware(this System.Cloud.Messaging.IAsyncProcessingPipelineBuilder pipelineBuilder, System.Func implementationFactory, System.Func> exporterFactory);", + "Stage": "Experimental" + }, + { + "Member": "static System.Cloud.Messaging.IAsyncProcessingPipelineBuilder System.Cloud.Messaging.LatencyRecorderMiddlewareExtensions.AddLatencyContextMiddleware(this System.Cloud.Messaging.IAsyncProcessingPipelineBuilder pipelineBuilder, System.Func implementationFactory);", + "Stage": "Experimental" + }, + { + "Member": "static System.Cloud.Messaging.IAsyncProcessingPipelineBuilder System.Cloud.Messaging.LatencyRecorderMiddlewareExtensions.AddLatencyRecorderMessageMiddleware(this System.Cloud.Messaging.IAsyncProcessingPipelineBuilder pipelineBuilder, Microsoft.Extensions.Telemetry.Latency.MeasureToken successMeasureToken, Microsoft.Extensions.Telemetry.Latency.MeasureToken failureMeasureToken);", + "Stage": "Experimental" + } + ] + }, + { + "Type": "abstract class System.Cloud.Messaging.MessageConsumer", + "Stage": "Experimental", + "Methods": [ + { + "Member": "System.Cloud.Messaging.MessageConsumer.MessageConsumer(System.Cloud.Messaging.IMessageSource messageSource, System.Collections.Generic.IReadOnlyList messageMiddlewares, System.Cloud.Messaging.MessageDelegate terminalDelegate, Microsoft.Extensions.Logging.ILogger logger);", + "Stage": "Experimental" + }, + { + "Member": "virtual System.Threading.Tasks.ValueTask System.Cloud.Messaging.MessageConsumer.ExecuteAsync(System.Threading.CancellationToken cancellationToken);", + "Stage": "Experimental" + }, + { + "Member": "virtual System.Threading.Tasks.ValueTask System.Cloud.Messaging.MessageConsumer.FetchAndProcessMessageAsync(System.Threading.CancellationToken cancellationToken);", + "Stage": "Experimental" + }, + { + "Member": "virtual System.Threading.Tasks.ValueTask System.Cloud.Messaging.MessageConsumer.FetchMessageAsync(System.Threading.CancellationToken cancellationToken);", + "Stage": "Experimental" + }, + { + "Member": "virtual System.Threading.Tasks.ValueTask System.Cloud.Messaging.MessageConsumer.HandleMessageProcessingCompletionAsync(System.Cloud.Messaging.MessageContext context);", + "Stage": "Experimental" + }, + { + "Member": "abstract System.Threading.Tasks.ValueTask System.Cloud.Messaging.MessageConsumer.HandleMessageProcessingFailureAsync(System.Cloud.Messaging.MessageContext context, System.Exception exception);", + "Stage": "Experimental" + }, + { + "Member": "abstract System.Threading.Tasks.ValueTask System.Cloud.Messaging.MessageConsumer.ProcessingStepAsync(System.Threading.CancellationToken cancellationToken);", + "Stage": "Experimental" + }, + { + "Member": "virtual System.Threading.Tasks.ValueTask System.Cloud.Messaging.MessageConsumer.ProcessMessageAsync(System.Cloud.Messaging.MessageContext context);", + "Stage": "Experimental" + }, + { + "Member": "virtual void System.Cloud.Messaging.MessageConsumer.ReleaseContext(System.Cloud.Messaging.MessageContext messageContext);", + "Stage": "Experimental" + }, + { + "Member": "virtual bool System.Cloud.Messaging.MessageConsumer.ShouldStopConsumer(System.Cloud.Messaging.MessageContext messageContext);", + "Stage": "Experimental" + } + ], + "Properties": [ + { + "Member": "Microsoft.Extensions.Logging.ILogger System.Cloud.Messaging.MessageConsumer.Logger { get; }", + "Stage": "Experimental" + }, + { + "Member": "System.Cloud.Messaging.IMessageSource System.Cloud.Messaging.MessageConsumer.MessageSource { get; }", + "Stage": "Experimental" + }, + { + "Member": "System.Cloud.Messaging.MessageDelegate System.Cloud.Messaging.MessageConsumer.PipelineDelegate { get; }", + "Stage": "Experimental" + } + ] + }, + { + "Type": "abstract class System.Cloud.Messaging.MessageContext", + "Stage": "Experimental", + "Methods": [ + { + "Member": "System.Cloud.Messaging.MessageContext.MessageContext(Microsoft.AspNetCore.Http.Features.IFeatureCollection features, System.ReadOnlyMemory sourcePayload);", + "Stage": "Experimental" + }, + { + "Member": "void System.Cloud.Messaging.MessageContext.AddDestinationFeature(T feature);", + "Stage": "Experimental" + }, + { + "Member": "void System.Cloud.Messaging.MessageContext.AddFeature(T feature);", + "Stage": "Experimental" + }, + { + "Member": "void System.Cloud.Messaging.MessageContext.AddSourceFeature(T feature);", + "Stage": "Experimental" + }, + { + "Member": "string System.Cloud.Messaging.MessageContext.GetUTF8SourcePayloadAsString();", + "Stage": "Experimental" + }, + { + "Member": "abstract System.Threading.Tasks.ValueTask System.Cloud.Messaging.MessageContext.MarkCompleteAsync(System.Threading.CancellationToken cancellationToken);", + "Stage": "Experimental" + }, + { + "Member": "void System.Cloud.Messaging.MessageContext.SetDestinationPayload(System.ReadOnlyMemory payload);", + "Stage": "Experimental" + }, + { + "Member": "bool System.Cloud.Messaging.MessageContext.TryGetUTF8DestinationPayloadAsString(out string? payload);", + "Stage": "Experimental" + } + ], + "Properties": [ + { + "Member": "Microsoft.AspNetCore.Http.Features.IFeatureCollection? System.Cloud.Messaging.MessageContext.DestinationFeatures { get; private set; }", + "Stage": "Experimental" + }, + { + "Member": "System.ReadOnlyMemory? System.Cloud.Messaging.MessageContext.DestinationPayload { get; private set; }", + "Stage": "Experimental" + }, + { + "Member": "Microsoft.AspNetCore.Http.Features.IFeatureCollection System.Cloud.Messaging.MessageContext.Features { get; }", + "Stage": "Experimental" + }, + { + "Member": "System.Threading.CancellationToken System.Cloud.Messaging.MessageContext.MessageCancelledToken { get; set; }", + "Stage": "Experimental" + }, + { + "Member": "Microsoft.AspNetCore.Http.Features.IFeatureCollection? System.Cloud.Messaging.MessageContext.SourceFeatures { get; private set; }", + "Stage": "Experimental" + }, + { + "Member": "System.ReadOnlyMemory System.Cloud.Messaging.MessageContext.SourcePayload { get; private set; }", + "Stage": "Experimental" + } + ] + }, + { + "Type": "delegate System.Threading.Tasks.ValueTask System.Cloud.Messaging.MessageDelegate(System.Cloud.Messaging.MessageContext context)", + "Stage": "Experimental" + }, + { + "Type": "static class System.Cloud.Messaging.MessageLatencyContextFeatureExtensions", + "Stage": "Experimental", + "Methods": [ + { + "Member": "static void System.Cloud.Messaging.MessageLatencyContextFeatureExtensions.SetLatencyContext(this System.Cloud.Messaging.MessageContext context, Microsoft.Extensions.Telemetry.Latency.ILatencyContext latencyContext);", + "Stage": "Experimental" + }, + { + "Member": "static bool System.Cloud.Messaging.MessageLatencyContextFeatureExtensions.TryGetLatencyContext(this System.Cloud.Messaging.MessageContext context, out Microsoft.Extensions.Telemetry.Latency.ILatencyContext? latencyContext);", + "Stage": "Experimental" + } + ] + }, + { + "Type": "static class System.Cloud.Messaging.MessagePostponeFeatureExtensions", + "Stage": "Experimental", + "Methods": [ + { + "Member": "static System.Threading.Tasks.ValueTask System.Cloud.Messaging.MessagePostponeFeatureExtensions.PostponeAsync(this System.Cloud.Messaging.MessageContext context, System.TimeSpan delay, System.Threading.CancellationToken cancellationToken);", + "Stage": "Experimental" + }, + { + "Member": "static void System.Cloud.Messaging.MessagePostponeFeatureExtensions.SetMessagePostponeFeature(this System.Cloud.Messaging.MessageContext context, System.Cloud.Messaging.IMessagePostponeFeature messagePostponeFeature);", + "Stage": "Experimental" + } + ] + }, + { + "Type": "static class System.Cloud.Messaging.MessageVisibilityDelayFeatureExtensions", + "Stage": "Experimental", + "Methods": [ + { + "Member": "static void System.Cloud.Messaging.MessageVisibilityDelayFeatureExtensions.SetVisibilityDelay(this System.Cloud.Messaging.MessageContext context, System.TimeSpan visibilityDelay);", + "Stage": "Experimental" + }, + { + "Member": "static bool System.Cloud.Messaging.MessageVisibilityDelayFeatureExtensions.TryGetVisibilityDelay(this System.Cloud.Messaging.MessageContext context, out System.Cloud.Messaging.IMessageVisibilityDelayFeature? visibilityDelay);", + "Stage": "Experimental" + } + ] + }, + { + "Type": "static class System.Cloud.Messaging.SerializedMessagePayloadFeatureExtensions", + "Stage": "Experimental", + "Methods": [ + { + "Member": "static T System.Cloud.Messaging.SerializedMessagePayloadFeatureExtensions.GetSerializedPayload(this System.Cloud.Messaging.MessageContext context);", + "Stage": "Experimental" + }, + { + "Member": "static void System.Cloud.Messaging.SerializedMessagePayloadFeatureExtensions.SetSerializedPayload(this System.Cloud.Messaging.MessageContext context, T payload);", + "Stage": "Experimental" + }, + { + "Member": "static bool System.Cloud.Messaging.SerializedMessagePayloadFeatureExtensions.TryGetSerializedPayload(this System.Cloud.Messaging.MessageContext context, out T? payload);", + "Stage": "Experimental" + } + ] + }, + { + "Type": "static class System.Cloud.Messaging.ServiceCollectionExtensions", + "Stage": "Experimental", + "Methods": [ + { + "Member": "static System.Cloud.Messaging.IAsyncProcessingPipelineBuilder System.Cloud.Messaging.ServiceCollectionExtensions.AddAsyncPipeline(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, string pipelineName);", + "Stage": "Experimental" + } + ] + }, + { + "Type": "static class System.Cloud.Messaging.ServiceProviderExtensions", + "Stage": "Experimental", + "Methods": [ + { + "Member": "static System.Cloud.Messaging.MessageDelegate System.Cloud.Messaging.ServiceProviderExtensions.GetMessageDelegate(this System.IServiceProvider serviceProvider, string pipelineName);", + "Stage": "Experimental" + }, + { + "Member": "static System.Collections.Generic.IReadOnlyList System.Cloud.Messaging.ServiceProviderExtensions.GetMessageMiddlewares(this System.IServiceProvider serviceProvider, string pipelineName);", + "Stage": "Experimental" + }, + { + "Member": "static System.Cloud.Messaging.IMessageSource System.Cloud.Messaging.ServiceProviderExtensions.GetMessageSource(this System.IServiceProvider serviceProvider, string pipelineName);", + "Stage": "Experimental" + } + ] + } + ] +} \ No newline at end of file diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization.Tests/ResourceHealthCheckExtensionsTest.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization.Tests/ResourceHealthCheckExtensionsTest.cs index 618133aa415..164d45e6b9a 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization.Tests/ResourceHealthCheckExtensionsTest.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization.Tests/ResourceHealthCheckExtensionsTest.cs @@ -17,7 +17,7 @@ public class ResourceHealthCheckExtensionsTest [Fact] public async Task Extensions_AddResourceUtilizationHealthCheck() { - var dataTracker = new Mock(); + var dataTracker = new Mock(); var samplingWindow = TimeSpan.FromSeconds(1); var serviceCollection = new ServiceCollection(); @@ -37,7 +37,7 @@ public async Task Extensions_AddResourceUtilizationHealthCheck() [Fact] public async Task Extensions_AddResourceUtilizationHealthCheck_WithAction() { - var dataTracker = new Mock(); + var dataTracker = new Mock(); var samplingWindow = TimeSpan.FromSeconds(1); var serviceCollection = new ServiceCollection(); @@ -60,7 +60,7 @@ public async Task Extensions_AddResourceUtilizationHealthCheck_WithAction() [Fact] public async Task Extensions_AddResourceUtilizationHealthCheck_WithActionAndTags() { - var dataTracker = new Mock(); + var dataTracker = new Mock(); var samplingWindow = TimeSpan.FromSeconds(1); var serviceCollection = new ServiceCollection(); @@ -84,7 +84,7 @@ public async Task Extensions_AddResourceUtilizationHealthCheck_WithActionAndTags [Fact] public async Task Extensions_AddResourceUtilizationHealthCheck_WithConfigurationSection() { - var dataTracker = new Mock(); + var dataTracker = new Mock(); var samplingWindow = TimeSpan.FromSeconds(5); var serviceCollection = new ServiceCollection(); @@ -103,7 +103,7 @@ public async Task Extensions_AddResourceUtilizationHealthCheck_WithConfiguration [Fact] public async Task Extensions_AddResourceUtilizationHealthCheck_WithConfigurationSectionAndTags() { - var dataTracker = new Mock(); + var dataTracker = new Mock(); var samplingWindow = TimeSpan.FromSeconds(5); var serviceCollection = new ServiceCollection(); diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization.Tests/ResourceHealthCheckTest.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization.Tests/ResourceHealthCheckTest.cs index 0c848af9ac6..019ecefa0cd 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization.Tests/ResourceHealthCheckTest.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization.Tests/ResourceHealthCheckTest.cs @@ -97,7 +97,7 @@ public async Task TestCpuChecks(HealthStatus expected, double utilization, ulong #pragma warning restore xUnit1026 // Theory methods should use all of their parameters { var systemResources = new SystemResources(1.0, 1.0, totalMemory, totalMemory); - var dataTracker = new Mock(); + var dataTracker = new Mock(); var samplingWindow = TimeSpan.FromSeconds(1); dataTracker .Setup(tracker => tracker.GetUtilization(samplingWindow)) @@ -127,7 +127,7 @@ public async Task TestMemoryChecks(HealthStatus expected, double _, ulong memory #pragma warning restore xUnit1026 // Theory methods should use all of their parameters { var systemResources = new SystemResources(1.0, 1.0, totalMemory, totalMemory); - var dataTracker = new Mock(); + var dataTracker = new Mock(); var samplingWindow = TimeSpan.FromSeconds(1); dataTracker .Setup(tracker => tracker.GetUtilization(samplingWindow)) diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Abstractions/Helpers/DummyTracker.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Abstractions/Helpers/DummyTracker.cs index e77d6eb3214..a074c9f880f 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Abstractions/Helpers/DummyTracker.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Abstractions/Helpers/DummyTracker.cs @@ -5,7 +5,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Helpers; -internal class DummyTracker : IResourceUtilizationTracker +internal class DummyTracker : IResourceMonitor { public const double CpuPercentage = 50.0; public const double MemoryPercentage = 10.0; diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Abstractions/NullResourceUtilizationTest/NullResourceUtilizationTrackerServiceTest.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Abstractions/NullResourceUtilizationTest/NullResourceUtilizationTrackerServiceTest.cs deleted file mode 100644 index 671af67ac5d..00000000000 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Abstractions/NullResourceUtilizationTest/NullResourceUtilizationTrackerServiceTest.cs +++ /dev/null @@ -1,24 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using Xunit; - -namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.NullImplementationTest; - -public sealed class NullResourceUtilizationTrackerServiceTest -{ - private const double CpuUnits = 1.0; - private static readonly SystemResources _systemResources = new(CpuUnits, CpuUnits, long.MaxValue, long.MaxValue); - private static readonly Utilization _utilization = new(0.0, 0U, _systemResources); - - [Fact] - public void GetAverageUtilization_ReturnsFixedUtilizationValue() - { - var tracker = new NullResourceUtilizationTrackerService(); - - Assert.Equal(_utilization, tracker.GetUtilization(TimeSpan.Zero)); - Assert.Equal(_utilization, tracker.GetUtilization(TimeSpan.FromSeconds(1))); - Assert.Equal(_utilization, tracker.GetUtilization(TimeSpan.FromMinutes(1))); - } -} diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Abstractions/ResouceUtilizationAbstractionsExtensionsTest.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Abstractions/ResouceUtilizationAbstractionsExtensionsTest.cs index 9352410a51c..61db7b7f02b 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Abstractions/ResouceUtilizationAbstractionsExtensionsTest.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Abstractions/ResouceUtilizationAbstractionsExtensionsTest.cs @@ -14,10 +14,10 @@ public void AddNullResourceUtilizationProvider_AddsNullSnapshotProvider_ToServic { var services = new ServiceCollection(); - var builder = new Mock(MockBehavior.Loose); + var builder = new Mock(MockBehavior.Loose); builder.Setup(builder => builder.Services).Returns(services); - using var servicesProvider = builder.Object.AddNullResourceUtilizationProvider() + using var servicesProvider = builder.Object.AddNullProvider() .Services.BuildServiceProvider(); var snapshotProvider = servicesProvider.GetRequiredService(); @@ -26,18 +26,4 @@ public void AddNullResourceUtilizationProvider_AddsNullSnapshotProvider_ToServic Assert.IsType(snapshotProvider); Assert.IsAssignableFrom(snapshotProvider); } - - [Fact] - public void AddNullResourceUtilization_AddsNullResourceUtilizationTrackerService_ToServicesCollection() - { - var services = new ServiceCollection(); - - using var servicesProvider = services.AddNullResourceUtilization().BuildServiceProvider(); - - var tracker = servicesProvider.GetRequiredService(); - - Assert.NotNull(tracker); - Assert.IsType(tracker); - Assert.IsAssignableFrom(tracker); - } } diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationBuilderTest.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationBuilderTest.cs index 71e8690baec..702e58e8ffb 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationBuilderTest.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationBuilderTest.cs @@ -14,7 +14,7 @@ public sealed class ResourceUtilizationBuilderTest public void AddPublisher_CalledOnce_AddsSinglePublisherToServiceCollection() { using var provider = new ServiceCollection() - .AddResourceUtilization(configureTracker => + .AddResourceMonitoring(configureTracker => { configureTracker.AddPublisher(); }) @@ -34,7 +34,7 @@ public void AddPublisher_CalledOnce_AddsSinglePublisherToServiceCollection() public void AddPublisher_CalledMultipleTimes_AddsMultiplePublishersToServiceCollection() { using var provider = new ServiceCollection() - .AddResourceUtilization(configureTracker => + .AddResourceMonitoring(configureTracker => { configureTracker .AddPublisher() diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationTrackerExtensionsTest.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationTrackerExtensionsTest.cs index 06ff5632ee4..21465702177 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationTrackerExtensionsTest.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationTrackerExtensionsTest.cs @@ -24,18 +24,18 @@ public void AddResourceUtilization_AddsResourceUtilizationTrackerService_ToServi using var provider = new ServiceCollection() .AddLogging() .AddSingleton(TimeProvider.System) - .AddResourceUtilization(builder => + .AddResourceMonitoring(builder => { builder.Services.AddSingleton(); builder.AddPublisher(); }) .BuildServiceProvider(); - var trackerService = provider.GetRequiredService(); + var trackerService = provider.GetRequiredService(); Assert.NotNull(trackerService); Assert.IsType(trackerService); - Assert.IsAssignableFrom(trackerService); + Assert.IsAssignableFrom(trackerService); } [Fact] @@ -44,7 +44,7 @@ public void AddResourceUtilization_AddsResourceUtilizationTrackerService_AsHoste using var provider = new ServiceCollection() .AddLogging() .AddSingleton(TimeProvider.System) - .AddResourceUtilization(builder => + .AddResourceMonitoring(builder => { builder.Services.AddSingleton(); builder.AddPublisher(); @@ -56,14 +56,14 @@ public void AddResourceUtilization_AddsResourceUtilizationTrackerService_AsHoste Assert.NotNull(trackerService); Assert.IsType(trackerService); - Assert.IsAssignableFrom(trackerService); + Assert.IsAssignableFrom(trackerService); } [Fact] public void ConfigureResourceUtilization_InitializeTrackerProperly() { using var host = FakeHost.CreateBuilder() - .ConfigureResourceUtilization( + .ConfigureResourceMonitoring( builder => { builder.Services.AddSingleton(TimeProvider.System); @@ -72,8 +72,8 @@ public void ConfigureResourceUtilization_InitializeTrackerProperly() }) .Build(); - var tracker = host.Services.GetService(); - var options = host.Services.GetService>(); + var tracker = host.Services.GetService(); + var options = host.Services.GetService>(); var provider = host.Services.GetService(); var publisher = host.Services.GetService(); @@ -90,12 +90,12 @@ public void ConfigureTracker_GivenOptionsDelegate_InitializeTrackerWithOptionsPr const int CalculationPeriodValue = 2; using var host = FakeHost.CreateBuilder() - .ConfigureResourceUtilization( + .ConfigureResourceMonitoring( builder => { builder.Services.AddSingleton(); builder.AddPublisher(); - builder.ConfigureTracker(options => + builder.ConfigureMonitor(options => { options.CollectionWindow = TimeSpan.FromSeconds(SamplingWindowValue); options.CalculationPeriod = TimeSpan.FromSeconds(CalculationPeriodValue); @@ -103,7 +103,7 @@ public void ConfigureTracker_GivenOptionsDelegate_InitializeTrackerWithOptionsPr }) .Build(); - var options = host.Services.GetService>(); + var options = host.Services.GetService>(); Assert.NotNull(options); Assert.Equal(TimeSpan.FromSeconds(SamplingWindowValue), options!.Value.CollectionWindow); @@ -120,29 +120,29 @@ public void ConfigureTracker_GivenIConfigurationSection_InitializeTrackerWithOpt var config = new ConfigurationBuilder() .AddInMemoryCollection(new Dictionary { - [$"{nameof(ResourceUtilizationTrackerOptions)}:{nameof(ResourceUtilizationTrackerOptions.CollectionWindow)}"] + [$"{nameof(ResourceMonitoringOptions)}:{nameof(ResourceMonitoringOptions.CollectionWindow)}"] = TimeSpan.FromSeconds(SamplingWindowValue).ToString(), - [$"{nameof(ResourceUtilizationTrackerOptions)}:{nameof(ResourceUtilizationTrackerOptions.SamplingInterval)}"] + [$"{nameof(ResourceMonitoringOptions)}:{nameof(ResourceMonitoringOptions.SamplingInterval)}"] = TimeSpan.FromSeconds(SamplingPeriodValue).ToString(), - [$"{nameof(ResourceUtilizationTrackerOptions)}:{nameof(ResourceUtilizationTrackerOptions.CalculationPeriod)}"] + [$"{nameof(ResourceMonitoringOptions)}:{nameof(ResourceMonitoringOptions.CalculationPeriod)}"] = TimeSpan.FromSeconds(CalculationPeriod).ToString() }) .Build(); var configurationSection = config - .GetSection(nameof(ResourceUtilizationTrackerOptions)); + .GetSection(nameof(ResourceMonitoringOptions)); using var host = FakeHost.CreateBuilder() - .ConfigureResourceUtilization( + .ConfigureResourceMonitoring( builder => { builder.Services.AddSingleton(); builder.AddPublisher(); - builder.ConfigureTracker(configurationSection); + builder.ConfigureMonitor(configurationSection); }) .Build(); - var options = host.Services.GetService>(); + var options = host.Services.GetService>(); Assert.NotNull(options); Assert.Equal(TimeSpan.FromSeconds(SamplingWindowValue), options!.Value.CollectionWindow); @@ -154,7 +154,7 @@ public void ConfigureTracker_GivenIConfigurationSection_InitializeTrackerWithOpt public void Registering_Resource_Utilization_Adds_Only_One_Object_Of_Type_ResourceUtilizationService_To_DI_Container() { using var host = FakeHost.CreateBuilder() - .ConfigureResourceUtilization( + .ConfigureResourceMonitoring( builder => { builder.Services.AddSingleton(); @@ -162,7 +162,7 @@ public void Registering_Resource_Utilization_Adds_Only_One_Object_Of_Type_Resour }) .Build(); - var trackers = host.Services.GetServices().ToArray(); + var trackers = host.Services.GetServices().ToArray(); var backgrounds = host.Services.GetServices().Where(x => x is ResourceUtilizationTrackerService).ToArray(); var tracker = Assert.Single(trackers); diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationTrackerOptionsManualValidatorTest.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationTrackerOptionsManualValidatorTest.cs index b4164a41591..c598ff1b6bd 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationTrackerOptionsManualValidatorTest.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationTrackerOptionsManualValidatorTest.cs @@ -17,7 +17,7 @@ public sealed class ResourceUtilizationTrackerOptionsManualValidatorTest [InlineData(6, 6)] public void Validator_GivenValidOptions_Succeeds(int collectionWindow, int calculationPeriod) { - var options = new ResourceUtilizationTrackerOptions + var options = new ResourceMonitoringOptions { CollectionWindow = TimeSpan.FromSeconds(collectionWindow), CalculationPeriod = TimeSpan.FromSeconds(calculationPeriod) @@ -31,7 +31,7 @@ public void Validator_GivenValidOptions_Succeeds(int collectionWindow, int calcu [Fact] public void Validator_CalculationPeriodBiggerThanCollectionWindow_Fails() { - var options = new ResourceUtilizationTrackerOptions + var options = new ResourceMonitoringOptions { CollectionWindow = TimeSpan.FromSeconds(1), CalculationPeriod = TimeSpan.FromSeconds(2) diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationTrackerOptionsTest.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationTrackerOptionsTest.cs index 9a1347185f6..001859e174f 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationTrackerOptionsTest.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationTrackerOptionsTest.cs @@ -11,7 +11,7 @@ public sealed class ResourceUtilizationTrackerOptionsTest [Fact] public void Basic() { - var options = new ResourceUtilizationTrackerOptions + var options = new ResourceMonitoringOptions { CollectionWindow = TimeSpan.FromMilliseconds(100), SamplingInterval = TimeSpan.FromMilliseconds(10), diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationTrackerOptionsValidatorTest.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationTrackerOptionsValidatorTest.cs index 9ba5c151a8c..d17c50604e1 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationTrackerOptionsValidatorTest.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationTrackerOptionsValidatorTest.cs @@ -12,7 +12,7 @@ public sealed class ResourceUtilizationTrackerOptionsValidatorTest [Fact] public void Validator_GivenValidOptions_Succeeds() { - var options = new ResourceUtilizationTrackerOptions + var options = new ResourceMonitoringOptions { CollectionWindow = TimeSpan.FromMilliseconds(100), SamplingInterval = TimeSpan.FromMilliseconds(10), @@ -29,7 +29,7 @@ public void Validator_GivenValidOptions_Succeeds() [Fact] public void Validator_GivenOptionsWithInvalidSamplingWindow_Fails() { - var options = new ResourceUtilizationTrackerOptions + var options = new ResourceMonitoringOptions { CollectionWindow = TimeSpan.FromTicks(1), SamplingInterval = TimeSpan.FromSeconds(1), @@ -44,7 +44,7 @@ public void Validator_GivenOptionsWithInvalidSamplingWindow_Fails() [Fact] public void Validator_GivenOptionsWithInvalidSamplingPeriod_Fails() { - var options = new ResourceUtilizationTrackerOptions + var options = new ResourceMonitoringOptions { CollectionWindow = TimeSpan.FromMilliseconds(100), SamplingInterval = TimeSpan.FromMilliseconds(0), @@ -59,7 +59,7 @@ public void Validator_GivenOptionsWithInvalidSamplingPeriod_Fails() [Fact] public void Validator_GivenOptionsWithInvalidMinimalRetentionPeriod_Fails() { - var options = new ResourceUtilizationTrackerOptions + var options = new ResourceMonitoringOptions { CollectionWindow = TimeSpan.FromMilliseconds(100), SamplingInterval = TimeSpan.FromMilliseconds(1), @@ -72,39 +72,39 @@ public void Validator_GivenOptionsWithInvalidMinimalRetentionPeriod_Fails() } [Theory] - [InlineData(-100, 1, ResourceUtilizationTrackerOptions.MinimumSamplingWindow, true)] - [InlineData(-1, 1, ResourceUtilizationTrackerOptions.MinimumSamplingWindow, true)] - [InlineData(0, -100, ResourceUtilizationTrackerOptions.MinimumSamplingWindow, true)] - [InlineData(0, -1, ResourceUtilizationTrackerOptions.MinimumSamplingWindow, true)] - [InlineData(0, 0, ResourceUtilizationTrackerOptions.MinimumSamplingWindow, true)] - [InlineData(0, ResourceUtilizationTrackerOptions.MinimumSamplingPeriod + 1, ResourceUtilizationTrackerOptions.MinimumSamplingWindow, true)] - [InlineData(0, 1, ResourceUtilizationTrackerOptions.MinimumSamplingWindow, true)] - [InlineData(1, 1, ResourceUtilizationTrackerOptions.MinimumSamplingWindow, true)] - [InlineData(ResourceUtilizationTrackerOptions.MinimumSamplingWindow, 1, ResourceUtilizationTrackerOptions.MinimumSamplingWindow, false)] - [InlineData(ResourceUtilizationTrackerOptions.MinimumSamplingWindow, 100, ResourceUtilizationTrackerOptions.MinimumSamplingWindow, false)] + [InlineData(-100, 1, ResourceMonitoringOptions.MinimumSamplingWindow, true)] + [InlineData(-1, 1, ResourceMonitoringOptions.MinimumSamplingWindow, true)] + [InlineData(0, -100, ResourceMonitoringOptions.MinimumSamplingWindow, true)] + [InlineData(0, -1, ResourceMonitoringOptions.MinimumSamplingWindow, true)] + [InlineData(0, 0, ResourceMonitoringOptions.MinimumSamplingWindow, true)] + [InlineData(0, ResourceMonitoringOptions.MinimumSamplingPeriod + 1, ResourceMonitoringOptions.MinimumSamplingWindow, true)] + [InlineData(0, 1, ResourceMonitoringOptions.MinimumSamplingWindow, true)] + [InlineData(1, 1, ResourceMonitoringOptions.MinimumSamplingWindow, true)] + [InlineData(ResourceMonitoringOptions.MinimumSamplingWindow, 1, ResourceMonitoringOptions.MinimumSamplingWindow, false)] + [InlineData(ResourceMonitoringOptions.MinimumSamplingWindow, 100, ResourceMonitoringOptions.MinimumSamplingWindow, false)] [InlineData( - ResourceUtilizationTrackerOptions.MaximumSamplingWindow - 1, - ResourceUtilizationTrackerOptions.MaximumSamplingPeriod - 1, - ResourceUtilizationTrackerOptions.MaximumSamplingPeriod - 1, + ResourceMonitoringOptions.MaximumSamplingWindow - 1, + ResourceMonitoringOptions.MaximumSamplingPeriod - 1, + ResourceMonitoringOptions.MaximumSamplingPeriod - 1, false)] [InlineData( - ResourceUtilizationTrackerOptions.MaximumSamplingWindow, - ResourceUtilizationTrackerOptions.MaximumSamplingPeriod, - ResourceUtilizationTrackerOptions.MaximumSamplingPeriod, + ResourceMonitoringOptions.MaximumSamplingWindow, + ResourceMonitoringOptions.MaximumSamplingPeriod, + ResourceMonitoringOptions.MaximumSamplingPeriod, false)] [InlineData( - ResourceUtilizationTrackerOptions.MinimumSamplingWindow, - ResourceUtilizationTrackerOptions.MinimumSamplingPeriod, + ResourceMonitoringOptions.MinimumSamplingWindow, + ResourceMonitoringOptions.MinimumSamplingPeriod, -1, true)] [InlineData( - ResourceUtilizationTrackerOptions.MinimumSamplingWindow, - ResourceUtilizationTrackerOptions.MinimumSamplingPeriod, - ResourceUtilizationTrackerOptions.MaximumSamplingWindow + 1, + ResourceMonitoringOptions.MinimumSamplingWindow, + ResourceMonitoringOptions.MinimumSamplingPeriod, + ResourceMonitoringOptions.MaximumSamplingWindow + 1, true)] public void Validator_With_Multiple_Options_Scenarios(int samplingWindow, int samplingPeriod, int calculationPeriod, bool isError) { - var options = new ResourceUtilizationTrackerOptions + var options = new ResourceMonitoringOptions { CollectionWindow = TimeSpan.FromMilliseconds(samplingWindow), SamplingInterval = TimeSpan.FromMilliseconds(samplingPeriod), diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationTrackerServiceTest.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationTrackerServiceTest.cs index b181e796229..6683376ad18 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationTrackerServiceTest.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Core/ResourceUtilizationTrackerServiceTest.cs @@ -48,7 +48,7 @@ public void BasicConstructor() using var tracker = new ResourceUtilizationTrackerService( mockProvider.Object, mockLogger.Object, - Create(new ResourceUtilizationTrackerOptions()), + Create(new ResourceMonitoringOptions()), publishersList, _clock); var provider = GetDataTrackerField(tracker, "_provider"); @@ -70,7 +70,7 @@ public void BasicConstructor_NullOptions_Throws() var mockPublishers = new Mock>(MockBehavior.Loose); Assert.Throws(() => - new ResourceUtilizationTrackerService(mockProvider.Object, mockLogger.Object, Create((ResourceUtilizationTrackerOptions)null!), mockPublishers.Object, _clock)); + new ResourceUtilizationTrackerService(mockProvider.Object, mockLogger.Object, Create((ResourceMonitoringOptions)null!), mockPublishers.Object, _clock)); } /// @@ -84,12 +84,12 @@ public void BasicConstructor_NullPublishers_Throws() var mockLogger = new Mock>(MockBehavior.Loose); Assert.Throws(() => - new ResourceUtilizationTrackerService(mockProvider.Object, mockLogger.Object, Create(new ResourceUtilizationTrackerOptions()), null!, TimeProvider.System)); + new ResourceUtilizationTrackerService(mockProvider.Object, mockLogger.Object, Create(new ResourceMonitoringOptions()), null!, TimeProvider.System)); } /// - /// Construct the object configured with maximum allowed values of and - /// . + /// Construct the object configured with maximum allowed values of and + /// . /// [Fact] public void BasicConstructor_ConfiguredWithMaxValuesOfSamplingWindowAndSamplingPeriod_DoesNotThrow() @@ -107,7 +107,7 @@ public void BasicConstructor_ConfiguredWithMaxValuesOfSamplingWindowAndSamplingP using var tracker = new ResourceUtilizationTrackerService( mockProvider.Object, mockLogger.Object, - Create(new ResourceUtilizationTrackerOptions + Create(new ResourceMonitoringOptions { CollectionWindow = TimeSpan.FromMilliseconds(int.MaxValue), SamplingInterval = TimeSpan.FromMilliseconds(int.MaxValue) @@ -137,7 +137,7 @@ public void BasicConstructor_WithTwoPublishers() using var tracker = new ResourceUtilizationTrackerService( mockProvider.Object, mockLogger.Object, - Create(new ResourceUtilizationTrackerOptions()), + Create(new ResourceMonitoringOptions()), publishersList, _clock); Assert.NotNull(tracker); @@ -165,7 +165,7 @@ public void BasicConstructor_Complex_WithEmptyPublisher() var mockProvider = new Mock(MockBehavior.Loose); var mockLogger = new Mock>(MockBehavior.Loose); using var tracker = new ResourceUtilizationTrackerService(mockProvider.Object, mockLogger.Object, - Create(new ResourceUtilizationTrackerOptions + Create(new ResourceMonitoringOptions { CollectionWindow = TimeSpan.FromSeconds(1), CalculationPeriod = TimeSpan.FromSeconds(1) @@ -197,7 +197,7 @@ public async Task StartAsync_WithSimulatingThatTimeDidNotPass_NoUtilizationDataW // Here we set the number of options to 1 so the internal timer // period will equal the AverageWindow. - Create(new ResourceUtilizationTrackerOptions + Create(new ResourceMonitoringOptions { CollectionWindow = TimeSpan.FromMilliseconds(TimerPeriod), SamplingInterval = TimeSpan.FromMilliseconds(TimerPeriod), @@ -238,7 +238,7 @@ public async Task RunTrackerAsync_IfProviderThrows_LogsError() using var tracker = new ResourceUtilizationTrackerService( provider, logger, - Create(new ResourceUtilizationTrackerOptions + Create(new ResourceMonitoringOptions { CollectionWindow = TimeSpan.FromMilliseconds(100), CalculationPeriod = TimeSpan.FromMilliseconds(100), @@ -271,7 +271,7 @@ public async Task RunTrackerAsync_IfPublisherThrows_LogsError() using var tracker = new ResourceUtilizationTrackerService( new FakeProvider(), logger, - Create(new ResourceUtilizationTrackerOptions + Create(new ResourceMonitoringOptions { CollectionWindow = TimeSpan.FromMilliseconds(100), CalculationPeriod = TimeSpan.FromMilliseconds(100) @@ -312,7 +312,7 @@ public async Task ResourceUtilizationTracker_InitializedProperly_InvokesPublishe // Here we set the number of options to 1 so the internal timer // period will equal the AverageWindow. - Create(new ResourceUtilizationTrackerOptions + Create(new ResourceMonitoringOptions { CollectionWindow = TimeSpan.FromMilliseconds(TimerPeriod), CalculationPeriod = TimeSpan.FromMilliseconds(TimerPeriod), @@ -403,7 +403,7 @@ public async Task ResourceUtilizationTracker_WhenInitializedWithZeroSnapshots_Re // to initialize the tracker's internal buffer with zero snapshots. provider.SetNextSnapshot(zerosSnapshot); - var options = new ResourceUtilizationTrackerOptions + var options = new ResourceMonitoringOptions { CollectionWindow = TimeSpan.FromMilliseconds(TimerPeriod * 2), CalculationPeriod = TimeSpan.FromMilliseconds(TimerPeriod * 2), @@ -515,7 +515,7 @@ public async Task ResourceUtilizationTracker_WhenInitializedWithProperSnapshots_ // to initialize the tracker's internal buffer with zero snapshots. provider.SetNextSnapshot(properInitSnapshot); - var options = new ResourceUtilizationTrackerOptions + var options = new ResourceMonitoringOptions { CollectionWindow = TimeSpan.FromMilliseconds(TimerPeriod * 2), CalculationPeriod = TimeSpan.FromMilliseconds(TimerPeriod * 2), @@ -568,7 +568,7 @@ public void Dispose_CalledMultipleTimes_DoNotThrow() using var tracker = new ResourceUtilizationTrackerService( new FakeProvider(), new NullLogger(), - Create(new ResourceUtilizationTrackerOptions()), + Create(new ResourceMonitoringOptions()), new List { new EmptyPublisher() @@ -590,7 +590,7 @@ public async Task StopAsync_CalledTwice_DoesNotThrow() using var tracker = new ResourceUtilizationTrackerService( new FakeProvider(), new NullLogger(), - Create(new ResourceUtilizationTrackerOptions()), + Create(new ResourceMonitoringOptions()), new List { new EmptyPublisher() @@ -625,7 +625,7 @@ public void GetUtilization_BasicTest() using var tracker = new ResourceUtilizationTrackerService( providerMock.Object, new NullLogger(), - Create(new ResourceUtilizationTrackerOptions + Create(new ResourceMonitoringOptions { CollectionWindow = TimeSpan.FromSeconds(1), SamplingInterval = TimeSpan.FromMilliseconds(100), @@ -650,7 +650,7 @@ public void GetUtilization_ProvidedByWindowGreaterThanSamplingWindowButLesserTha using var tracker = new ResourceUtilizationTrackerService( providerMock.Object, new NullLogger(), - Create(new ResourceUtilizationTrackerOptions + Create(new ResourceMonitoringOptions { CollectionWindow = TimeSpan.FromSeconds(6), CalculationPeriod = TimeSpan.FromSeconds(5) @@ -674,7 +674,7 @@ public void GetUtilization_ProvidedByWindowGreaterThanBuffer_ThrowsArgumentOutOf using var tracker = new ResourceUtilizationTrackerService( providerMock.Object, new NullLogger(), - Create(new ResourceUtilizationTrackerOptions + Create(new ResourceMonitoringOptions { CollectionWindow = TimeSpan.FromSeconds(5) }), @@ -694,7 +694,7 @@ public void GetUtilization_ProvidedByWindowGreaterThanBuffer_ThrowsArgumentOutOf public async Task Disposing_Service_Twice_Does_Not_Throw() { using var s = new ResourceUtilizationTrackerService(new FakeProvider(), NullLogger.Instance, - Microsoft.Extensions.Options.Options.Create(new ResourceUtilizationTrackerOptions()), Array.Empty(), TimeProvider.System); + Microsoft.Extensions.Options.Options.Create(new ResourceMonitoringOptions()), Array.Empty(), TimeProvider.System); var r = await Record.ExceptionAsync(async () => { diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTestResourceUtilizationLinux.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTestResourceUtilizationLinux.cs index d4c3980e99f..35e25a31fc5 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTestResourceUtilizationLinux.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTestResourceUtilizationLinux.cs @@ -27,7 +27,7 @@ public sealed class AcceptanceTestResourceUtilizationLinux public void Adding_Linux_Resource_Utilization_Allows_To_Query_Snapshot_Provider() { using var services = new ServiceCollection() - .AddResourceUtilization(x => x.AddLinuxProvider()) + .AddResourceMonitoring(x => x.AddLinuxProvider()) .BuildServiceProvider(); var provider = services.GetRequiredService(); @@ -42,7 +42,7 @@ public async Task Adding_Linux_Resource_Utilization_On_Windows_Throws() { var e = await Record.ExceptionAsync(async () => { - var h = FakeHost.CreateBuilder().ConfigureServices((_, s) => s.AddResourceUtilization(x => x.AddLinuxProvider()) + var h = FakeHost.CreateBuilder().ConfigureServices((_, s) => s.AddResourceMonitoring(x => x.AddLinuxProvider()) .AddSingleton(new FakeUserHz(100))) .Build(); @@ -74,7 +74,7 @@ public void Adding_Linux_Resource_Utilization_Can_Be_Configured_With_Section() using var services = new ServiceCollection() .AddSingleton(new FakeOperatingSystem(isLinux: true)) - .AddResourceUtilization(x => x.AddLinuxProvider(section)) + .AddResourceMonitoring(x => x.AddLinuxProvider(section)) .BuildServiceProvider(); var options = services.GetRequiredService>(); @@ -93,7 +93,7 @@ public void Adding_Linux_Resource_Utilization_Can_Be_Configured_With_Action() using var services = new ServiceCollection() .AddSingleton(new FakeOperatingSystem(isLinux: true)) - .AddResourceUtilization(x => x.AddLinuxProvider(options => + .AddResourceMonitoring(x => x.AddLinuxProvider(options => { options.CpuConsumptionRefreshInterval = cpuRefresh; options.MemoryConsumptionRefreshInterval = memoryRefresh; @@ -139,7 +139,7 @@ public void Adding_Linux_Resource_Utilization_With_Section_Registers_SnapshotPro { new FileInfo("/sys/fs/cgroup/cpu/cpu.cfs_quota_us"), "12"}, { new FileInfo("/sys/fs/cgroup/cpu/cpu.cfs_period_us"), "6"}, })) - .AddResourceUtilization(x => x.AddLinuxProvider(section)) + .AddResourceMonitoring(x => x.AddLinuxProvider(section)) .BuildServiceProvider(); var provider = services.GetService(); @@ -206,10 +206,10 @@ public Task ResourceUtilizationTracker_Reports_The_Same_Values_As_One_Can_Observ .AddSingleton(new FakeUserHz(100)) .AddSingleton(fileSystem) .AddSingleton(new GenericPublisher(_ => e.Set())) - .AddResourceUtilization(x => x.AddLinuxProvider())) + .AddResourceMonitoring(x => x.AddLinuxProvider())) .Build(); - var tracker = host.Services.GetService(); + var tracker = host.Services.GetService(); Assert.NotNull(tracker); _ = host.RunAsync(); diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/LinuxUtilizationExtensionsTest.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/LinuxUtilizationExtensionsTest.cs index 12203b0ded4..4782ef92f01 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/LinuxUtilizationExtensionsTest.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/LinuxUtilizationExtensionsTest.cs @@ -17,10 +17,10 @@ public void Throw_Null_When_Registration_Ingredients_Null() { var services = new ServiceCollection(); - Assert.Throws(() => ((IResourceUtilizationTrackerBuilder)null!).AddLinuxProvider()); - Assert.Throws(() => ((IResourceUtilizationTrackerBuilder)null!).AddLinuxProvider((_) => { })); - Assert.Throws(() => ((IResourceUtilizationTrackerBuilder)null!).AddLinuxProvider((IConfigurationSection)null!)); - Assert.Throws(() => services.AddResourceUtilization((b) => b.AddLinuxProvider((IConfigurationSection)null!))); - Assert.Throws(() => services.AddResourceUtilization((b) => b.AddLinuxProvider((Action)null!))); + Assert.Throws(() => ((IResourceMonitorBuilder)null!).AddLinuxProvider()); + Assert.Throws(() => ((IResourceMonitorBuilder)null!).AddLinuxProvider((_) => { })); + Assert.Throws(() => ((IResourceMonitorBuilder)null!).AddLinuxProvider((IConfigurationSection)null!)); + Assert.Throws(() => services.AddResourceMonitoring((b) => b.AddLinuxProvider((IConfigurationSection)null!))); + Assert.Throws(() => services.AddResourceMonitoring((b) => b.AddLinuxProvider((Action)null!))); } } diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Windows/WindowsUtilizationExtensionsTest.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Windows/WindowsUtilizationExtensionsTest.cs index 248a0f3f7dc..b7745f2d1e2 100644 --- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Windows/WindowsUtilizationExtensionsTest.cs +++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Windows/WindowsUtilizationExtensionsTest.cs @@ -19,7 +19,7 @@ public sealed class WindowsUtilizationExtensionsTest [ConditionalFact] public void AddWindowsProvider_Adds_WindowsResourceUtilizationProvider_To_ServiceCollection() { - var builderMock = new Mock(); + var builderMock = new Mock(); var services = new ServiceCollection() .AddLogging(); builderMock.Setup(builder => builder.Services).Returns(services); @@ -35,7 +35,7 @@ public void AddWindowsProvider_Adds_WindowsResourceUtilizationProvider_To_Servic [ConditionalFact] public void AddWindowsPerfCounterPublisher_Adds_WindowsPerfCounterPublisher_To_ServiceCollection() { - var builderMock = new Mock(MockBehavior.Loose); + var builderMock = new Mock(MockBehavior.Loose); var services = new ServiceCollection() .AddLogging(); builderMock.Setup(builder => builder.Services).Returns(services); @@ -50,7 +50,7 @@ public void AddWindowsPerfCounterPublisher_Adds_WindowsPerfCounterPublisher_To_S [Fact] public void AddWindowsCounters_Adds_WindowsCounters_To_ServiceCollection() { - var builderMock = new Mock(MockBehavior.Loose); + var builderMock = new Mock(MockBehavior.Loose); var services = new ServiceCollection() .AddLogging(); builderMock.Setup(builder => builder.Services).Returns(services); @@ -65,7 +65,7 @@ public void AddWindowsCounters_Adds_WindowsCounters_To_ServiceCollection() [Fact] public void AddWindowsCounters_Adds_WindowsCounters_To_ServiceCollection_With_ConfigurationSection() { - var builderMock = new Mock(MockBehavior.Loose); + var builderMock = new Mock(MockBehavior.Loose); var configurationMock = new Mock(MockBehavior.Loose); var services = new ServiceCollection() .AddLogging(); @@ -81,7 +81,7 @@ public void AddWindowsCounters_Adds_WindowsCounters_To_ServiceCollection_With_Co [Fact] public void AddWindowsCounters_Adds_WindowsCounters_To_ServiceCollection_With_Action() { - var builderMock = new Mock(MockBehavior.Loose); + var builderMock = new Mock(MockBehavior.Loose); var actionMock = new Mock>(MockBehavior.Loose); var services = new ServiceCollection() .AddLogging();