Skip to content

Commit 544b8d5

Browse files
github-actions[bot]gitmlnjoperezr
authored
[release/8.9] Revert correct Meter name (#5406)
* Revert correct Meter name * Unit tests for ResourceMonitoring meter name * Fixed Windows test on Linuz * Increase patch number --------- Co-authored-by: gitmln <[email protected]> Co-authored-by: Jose Perez Rodriguez <[email protected]>
1 parent f5b6188 commit 544b8d5

File tree

10 files changed

+118
-5
lines changed

10 files changed

+118
-5
lines changed

eng/Versions.props

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
<PropertyGroup Label="Version settings">
33
<MajorVersion>8</MajorVersion>
44
<MinorVersion>9</MinorVersion>
5-
<PatchVersion>0</PatchVersion>
5+
<PatchVersion>1</PatchVersion>
66
<PreReleaseVersionLabel>rtm</PreReleaseVersionLabel>
77
<PreReleaseVersionIteration>
88
</PreReleaseVersionIteration>
99
<VersionPrefix>$(MajorVersion).$(MinorVersion).$(PatchVersion)</VersionPrefix>
1010
<ValidateBaseline>true</ValidateBaseline>
11-
<AssemblyVersion>$(MajorVersion).$(MinorVersion).0.0</AssemblyVersion>
11+
<AssemblyVersion>$(MajorVersion).$(MinorVersion).$(PatchVersion).0</AssemblyVersion>
1212
<!--
1313
When DotNetFinalVersionKind is set to 'release', this branch will produce stable outputs for 'Shipping' packages
1414

src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/LinuxUtilizationProvider.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public LinuxUtilizationProvider(IOptions<ResourceMonitoringOptions> options, ILi
6262
// We don't dispose the meter because IMeterFactory handles that
6363
// An issue on analyzer side: https://github.com/dotnet/roslyn-analyzers/issues/6912
6464
// Related documentation: https://github.com/dotnet/docs/pull/37170
65-
var meter = meterFactory.Create(nameof(Microsoft.Extensions.Diagnostics.ResourceMonitoring));
65+
var meter = meterFactory.Create(ResourceUtilizationInstruments.MeterName);
6666
#pragma warning restore CA2000 // Dispose objects before losing scope
6767

6868
_ = meter.CreateObservableGauge(name: ResourceUtilizationInstruments.ContainerCpuLimitUtilization, observeValue: () => CpuUtilization() * _scaleRelativeToCpuLimit, unit: "1");

src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceUtilizationInstruments.cs

+5
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring;
1111
/// <seealso cref="System.Diagnostics.Metrics.Instrument"/>
1212
internal static class ResourceUtilizationInstruments
1313
{
14+
/// <summary>
15+
/// The name of the ResourceMonitoring Meter.
16+
/// </summary>
17+
public const string MeterName = "Microsoft.Extensions.Diagnostics.ResourceMonitoring";
18+
1419
/// <summary>
1520
/// The name of an instrument to retrieve CPU limit consumption of all processes running inside a container or control group in range <c>[0, 1]</c>.
1621
/// </summary>

src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsContainerSnapshotProvider.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ internal WindowsContainerSnapshotProvider(
105105
// We don't dispose the meter because IMeterFactory handles that
106106
// An issue on analyzer side: https://github.com/dotnet/roslyn-analyzers/issues/6912
107107
// Related documentation: https://github.com/dotnet/docs/pull/37170
108-
var meter = meterFactory.Create(nameof(Microsoft.Extensions.Diagnostics.ResourceMonitoring));
108+
var meter = meterFactory.Create(ResourceUtilizationInstruments.MeterName);
109109
#pragma warning restore CA2000 // Dispose objects before losing scope
110110

111111
// Container based metrics:

src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsSnapshotProvider.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ internal WindowsSnapshotProvider(
8181
// We don't dispose the meter because IMeterFactory handles that
8282
// An issue on analyzer side: https://github.com/dotnet/roslyn-analyzers/issues/6912
8383
// Related documentation: https://github.com/dotnet/docs/pull/37170
84-
var meter = meterFactory.Create(nameof(Microsoft.Extensions.Diagnostics.ResourceMonitoring));
84+
var meter = meterFactory.Create(ResourceUtilizationInstruments.MeterName);
8585
#pragma warning restore CA2000 // Dispose objects before losing scope
8686

8787
_ = meter.CreateObservableGauge(name: ResourceUtilizationInstruments.ProcessCpuUtilization, observeValue: CpuPercentage);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
using System;
5+
using System.Collections.Generic;
6+
using System.Diagnostics.Metrics;
7+
8+
namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Helpers;
9+
10+
internal class TestMeterFactory : IMeterFactory
11+
{
12+
public List<Meter> Meters { get; } = new List<Meter>();
13+
14+
public Meter Create(MeterOptions options)
15+
{
16+
var meter = new Meter(options.Name, options.Version, Array.Empty<KeyValuePair<string, object?>>(), scope: this);
17+
Meters.Add(meter);
18+
19+
return meter;
20+
}
21+
22+
public Meter Create(string name)
23+
{
24+
return Create(new MeterOptions(name)
25+
{
26+
Version = null,
27+
Tags = null,
28+
Scope = null
29+
});
30+
}
31+
32+
public void Dispose()
33+
{
34+
foreach (var meter in Meters)
35+
{
36+
meter.Dispose();
37+
}
38+
39+
Meters.Clear();
40+
}
41+
}

test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/LinuxUtilizationProviderTests.cs

+14
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System.IO;
88
using System.Linq;
99
using System.Threading.Tasks;
10+
using Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Helpers;
1011
using Microsoft.Extensions.Logging.Testing;
1112
using Microsoft.TestUtilities;
1213
using Moq;
@@ -191,4 +192,17 @@ public Task Provider_EmitsLogRecord()
191192

192193
return Verifier.Verify(logRecords).UseDirectory(VerifiedDataDirectory);
193194
}
195+
196+
[Fact]
197+
public void Provider_Creates_Meter_With_Correct_Name()
198+
{
199+
var options = Options.Options.Create<ResourceMonitoringOptions>(new());
200+
using var meterFactory = new TestMeterFactory();
201+
202+
var parser = new DummyLinuxUtilizationParser();
203+
_ = new LinuxUtilizationProvider(options, parser, meterFactory);
204+
205+
var meter = meterFactory.Meters.Single();
206+
Assert.Equal(ResourceUtilizationInstruments.MeterName, meter.Name);
207+
}
194208
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
using Microsoft.Extensions.Diagnostics.ResourceMonitoring.Linux;
5+
6+
namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Linux.Test;
7+
8+
internal class DummyLinuxUtilizationParser : ILinuxUtilizationParser
9+
{
10+
public ulong GetAvailableMemoryInBytes() => 1;
11+
public long GetCgroupCpuUsageInNanoseconds() => 0;
12+
public float GetCgroupLimitedCpus() => 1;
13+
public float GetCgroupRequestCpu() => 1;
14+
public ulong GetHostAvailableMemory() => 0;
15+
public float GetHostCpuCount() => 1;
16+
public long GetHostCpuUsageInNanoseconds() => 0;
17+
public ulong GetMemoryUsageInBytes() => 0;
18+
}

test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Windows/WindowsContainerSnapshotProviderTests.cs

+22
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33

44
using System;
55
using System.Diagnostics.Metrics;
6+
using System.Linq;
67
using System.Threading.Tasks;
78
using Microsoft.Extensions.Diagnostics.Metrics.Testing;
9+
using Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Helpers;
810
using Microsoft.Extensions.Diagnostics.ResourceMonitoring.Windows.Interop;
911
using Microsoft.Extensions.Logging.Testing;
1012
using Microsoft.Extensions.Time.Testing;
@@ -322,4 +324,24 @@ public Task SnapshotProvider_EmitsLogRecord()
322324

323325
return Verifier.Verify(logRecords).UniqueForRuntime().UseDirectory(VerifiedDataDirectory);
324326
}
327+
328+
[Fact]
329+
public void Provider_Creates_Meter_With_Correct_Name()
330+
{
331+
var options = Options.Options.Create<ResourceMonitoringOptions>(new());
332+
using var meterFactory = new TestMeterFactory();
333+
334+
_ = new WindowsContainerSnapshotProvider(
335+
_memoryInfoMock.Object,
336+
_systemInfoMock.Object,
337+
_processInfoMock.Object,
338+
_logger,
339+
meterFactory,
340+
() => _jobHandleMock.Object,
341+
new FakeTimeProvider(),
342+
new());
343+
344+
var meter = meterFactory.Meters.Single();
345+
Assert.Equal(ResourceUtilizationInstruments.MeterName, meter.Name);
346+
}
325347
}

test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Windows/WindowsSnapshotProviderTests.cs

+13
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33

44
using System;
55
using System.Diagnostics.Metrics;
6+
using System.Linq;
67
using System.Threading.Tasks;
78
using Microsoft.Extensions.Diagnostics.Metrics.Testing;
9+
using Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Helpers;
810
using Microsoft.Extensions.Diagnostics.ResourceMonitoring.Windows.Interop;
911
using Microsoft.Extensions.Logging.Testing;
1012
using Microsoft.Extensions.Options;
@@ -155,4 +157,15 @@ public void Provider_Returns_MemoryConsumption()
155157
var usage = WindowsSnapshotProvider.GetMemoryUsageInBytes();
156158
Assert.InRange(usage, 0, long.MaxValue);
157159
}
160+
161+
[ConditionalFact]
162+
public void Provider_Creates_Meter_With_Correct_Name()
163+
{
164+
using var meterFactory = new TestMeterFactory();
165+
166+
_ = new WindowsSnapshotProvider(_fakeLogger, meterFactory, _options);
167+
168+
var meter = meterFactory.Meters.Single();
169+
Assert.Equal(ResourceUtilizationInstruments.MeterName, meter.Name);
170+
}
158171
}

0 commit comments

Comments
 (0)