Skip to content

Commit c9e1648

Browse files
ericstjAnipik
andauthored
[release/5.0] Fix reading performance counters on Windows ARM64 (#46590)
* Remove dependency on PerfCounter.dll (#45142) * Remove dependency on PerfCounter.dll This dependency was unnecessary and only for calling through to pdh.dll. PerfCounter.dll is still needed for the consumption side of performance counters, but removing from the dependency from the .NET can help enable some scenarios like reading non-.NET counters. * Update conditions on performance counter tests. * Condition more perf counter tests * Build PerformanceCounter package in servicing Update assembly version of PerformanceCounter package and build it in servicing. Also update the package baseline to ensure that Windows.Compatibility package gets the new version. * Don't rev the platforms package unless we ship it Co-authored-by: Anirudh Agnihotry <[email protected]>
1 parent 6b48b84 commit c9e1648

17 files changed

+94
-110
lines changed

eng/packaging.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<PackageVersion Condition="'$(PackageVersion)' == ''">$(ProductVersion)</PackageVersion>
2424
<!-- major.minor.release version of the platforms package we're currently building
2525
Pre-release will be appended during build -->
26-
<PlatformPackageVersion>$(ProductVersion)</PlatformPackageVersion>
26+
<PlatformPackageVersion>5.0.0</PlatformPackageVersion>
2727
<SkipValidatePackageTargetFramework>true</SkipValidatePackageTargetFramework>
2828
<SkipGenerationCheck>true</SkipGenerationCheck>
2929
</PropertyGroup>

src/libraries/Common/src/Interop/Windows/Interop.Libraries.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ internal static partial class Libraries
1919
internal const string Odbc32 = "odbc32.dll";
2020
internal const string Ole32 = "ole32.dll";
2121
internal const string OleAut32 = "oleaut32.dll";
22-
internal const string PerfCounter = "perfcounter.dll";
22+
internal const string Pdh = "pdh.dll";
2323
internal const string Secur32 = "secur32.dll";
2424
internal const string Shell32 = "shell32.dll";
2525
internal const string SspiCli = "sspicli.dll";

src/libraries/Common/src/Interop/Windows/PerfCounter/Interop.FormatFromRawValue.cs renamed to src/libraries/Common/src/Interop/Windows/Pdh/Interop.PdhFormatFromRawValue.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55

66
internal partial class Interop
77
{
8-
internal partial class PerfCounter
8+
internal partial class Pdh
99
{
10-
[DllImport(Libraries.PerfCounter, CharSet = CharSet.Unicode)]
11-
public static extern unsafe int FormatFromRawValue(
10+
[DllImport(Libraries.Pdh, CharSet = CharSet.Unicode)]
11+
public static extern int PdhFormatFromRawValue(
1212
uint dwCounterType,
1313
uint dwFormat,
1414
ref long pTimeBase,

src/libraries/System.Diagnostics.PerformanceCounter/Directory.Build.props

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,7 @@
33
<PropertyGroup>
44
<StrongNameKeyId>Open</StrongNameKeyId>
55
<IsWindowsSpecific>true</IsWindowsSpecific>
6+
<PackageVersion>5.0.1</PackageVersion>
7+
<AssemblyVersion>5.0.0.1</AssemblyVersion>
68
</PropertyGroup>
79
</Project>

src/libraries/System.Diagnostics.PerformanceCounter/src/System.Diagnostics.PerformanceCounter.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,8 @@
110110
Link="Common\Interop\Windows\Kernel32\Interop.VirtualQuery.cs" />
111111
<Compile Include="$(CommonPath)Interop\Windows\Kernel32\Interop.WaitForSingleObject.cs"
112112
Link="Common\Interop\Windows\Kernel32\Interop.WaitForSingleObject.cs" />
113-
<Compile Include="$(CommonPath)Interop\Windows\PerfCounter\Interop.FormatFromRawValue.cs"
114-
Link="Common\Interop\Windows\PerfCounter\Interop.FormatFromRawValue.cs" />
113+
<Compile Include="$(CommonPath)Interop\Windows\Pdh\Interop.PdhFormatFromRawValue.cs"
114+
Link="Common\Interop\Windows\Pdh\Interop.PdhFormatFromRawValue.cs" />
115115
<Compile Include="$(CommonPath)Interop\Windows\PerfCounter\Interop.PerformanceData.cs"
116116
Link="Common\Interop\Windows\PerfCounter\Interop.PerformanceData.cs" />
117117
<Compile Include="$(CommonPath)Microsoft\Win32\SafeHandles\SafeLocalAllocHandle.cs"

src/libraries/System.Diagnostics.PerformanceCounter/src/System/Diagnostics/CounterSampleCalculator.cs

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ namespace System.Diagnostics
1313
/// </summary>
1414
public static class CounterSampleCalculator
1515
{
16-
private static volatile bool s_perfCounterDllLoaded;
17-
1816
/// <summary>
1917
/// Converts 100NS elapsed time to fractional seconds
2018
/// </summary>
@@ -89,11 +87,9 @@ public static float ComputeCounterValue(CounterSample oldSample, CounterSample n
8987

9088
FillInValues(oldSample, newSample, ref oldPdhValue, ref newPdhValue);
9189

92-
LoadPerfCounterDll();
93-
9490
Interop.Kernel32.PerformanceCounterOptions.PDH_FMT_COUNTERVALUE pdhFormattedValue = default;
9591
long timeBase = newSample.SystemFrequency;
96-
int result = Interop.PerfCounter.FormatFromRawValue((uint)newCounterType, Interop.Kernel32.PerformanceCounterOptions.PDH_FMT_DOUBLE | Interop.Kernel32.PerformanceCounterOptions.PDH_FMT_NOSCALE | Interop.Kernel32.PerformanceCounterOptions.PDH_FMT_NOCAP100,
92+
int result = Interop.Pdh.PdhFormatFromRawValue((uint)newCounterType, Interop.Kernel32.PerformanceCounterOptions.PDH_FMT_DOUBLE | Interop.Kernel32.PerformanceCounterOptions.PDH_FMT_NOSCALE | Interop.Kernel32.PerformanceCounterOptions.PDH_FMT_NOCAP100,
9793
ref timeBase, ref newPdhValue, ref oldPdhValue, ref pdhFormattedValue);
9894

9995
if (result != Interop.Errors.ERROR_SUCCESS)
@@ -227,21 +223,5 @@ private static void FillInValues(CounterSample oldSample, CounterSample newSampl
227223
break;
228224
}
229225
}
230-
231-
private static void LoadPerfCounterDll()
232-
{
233-
if (s_perfCounterDllLoaded)
234-
return;
235-
236-
string installPath = NetFrameworkUtils.GetLatestBuildDllDirectory(".");
237-
238-
string perfcounterPath = Path.Combine(installPath, "perfcounter.dll");
239-
if (Interop.Kernel32.LoadLibrary(perfcounterPath) == IntPtr.Zero)
240-
{
241-
throw new Win32Exception(Marshal.GetLastWin32Error());
242-
}
243-
244-
s_perfCounterDllLoaded = true;
245-
}
246226
}
247227
}

src/libraries/System.Diagnostics.PerformanceCounter/tests/CounterCreationDataCollectionTests.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ namespace System.Diagnostics.Tests
1010
{
1111
public static class CounterCreationDataCollectionTests
1212
{
13-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
13+
[Fact]
1414
public static void CounterCreationDataCollection_CreateCounterCreationDataCollection_Empty()
1515
{
1616
CounterCreationDataCollection ccdc = new CounterCreationDataCollection();
1717
Assert.Equal(0, ccdc.Count);
1818
}
1919

20-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
20+
[Fact]
2121
public static void CounterCreationDataCollection_CreateCounterCreationDataCollection_CCDC()
2222
{
2323
CounterCreationData[] ccds = { new CounterCreationData("Simple1", "Simple Help", PerformanceCounterType.RawBase), new CounterCreationData("Simple2", "Simple Help", PerformanceCounterType.RawBase) };
@@ -27,7 +27,7 @@ public static void CounterCreationDataCollection_CreateCounterCreationDataCollec
2727
Assert.Equal(2, ccdc2.Count);
2828
}
2929

30-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
30+
[Fact]
3131
public static void CounterCreationDataCollection_CreateCounterCreationDataCollection_Array()
3232
{
3333
CounterCreationData[] ccds = { new CounterCreationData("Simple1", "Simple Help", PerformanceCounterType.RawBase), new CounterCreationData("Simple2", "Simple Help", PerformanceCounterType.RawBase) };
@@ -37,7 +37,7 @@ public static void CounterCreationDataCollection_CreateCounterCreationDataCollec
3737
Assert.Equal(0, ccdc.IndexOf(ccds[0]));
3838
}
3939

40-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
40+
[Fact]
4141
public static void CounterCreationDataCollection_CreateCounterCreationDataCollection_Invalid()
4242
{
4343
CounterCreationData[] ccds = null;
@@ -46,7 +46,7 @@ public static void CounterCreationDataCollection_CreateCounterCreationDataCollec
4646
Assert.Throws<ArgumentNullException>(() => new CounterCreationDataCollection(ccdc));
4747
}
4848

49-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
49+
[Fact]
5050
public static void CounterCreationDataCollection_SetIndex2()
5151
{
5252
CounterCreationData[] ccds = { new CounterCreationData("Simple1", "Simple Help", PerformanceCounterType.RawBase), new CounterCreationData("Simple2", "Simple Help", PerformanceCounterType.RawBase) };
@@ -59,7 +59,7 @@ public static void CounterCreationDataCollection_SetIndex2()
5959
Assert.Equal(ccd, ccdc[1]);
6060
}
6161

62-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
62+
[Fact]
6363
public static void CounterCreationDataCollection_Remove()
6464
{
6565
CounterCreationData[] ccds = { new CounterCreationData("Simple1", "Simple Help", PerformanceCounterType.RawBase), new CounterCreationData("Simple2", "Simple Help", PerformanceCounterType.RawBase) };
@@ -69,7 +69,7 @@ public static void CounterCreationDataCollection_Remove()
6969
Assert.False(ccdc.Contains(ccds[0]));
7070
}
7171

72-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
72+
[Fact]
7373
public static void CounterCreationDataCollection_Insert()
7474
{
7575
CounterCreationData[] ccds = { new CounterCreationData("Simple1", "Simple Help", PerformanceCounterType.RawBase), new CounterCreationData("Simple2", "Simple Help", PerformanceCounterType.RawBase) };
@@ -82,7 +82,7 @@ public static void CounterCreationDataCollection_Insert()
8282
Assert.Equal(1, ccdc.IndexOf(ccd));
8383
}
8484

85-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
85+
[Fact]
8686
public static void CounterCreationDataCollection_CopyTo()
8787
{
8888
CounterCreationData[] ccds = { new CounterCreationData("Simple1", "Simple Help", PerformanceCounterType.RawBase), new CounterCreationData("Simple2", "Simple Help", PerformanceCounterType.RawBase) };

src/libraries/System.Diagnostics.PerformanceCounter/tests/CounterCreationDataTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace System.Diagnostics.Tests
1111
{
1212
public static class CounterCreationDataTests
1313
{
14-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
14+
[Fact]
1515
public static void CounterCreationData_CreateCounterCreationData_SimpleSimpleHelpRawBase()
1616
{
1717
CounterCreationData ccd = new CounterCreationData("Simple", "Simple Help", PerformanceCounterType.RawBase);
@@ -21,7 +21,7 @@ public static void CounterCreationData_CreateCounterCreationData_SimpleSimpleHel
2121
Assert.Equal(PerformanceCounterType.RawBase, ccd.CounterType);
2222
}
2323

24-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
24+
[Fact]
2525
public static void CounterCreationData_SetCounterType_Invalud()
2626
{
2727
CounterCreationData ccd = new CounterCreationData("Simple", "Simple Help", PerformanceCounterType.RawBase);

src/libraries/System.Diagnostics.PerformanceCounter/tests/CounterSampleCalculatorTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace System.Diagnostics.Tests
1010
{
1111
public static class CounterSampleCalculatorTests
1212
{
13-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
13+
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteAndReadNetPerfCounters))]
1414
public static void CounterSampleCalculator_ElapsedTime()
1515
{
1616
var name = nameof(CounterSampleCalculator_ElapsedTime) + "_Counter";

src/libraries/System.Diagnostics.PerformanceCounter/tests/CounterSampleTests.cs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace System.Diagnostics.Tests
1010
{
1111
public static class CounterSampleTests
1212
{
13-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
13+
[Fact]
1414
public static void CounterSample_Constructor_EmptyCounterSample()
1515
{
1616
CounterSample counterSample = new CounterSample();
@@ -24,7 +24,7 @@ public static void CounterSample_Constructor_EmptyCounterSample()
2424
Assert.Equal(0, counterSample.TimeStamp100nSec);
2525
}
2626

27-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
27+
[Fact]
2828
public static void CounterSample_Constructor_CounterSample()
2929
{
3030
long timeStamp = DateTime.Now.ToFileTime();
@@ -39,17 +39,15 @@ public static void CounterSample_Constructor_CounterSample()
3939
Assert.Equal(timeStamp, counterSample.TimeStamp100nSec);
4040
}
4141

42-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
43-
[ActiveIssue("https://github.com/dotnet/runtime/issues/34409", TestPlatforms.Windows, TargetFrameworkMonikers.Netcoreapp, TestRuntimes.Mono)]
42+
[Fact]
4443
public static void CounterSample_Calculate_CalculateCounterSample()
4544
{
4645
CounterSample counterSample = new CounterSample(5, 0, 0, 0, 0, 0, PerformanceCounterType.NumberOfItems32);
4746

4847
Assert.Equal(5, CounterSample.Calculate(counterSample));
4948
}
5049

51-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
52-
[ActiveIssue("https://github.com/dotnet/runtime/issues/34409", TestPlatforms.Windows, TargetFrameworkMonikers.Netcoreapp, TestRuntimes.Mono)]
50+
[Fact]
5351
public static void CounterSample_Calculate_CalculateCounterSampleCounterSample()
5452
{
5553
CounterSample counterSample1 = new CounterSample(5, 0, 0, 1, 0, 0, PerformanceCounterType.CounterDelta32);
@@ -58,7 +56,7 @@ public static void CounterSample_Calculate_CalculateCounterSampleCounterSample()
5856
Assert.Equal(10, CounterSample.Calculate(counterSample1, counterSample2));
5957
}
6058

61-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
59+
[Fact]
6260
public static void CounterSample_Equal()
6361
{
6462
CounterSample counterSample1 = new CounterSample(5, 0, 0, 1, 0, 0, PerformanceCounterType.CounterDelta32);
@@ -67,7 +65,7 @@ public static void CounterSample_Equal()
6765
Assert.Equal(counterSample1, counterSample2);
6866
}
6967

70-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
68+
[Fact]
7169
public static void CounterSample_opInequality()
7270
{
7371
CounterSample counterSample1 = new CounterSample(5, 0, 0, 1, 0, 0, PerformanceCounterType.CounterDelta32);
@@ -76,7 +74,7 @@ public static void CounterSample_opInequality()
7674
Assert.True(counterSample1 != counterSample2);
7775
}
7876

79-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
77+
[Fact]
8078
public static void CounterSample_opEquality()
8179
{
8280
CounterSample counterSample1 = new CounterSample(5, 0, 0, 1, 0, 0, PerformanceCounterType.CounterDelta32);
@@ -85,7 +83,7 @@ public static void CounterSample_opEquality()
8583
Assert.True(counterSample1 == counterSample2);
8684
}
8785

88-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
86+
[Fact]
8987
public static void CounterSample_GetHashCode()
9088
{
9189
CounterSample counterSample1 = new CounterSample(5, 0, 0, 1, 0, 0, PerformanceCounterType.CounterDelta32);

src/libraries/System.Diagnostics.PerformanceCounter/tests/Helpers.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// Licensed to the .NET Foundation under one or more agreements.
22
// The .NET Foundation licenses this file to you under the MIT license.
3+
using System.IO;
34
using System.Threading;
45
using Xunit;
56

@@ -12,7 +13,9 @@ namespace System.Diagnostics.Tests
1213
internal class Helpers
1314
{
1415
public static bool IsElevatedAndCanWriteToPerfCounters { get => AdminHelpers.IsProcessElevated() && CanWriteToPerfCounters; }
15-
public static bool CanWriteToPerfCounters { get => PlatformDetection.IsNotWindowsNanoServer && PlatformDetection.IsNotArmNorArm64Process; }
16+
public static bool IsElevatedAndCanWriteAndReadNetPerfCounters { get => AdminHelpers.IsProcessElevated() && CanWriteToPerfCounters && CanReadNetPerfCounters; }
17+
public static bool CanWriteToPerfCounters { get => PlatformDetection.IsNotWindowsNanoServer; }
18+
public static bool CanReadNetPerfCounters { get => File.Exists(Environment.SystemDirectory + Path.DirectorySeparatorChar + "netfxperf.dll"); }
1619

1720
public static string CreateCategory(string name, PerformanceCounterCategoryType categoryType)
1821
{

src/libraries/System.Diagnostics.PerformanceCounter/tests/InstanceDataTests.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace System.Diagnostics.Tests
1010
{
1111
public static class InstanceDataTests
1212
{
13-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
13+
[Fact]
1414
public static void InstanceData_CreateInstanceData_FromCounterSample()
1515
{
1616
long timestamp = DateTime.Now.ToFileTime();
@@ -22,7 +22,7 @@ public static void InstanceData_CreateInstanceData_FromCounterSample()
2222
Assert.Equal(1, id.RawValue);
2323
}
2424

25-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
25+
[Fact]
2626
public static void InstanceDataCollection_GetItem_ExistingCounter()
2727
{
2828
InstanceDataCollection idc = GetInstanceDataCollection();
@@ -41,7 +41,7 @@ public static void InstanceDataCollection_GetItem_ExistingCounter()
4141
}
4242
}
4343

44-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
44+
[Fact]
4545
public static void InstanceDataCollection_NullTest()
4646
{
4747
InstanceDataCollection idc = GetInstanceDataCollection();
@@ -50,7 +50,7 @@ public static void InstanceDataCollection_NullTest()
5050
Assert.Throws<ArgumentNullException>(() => idc.Contains(null));
5151
}
5252

53-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
53+
[Fact]
5454
public static void InstanceDataCollection_GetKeys()
5555
{
5656
InstanceDataCollection idc = GetInstanceDataCollection();
@@ -61,7 +61,7 @@ public static void InstanceDataCollection_GetKeys()
6161
Assert.True(keys.Length > 0);
6262
}
6363

64-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
64+
[Fact]
6565
public static void InstanceDataCollection_GetValues()
6666
{
6767
InstanceDataCollection idc = GetInstanceDataCollection();
@@ -72,47 +72,47 @@ public static void InstanceDataCollection_GetValues()
7272
Assert.True(values.Length > 0);
7373
}
7474

75-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
75+
[Fact]
7676
public static void InstanceDataCollectionCollection_GetItem_Invalid()
7777
{
7878
InstanceDataCollectionCollection idcc = GetInstanceDataCollectionCollection();
7979

8080
Assert.Throws<ArgumentNullException>(() => idcc[null]);
8181
}
8282

83-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
83+
[Fact]
8484
public static void InstanceDataCollectionCollection_GetKeys()
8585
{
8686
InstanceDataCollectionCollection idcc = GetInstanceDataCollectionCollection();
8787

8888
Assert.True(idcc.Keys.Count > 0);
8989
}
9090

91-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
91+
[Fact]
9292
public static void InstanceDataCollectionCollection_GetValues()
9393
{
9494
InstanceDataCollectionCollection idcc = GetInstanceDataCollectionCollection();
9595

9696
Assert.True(idcc.Values.Count > 0);
9797
}
9898

99-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
99+
[Fact]
100100
public static void InstanceDataCollectionCollection_Contains_Valid()
101101
{
102102
InstanceDataCollectionCollection idcc = GetInstanceDataCollectionCollection();
103103

104104
Assert.False(idcc.Contains("Not a real instance"));
105105
}
106106

107-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
107+
[Fact]
108108
public static void InstanceDataCollectionCollection_Contains_inValid()
109109
{
110110
InstanceDataCollectionCollection idcc = GetInstanceDataCollectionCollection();
111111

112112
Assert.Throws<ArgumentNullException>(() => idcc.Contains(null));
113113
}
114114

115-
[ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))]
115+
[Fact]
116116
public static void InstanceDataCollectionCollection_CopyTo()
117117
{
118118
InstanceDataCollectionCollection idcc = GetInstanceDataCollectionCollection();

0 commit comments

Comments
 (0)