From f589278150e8dfdee221aa4fb1140a673e6d5931 Mon Sep 17 00:00:00 2001 From: Eric StJohn Date: Mon, 23 Nov 2020 23:00:45 -0800 Subject: [PATCH 1/3] 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. --- .../src/Interop/Windows/Interop.Libraries.cs | 2 +- .../Interop.PdhFormatFromRawValue.cs} | 6 ++--- ...stem.Diagnostics.PerformanceCounter.csproj | 4 ++-- .../Diagnostics/CounterSampleCalculator.cs | 22 +------------------ .../tests/Helpers.cs | 2 +- 5 files changed, 8 insertions(+), 28 deletions(-) rename src/libraries/Common/src/Interop/Windows/{PerfCounter/Interop.FormatFromRawValue.cs => Pdh/Interop.PdhFormatFromRawValue.cs} (78%) diff --git a/src/libraries/Common/src/Interop/Windows/Interop.Libraries.cs b/src/libraries/Common/src/Interop/Windows/Interop.Libraries.cs index 74c014c717993..6b1006caf3932 100644 --- a/src/libraries/Common/src/Interop/Windows/Interop.Libraries.cs +++ b/src/libraries/Common/src/Interop/Windows/Interop.Libraries.cs @@ -19,7 +19,7 @@ internal static partial class Libraries internal const string Odbc32 = "odbc32.dll"; internal const string Ole32 = "ole32.dll"; internal const string OleAut32 = "oleaut32.dll"; - internal const string PerfCounter = "perfcounter.dll"; + internal const string Pdh = "pdh.dll"; internal const string Secur32 = "secur32.dll"; internal const string Shell32 = "shell32.dll"; internal const string SspiCli = "sspicli.dll"; diff --git a/src/libraries/Common/src/Interop/Windows/PerfCounter/Interop.FormatFromRawValue.cs b/src/libraries/Common/src/Interop/Windows/Pdh/Interop.PdhFormatFromRawValue.cs similarity index 78% rename from src/libraries/Common/src/Interop/Windows/PerfCounter/Interop.FormatFromRawValue.cs rename to src/libraries/Common/src/Interop/Windows/Pdh/Interop.PdhFormatFromRawValue.cs index 3402ed24d9ef6..130dac40cafa5 100644 --- a/src/libraries/Common/src/Interop/Windows/PerfCounter/Interop.FormatFromRawValue.cs +++ b/src/libraries/Common/src/Interop/Windows/Pdh/Interop.PdhFormatFromRawValue.cs @@ -5,10 +5,10 @@ internal partial class Interop { - internal partial class PerfCounter + internal partial class Pdh { - [DllImport(Libraries.PerfCounter, CharSet = CharSet.Unicode)] - public static extern int FormatFromRawValue( + [DllImport(Libraries.Pdh, CharSet = CharSet.Unicode)] + public static extern int PdhFormatFromRawValue( uint dwCounterType, uint dwFormat, ref long pTimeBase, diff --git a/src/libraries/System.Diagnostics.PerformanceCounter/src/System.Diagnostics.PerformanceCounter.csproj b/src/libraries/System.Diagnostics.PerformanceCounter/src/System.Diagnostics.PerformanceCounter.csproj index 1499b5c6fe656..4ab5b04836005 100644 --- a/src/libraries/System.Diagnostics.PerformanceCounter/src/System.Diagnostics.PerformanceCounter.csproj +++ b/src/libraries/System.Diagnostics.PerformanceCounter/src/System.Diagnostics.PerformanceCounter.csproj @@ -110,8 +110,8 @@ Link="Common\Interop\Windows\Kernel32\Interop.VirtualQuery.cs" /> - + public static class CounterSampleCalculator { - private static volatile bool s_perfCounterDllLoaded; - /// /// Converts 100NS elapsed time to fractional seconds /// @@ -89,11 +87,9 @@ public static float ComputeCounterValue(CounterSample oldSample, CounterSample n FillInValues(oldSample, newSample, ref oldPdhValue, ref newPdhValue); - LoadPerfCounterDll(); - Interop.Kernel32.PerformanceCounterOptions.PDH_FMT_COUNTERVALUE pdhFormattedValue = default; long timeBase = newSample.SystemFrequency; - 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, + 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, ref timeBase, ref newPdhValue, ref oldPdhValue, ref pdhFormattedValue); if (result != Interop.Errors.ERROR_SUCCESS) @@ -227,21 +223,5 @@ private static void FillInValues(CounterSample oldSample, CounterSample newSampl break; } } - - private static void LoadPerfCounterDll() - { - if (s_perfCounterDllLoaded) - return; - - string installPath = NetFrameworkUtils.GetLatestBuildDllDirectory("."); - - string perfcounterPath = Path.Combine(installPath, "perfcounter.dll"); - if (Interop.Kernel32.LoadLibrary(perfcounterPath) == IntPtr.Zero) - { - throw new Win32Exception(Marshal.GetLastWin32Error()); - } - - s_perfCounterDllLoaded = true; - } } } diff --git a/src/libraries/System.Diagnostics.PerformanceCounter/tests/Helpers.cs b/src/libraries/System.Diagnostics.PerformanceCounter/tests/Helpers.cs index 19a27141e94f7..0eb29e27cedee 100644 --- a/src/libraries/System.Diagnostics.PerformanceCounter/tests/Helpers.cs +++ b/src/libraries/System.Diagnostics.PerformanceCounter/tests/Helpers.cs @@ -12,7 +12,7 @@ namespace System.Diagnostics.Tests internal class Helpers { public static bool IsElevatedAndCanWriteToPerfCounters { get => AdminHelpers.IsProcessElevated() && CanWriteToPerfCounters; } - public static bool CanWriteToPerfCounters { get => PlatformDetection.IsNotWindowsNanoServer && PlatformDetection.IsNotArmNorArm64Process; } + public static bool CanWriteToPerfCounters { get => PlatformDetection.IsNotWindowsNanoServer; } public static string CreateCategory(string name, PerformanceCounterCategoryType categoryType) { From 027161a647cddc64e25b016e044516fe40884959 Mon Sep 17 00:00:00 2001 From: Eric StJohn Date: Wed, 25 Nov 2020 07:35:26 -0800 Subject: [PATCH 2/3] Update conditions on performance counter tests. --- .../CounterCreationDataCollectionTests.cs | 16 +++--- .../tests/CounterCreationDataTests.cs | 4 +- .../tests/CounterSampleCalculatorTests.cs | 2 +- .../tests/CounterSampleTests.cs | 18 +++---- .../tests/Helpers.cs | 3 ++ .../tests/InstanceDataTests.cs | 22 ++++---- .../tests/PerformanceCounterCategoryTests.cs | 52 +++++++++---------- .../tests/PerformanceCounterTests.cs | 33 ++++++------ .../tests/PerformanceDataTests.cs | 2 +- 9 files changed, 76 insertions(+), 76 deletions(-) diff --git a/src/libraries/System.Diagnostics.PerformanceCounter/tests/CounterCreationDataCollectionTests.cs b/src/libraries/System.Diagnostics.PerformanceCounter/tests/CounterCreationDataCollectionTests.cs index 0470116bd3a01..c018fc8571dfd 100644 --- a/src/libraries/System.Diagnostics.PerformanceCounter/tests/CounterCreationDataCollectionTests.cs +++ b/src/libraries/System.Diagnostics.PerformanceCounter/tests/CounterCreationDataCollectionTests.cs @@ -10,14 +10,14 @@ namespace System.Diagnostics.Tests { public static class CounterCreationDataCollectionTests { - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void CounterCreationDataCollection_CreateCounterCreationDataCollection_Empty() { CounterCreationDataCollection ccdc = new CounterCreationDataCollection(); Assert.Equal(0, ccdc.Count); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void CounterCreationDataCollection_CreateCounterCreationDataCollection_CCDC() { 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 Assert.Equal(2, ccdc2.Count); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void CounterCreationDataCollection_CreateCounterCreationDataCollection_Array() { 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 Assert.Equal(0, ccdc.IndexOf(ccds[0])); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void CounterCreationDataCollection_CreateCounterCreationDataCollection_Invalid() { CounterCreationData[] ccds = null; @@ -46,7 +46,7 @@ public static void CounterCreationDataCollection_CreateCounterCreationDataCollec Assert.Throws(() => new CounterCreationDataCollection(ccdc)); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void CounterCreationDataCollection_SetIndex2() { 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() Assert.Equal(ccd, ccdc[1]); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void CounterCreationDataCollection_Remove() { 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() Assert.False(ccdc.Contains(ccds[0])); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void CounterCreationDataCollection_Insert() { 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() Assert.Equal(1, ccdc.IndexOf(ccd)); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void CounterCreationDataCollection_CopyTo() { CounterCreationData[] ccds = { new CounterCreationData("Simple1", "Simple Help", PerformanceCounterType.RawBase), new CounterCreationData("Simple2", "Simple Help", PerformanceCounterType.RawBase) }; diff --git a/src/libraries/System.Diagnostics.PerformanceCounter/tests/CounterCreationDataTests.cs b/src/libraries/System.Diagnostics.PerformanceCounter/tests/CounterCreationDataTests.cs index 8b818c5efa332..f7a5c00f16a25 100644 --- a/src/libraries/System.Diagnostics.PerformanceCounter/tests/CounterCreationDataTests.cs +++ b/src/libraries/System.Diagnostics.PerformanceCounter/tests/CounterCreationDataTests.cs @@ -11,7 +11,7 @@ namespace System.Diagnostics.Tests { public static class CounterCreationDataTests { - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void CounterCreationData_CreateCounterCreationData_SimpleSimpleHelpRawBase() { CounterCreationData ccd = new CounterCreationData("Simple", "Simple Help", PerformanceCounterType.RawBase); @@ -21,7 +21,7 @@ public static void CounterCreationData_CreateCounterCreationData_SimpleSimpleHel Assert.Equal(PerformanceCounterType.RawBase, ccd.CounterType); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void CounterCreationData_SetCounterType_Invalud() { CounterCreationData ccd = new CounterCreationData("Simple", "Simple Help", PerformanceCounterType.RawBase); diff --git a/src/libraries/System.Diagnostics.PerformanceCounter/tests/CounterSampleCalculatorTests.cs b/src/libraries/System.Diagnostics.PerformanceCounter/tests/CounterSampleCalculatorTests.cs index b45e702478813..4173d201c8a89 100644 --- a/src/libraries/System.Diagnostics.PerformanceCounter/tests/CounterSampleCalculatorTests.cs +++ b/src/libraries/System.Diagnostics.PerformanceCounter/tests/CounterSampleCalculatorTests.cs @@ -10,7 +10,7 @@ namespace System.Diagnostics.Tests { public static class CounterSampleCalculatorTests { - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteAndReadNetPerfCounters))] public static void CounterSampleCalculator_ElapsedTime() { var name = nameof(CounterSampleCalculator_ElapsedTime) + "_Counter"; diff --git a/src/libraries/System.Diagnostics.PerformanceCounter/tests/CounterSampleTests.cs b/src/libraries/System.Diagnostics.PerformanceCounter/tests/CounterSampleTests.cs index 3625a77602119..b53733c71b03a 100644 --- a/src/libraries/System.Diagnostics.PerformanceCounter/tests/CounterSampleTests.cs +++ b/src/libraries/System.Diagnostics.PerformanceCounter/tests/CounterSampleTests.cs @@ -10,7 +10,7 @@ namespace System.Diagnostics.Tests { public static class CounterSampleTests { - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void CounterSample_Constructor_EmptyCounterSample() { CounterSample counterSample = new CounterSample(); @@ -24,7 +24,7 @@ public static void CounterSample_Constructor_EmptyCounterSample() Assert.Equal(0, counterSample.TimeStamp100nSec); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void CounterSample_Constructor_CounterSample() { long timeStamp = DateTime.Now.ToFileTime(); @@ -39,8 +39,7 @@ public static void CounterSample_Constructor_CounterSample() Assert.Equal(timeStamp, counterSample.TimeStamp100nSec); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] - [ActiveIssue("https://github.com/dotnet/runtime/issues/34409", TestPlatforms.Windows, TargetFrameworkMonikers.Netcoreapp, TestRuntimes.Mono)] + [Fact] public static void CounterSample_Calculate_CalculateCounterSample() { CounterSample counterSample = new CounterSample(5, 0, 0, 0, 0, 0, PerformanceCounterType.NumberOfItems32); @@ -48,8 +47,7 @@ public static void CounterSample_Calculate_CalculateCounterSample() Assert.Equal(5, CounterSample.Calculate(counterSample)); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] - [ActiveIssue("https://github.com/dotnet/runtime/issues/34409", TestPlatforms.Windows, TargetFrameworkMonikers.Netcoreapp, TestRuntimes.Mono)] + [Fact] public static void CounterSample_Calculate_CalculateCounterSampleCounterSample() { CounterSample counterSample1 = new CounterSample(5, 0, 0, 1, 0, 0, PerformanceCounterType.CounterDelta32); @@ -58,7 +56,7 @@ public static void CounterSample_Calculate_CalculateCounterSampleCounterSample() Assert.Equal(10, CounterSample.Calculate(counterSample1, counterSample2)); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void CounterSample_Equal() { CounterSample counterSample1 = new CounterSample(5, 0, 0, 1, 0, 0, PerformanceCounterType.CounterDelta32); @@ -67,7 +65,7 @@ public static void CounterSample_Equal() Assert.Equal(counterSample1, counterSample2); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void CounterSample_opInequality() { CounterSample counterSample1 = new CounterSample(5, 0, 0, 1, 0, 0, PerformanceCounterType.CounterDelta32); @@ -76,7 +74,7 @@ public static void CounterSample_opInequality() Assert.True(counterSample1 != counterSample2); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void CounterSample_opEquality() { CounterSample counterSample1 = new CounterSample(5, 0, 0, 1, 0, 0, PerformanceCounterType.CounterDelta32); @@ -85,7 +83,7 @@ public static void CounterSample_opEquality() Assert.True(counterSample1 == counterSample2); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void CounterSample_GetHashCode() { CounterSample counterSample1 = new CounterSample(5, 0, 0, 1, 0, 0, PerformanceCounterType.CounterDelta32); diff --git a/src/libraries/System.Diagnostics.PerformanceCounter/tests/Helpers.cs b/src/libraries/System.Diagnostics.PerformanceCounter/tests/Helpers.cs index 0eb29e27cedee..0cf90e9e4682e 100644 --- a/src/libraries/System.Diagnostics.PerformanceCounter/tests/Helpers.cs +++ b/src/libraries/System.Diagnostics.PerformanceCounter/tests/Helpers.cs @@ -1,5 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.IO; using System.Threading; using Xunit; @@ -12,7 +13,9 @@ namespace System.Diagnostics.Tests internal class Helpers { public static bool IsElevatedAndCanWriteToPerfCounters { get => AdminHelpers.IsProcessElevated() && CanWriteToPerfCounters; } + public static bool IsElevatedAndCanWriteAndReadNetPerfCounters { get => AdminHelpers.IsProcessElevated() && CanWriteToPerfCounters && CanReadNetPerfCounters; } public static bool CanWriteToPerfCounters { get => PlatformDetection.IsNotWindowsNanoServer; } + public static bool CanReadNetPerfCounters { get => File.Exists(Environment.SystemDirectory + Path.DirectorySeparatorChar + "netfxperf.dll"); } public static string CreateCategory(string name, PerformanceCounterCategoryType categoryType) { diff --git a/src/libraries/System.Diagnostics.PerformanceCounter/tests/InstanceDataTests.cs b/src/libraries/System.Diagnostics.PerformanceCounter/tests/InstanceDataTests.cs index fbe4ac89493e3..7ff34aaafb263 100644 --- a/src/libraries/System.Diagnostics.PerformanceCounter/tests/InstanceDataTests.cs +++ b/src/libraries/System.Diagnostics.PerformanceCounter/tests/InstanceDataTests.cs @@ -10,7 +10,7 @@ namespace System.Diagnostics.Tests { public static class InstanceDataTests { - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void InstanceData_CreateInstanceData_FromCounterSample() { long timestamp = DateTime.Now.ToFileTime(); @@ -22,7 +22,7 @@ public static void InstanceData_CreateInstanceData_FromCounterSample() Assert.Equal(1, id.RawValue); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void InstanceDataCollection_GetItem_ExistingCounter() { InstanceDataCollection idc = GetInstanceDataCollection(); @@ -41,7 +41,7 @@ public static void InstanceDataCollection_GetItem_ExistingCounter() } } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void InstanceDataCollection_NullTest() { InstanceDataCollection idc = GetInstanceDataCollection(); @@ -50,7 +50,7 @@ public static void InstanceDataCollection_NullTest() Assert.Throws(() => idc.Contains(null)); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void InstanceDataCollection_GetKeys() { InstanceDataCollection idc = GetInstanceDataCollection(); @@ -61,7 +61,7 @@ public static void InstanceDataCollection_GetKeys() Assert.True(keys.Length > 0); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void InstanceDataCollection_GetValues() { InstanceDataCollection idc = GetInstanceDataCollection(); @@ -72,7 +72,7 @@ public static void InstanceDataCollection_GetValues() Assert.True(values.Length > 0); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void InstanceDataCollectionCollection_GetItem_Invalid() { InstanceDataCollectionCollection idcc = GetInstanceDataCollectionCollection(); @@ -80,7 +80,7 @@ public static void InstanceDataCollectionCollection_GetItem_Invalid() Assert.Throws(() => idcc[null]); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void InstanceDataCollectionCollection_GetKeys() { InstanceDataCollectionCollection idcc = GetInstanceDataCollectionCollection(); @@ -88,7 +88,7 @@ public static void InstanceDataCollectionCollection_GetKeys() Assert.True(idcc.Keys.Count > 0); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void InstanceDataCollectionCollection_GetValues() { InstanceDataCollectionCollection idcc = GetInstanceDataCollectionCollection(); @@ -96,7 +96,7 @@ public static void InstanceDataCollectionCollection_GetValues() Assert.True(idcc.Values.Count > 0); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void InstanceDataCollectionCollection_Contains_Valid() { InstanceDataCollectionCollection idcc = GetInstanceDataCollectionCollection(); @@ -104,7 +104,7 @@ public static void InstanceDataCollectionCollection_Contains_Valid() Assert.False(idcc.Contains("Not a real instance")); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void InstanceDataCollectionCollection_Contains_inValid() { InstanceDataCollectionCollection idcc = GetInstanceDataCollectionCollection(); @@ -112,7 +112,7 @@ public static void InstanceDataCollectionCollection_Contains_inValid() Assert.Throws(() => idcc.Contains(null)); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void InstanceDataCollectionCollection_CopyTo() { InstanceDataCollectionCollection idcc = GetInstanceDataCollectionCollection(); diff --git a/src/libraries/System.Diagnostics.PerformanceCounter/tests/PerformanceCounterCategoryTests.cs b/src/libraries/System.Diagnostics.PerformanceCounter/tests/PerformanceCounterCategoryTests.cs index 5c2ea1ee89703..1760032fa2535 100644 --- a/src/libraries/System.Diagnostics.PerformanceCounter/tests/PerformanceCounterCategoryTests.cs +++ b/src/libraries/System.Diagnostics.PerformanceCounter/tests/PerformanceCounterCategoryTests.cs @@ -10,14 +10,14 @@ namespace System.Diagnostics.Tests { public static class PerformanceCounterCategoryTests { - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_CreatePerformanceCounterCategory_DefaultConstructor() { PerformanceCounterCategory pcc = new PerformanceCounterCategory(); Assert.Equal(".", pcc.MachineName); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_CreatePerformanceCounterCategory_NullTests() { Assert.Throws(() => new PerformanceCounterCategory(null, ".")); @@ -25,7 +25,7 @@ public static void PerformanceCounterCategory_CreatePerformanceCounterCategory_N Assert.Throws(() => new PerformanceCounterCategory("category", string.Empty)); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_SetCategoryName_Valid() { PerformanceCounterCategory pcc = new PerformanceCounterCategory(); @@ -33,7 +33,7 @@ public static void PerformanceCounterCategory_SetCategoryName_Valid() Assert.Equal("Processor", pcc.CategoryName); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_SetCategoryName_Invalid() { PerformanceCounterCategory pcc = new PerformanceCounterCategory(); @@ -42,7 +42,7 @@ public static void PerformanceCounterCategory_SetCategoryName_Invalid() Assert.Throws(() => pcc.CategoryName = string.Empty); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_SetMachineName_Invalid() { PerformanceCounterCategory pcc = new PerformanceCounterCategory(); @@ -50,7 +50,7 @@ public static void PerformanceCounterCategory_SetMachineName_Invalid() Assert.Throws(() => pcc.MachineName = string.Empty); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_SetMachineName_ValidCategoryNameNull() { PerformanceCounterCategory pcc = new PerformanceCounterCategory(); @@ -59,7 +59,7 @@ public static void PerformanceCounterCategory_SetMachineName_ValidCategoryNameNu Assert.Equal("machineName", pcc.MachineName); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_SetMachineName_ValidCategoryNameNotNull() { PerformanceCounterCategory pcc = new PerformanceCounterCategory(); @@ -69,7 +69,7 @@ public static void PerformanceCounterCategory_SetMachineName_ValidCategoryNameNo Assert.Equal("machineName", pcc.MachineName); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_GetCounterHelp_Invalid() { PerformanceCounterCategory pcc = new PerformanceCounterCategory(); @@ -77,7 +77,7 @@ public static void PerformanceCounterCategory_GetCounterHelp_Invalid() Assert.Throws(() => pcc.CategoryHelp); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteAndReadNetPerfCounters))] public static void PerformanceCounterCategory_CategoryType_MultiInstance() { var name = nameof(PerformanceCounterCategory_CategoryType_MultiInstance) + "_Counter"; @@ -90,7 +90,7 @@ public static void PerformanceCounterCategory_CategoryType_MultiInstance() PerformanceCounterCategory.Delete(category); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteAndReadNetPerfCounters))] public static void PerformanceCounterCategory_CategoryType_SingleInstance() { var name = nameof(PerformanceCounterCategory_CategoryType_SingleInstance) + "_Counter"; @@ -152,7 +152,7 @@ public static void PerformanceCounterCategory_Create_Invalid() Assert.Throws(() => PerformanceCounterCategory.Create("Category name", maxCounter, PerformanceCounterCategoryType.SingleInstance, "Counter name", "counter help")); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_GetCategories() { PerformanceCounterCategory[] categories = PerformanceCounterCategory.GetCategories(); @@ -160,13 +160,13 @@ public static void PerformanceCounterCategory_GetCategories() Assert.True(categories.Length > 0); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_GetCategories_StaticInvalid() { Assert.Throws(() => PerformanceCounterCategory.GetCategories(string.Empty)); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_CounterExists_InterruptsPerSec() { PerformanceCounterCategory pcc = Helpers.RetryOnAllPlatforms(() => new PerformanceCounterCategory("Processor")); @@ -174,7 +174,7 @@ public static void PerformanceCounterCategory_CounterExists_InterruptsPerSec() Assert.True(pcc.CounterExists("Interrupts/sec")); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_CounterExists_Invalid() { PerformanceCounterCategory pcc = new PerformanceCounterCategory(); @@ -183,13 +183,13 @@ public static void PerformanceCounterCategory_CounterExists_Invalid() Assert.Throws(() => pcc.CounterExists("Interrupts/sec")); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_CounterExists_StaticInterruptsPerSec() { Assert.True(PerformanceCounterCategory.CounterExists("Interrupts/sec", "Processor")); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_CounterExists_StaticInvalid() { Assert.Throws(() => PerformanceCounterCategory.CounterExists(null, "Processor")); @@ -198,7 +198,7 @@ public static void PerformanceCounterCategory_CounterExists_StaticInvalid() Assert.Throws(() => PerformanceCounterCategory.CounterExists("Interrupts/sec", "Processor", string.Empty)); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_DeleteCategory_Invalid() { Assert.Throws(() => PerformanceCounterCategory.Delete("Processor")); @@ -215,7 +215,7 @@ public static void PerformanceCounterCategory_DeleteCategory() Assert.False(PerformanceCounterCategory.Exists(category)); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_Exists_Invalid() { Assert.Throws(() => PerformanceCounterCategory.Exists(null, ".")); @@ -223,7 +223,7 @@ public static void PerformanceCounterCategory_Exists_Invalid() Assert.Throws(() => PerformanceCounterCategory.Exists("Processor", string.Empty)); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteAndReadNetPerfCounters))] public static void PerformanceCounterCategory_GetCounters() { var name = nameof(PerformanceCounterCategory_GetCounters) + "_Counter"; @@ -236,7 +236,7 @@ public static void PerformanceCounterCategory_GetCounters() PerformanceCounterCategory.Delete(category); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_GetCounters_Invalid() { PerformanceCounterCategory pcc = new PerformanceCounterCategory(); @@ -249,7 +249,7 @@ public static void PerformanceCounterCategory_GetCounters_Invalid() Assert.Throws(() => pcc.GetCounters("Not An Instance")); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_GetInstanceNames_Invalid() { PerformanceCounterCategory pcc = new PerformanceCounterCategory(); @@ -257,7 +257,7 @@ public static void PerformanceCounterCategory_GetInstanceNames_Invalid() Assert.Throws(() => pcc.GetInstanceNames()); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_InstanceExists_Invalid() { PerformanceCounterCategory pcc = new PerformanceCounterCategory(); @@ -266,7 +266,7 @@ public static void PerformanceCounterCategory_InstanceExists_Invalid() Assert.Throws(() => pcc.InstanceExists("")); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_InstanceExists_Static() { PerformanceCounterCategory pcc = Helpers.RetryOnAllPlatforms(() => new PerformanceCounterCategory("Processor")); @@ -280,7 +280,7 @@ public static void PerformanceCounterCategory_InstanceExists_Static() } } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_InstanceExists_StaticInvalid() { Assert.Throws(() => PerformanceCounterCategory.InstanceExists(null, "Processor", ".")); @@ -289,7 +289,7 @@ public static void PerformanceCounterCategory_InstanceExists_StaticInvalid() Assert.Throws(() => PerformanceCounterCategory.InstanceExists("", "Processor", string.Empty)); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_ReadCategory() { PerformanceCounterCategory pcc = Helpers.RetryOnAllPlatforms(() => new PerformanceCounterCategory("Processor")); @@ -299,7 +299,7 @@ public static void PerformanceCounterCategory_ReadCategory() Assert.NotNull(idColCol); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounterCategory_ReadCategory_Invalid() { PerformanceCounterCategory pcc = new PerformanceCounterCategory(); diff --git a/src/libraries/System.Diagnostics.PerformanceCounter/tests/PerformanceCounterTests.cs b/src/libraries/System.Diagnostics.PerformanceCounter/tests/PerformanceCounterTests.cs index 4e3382956106d..96f8cd2d0e1c4 100644 --- a/src/libraries/System.Diagnostics.PerformanceCounter/tests/PerformanceCounterTests.cs +++ b/src/libraries/System.Diagnostics.PerformanceCounter/tests/PerformanceCounterTests.cs @@ -10,7 +10,7 @@ namespace System.Diagnostics.Tests { public static class PerformanceCounterTests { - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounter_CreateCounter_EmptyCounter() { using (PerformanceCounter counterSample = new PerformanceCounter()) @@ -36,7 +36,7 @@ public static void PerformanceCounter_CreateCounter_Count0() } } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounter_CreateCounter_ProcessorCounter() { using (PerformanceCounter counterSample = new PerformanceCounter("Processor", "Interrupts/sec", "0", ".")) @@ -66,7 +66,7 @@ public static void PerformanceCounter_CreateCounter_MultiInstanceReadOnly() } } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteAndReadNetPerfCounters))] public static void PerformanceCounter_CreateCounter_SetReadOnly() { var name = nameof(PerformanceCounter_CreateCounter_SetReadOnly) + "_Counter"; @@ -83,7 +83,7 @@ public static void PerformanceCounter_CreateCounter_SetReadOnly() Helpers.DeleteCategory(name); } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounter_SetProperties_Null() { using (PerformanceCounter counterSample = new PerformanceCounter()) @@ -94,7 +94,7 @@ public static void PerformanceCounter_SetProperties_Null() } } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounter_SetRawValue_ReadOnly() { using (PerformanceCounter counterSample = new PerformanceCounter()) @@ -103,7 +103,7 @@ public static void PerformanceCounter_SetRawValue_ReadOnly() } } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounter_GetRawValue_EmptyCategoryName() { var name = nameof(PerformanceCounter_GetRawValue_EmptyCategoryName) + "_Counter"; @@ -116,7 +116,7 @@ public static void PerformanceCounter_GetRawValue_EmptyCategoryName() } } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounter_GetRawValue_EmptyCounterName() { var name = nameof(PerformanceCounter_GetRawValue_EmptyCounterName) + "_Counter"; @@ -129,7 +129,7 @@ public static void PerformanceCounter_GetRawValue_EmptyCounterName() } } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounter_GetRawValue_CounterDoesNotExist() { var name = nameof(PerformanceCounter_GetRawValue_CounterDoesNotExist) + "_Counter"; @@ -144,7 +144,7 @@ public static void PerformanceCounter_GetRawValue_CounterDoesNotExist() } [ActiveIssue("https://github.com/dotnet/runtime/issues/29753")] - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounter_NextValue_ProcessorCounter() { using (PerformanceCounter counterSample = new PerformanceCounter("Processor", "Interrupts/sec", "0", ".")) @@ -156,7 +156,7 @@ public static void PerformanceCounter_NextValue_ProcessorCounter() } } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounter_BeginInit_ProcessorCounter() { using (PerformanceCounter counterSample = new PerformanceCounter("Processor", "Interrupts/sec", "0", ".")) @@ -167,7 +167,7 @@ public static void PerformanceCounter_BeginInit_ProcessorCounter() } } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [Fact] public static void PerformanceCounter_BeginInitEndInit_ProcessorCounter() { using (PerformanceCounter counterSample = new PerformanceCounter("Processor", "Interrupts/sec", "0", ".")) @@ -179,7 +179,7 @@ public static void PerformanceCounter_BeginInitEndInit_ProcessorCounter() } } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteAndReadNetPerfCounters))] public static void PerformanceCounter_Decrement() { var name = nameof(PerformanceCounter_Decrement) + "_Counter"; @@ -193,7 +193,7 @@ public static void PerformanceCounter_Decrement() } } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteAndReadNetPerfCounters))] public static void PerformanceCounter_Increment() { var name = nameof(PerformanceCounter_Increment) + "_Counter"; @@ -207,7 +207,7 @@ public static void PerformanceCounter_Increment() } } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteAndReadNetPerfCounters))] public static void PerformanceCounter_IncrementBy_IncrementBy2() { var name = nameof(PerformanceCounter_IncrementBy_IncrementBy2) + "_Counter"; @@ -221,7 +221,6 @@ public static void PerformanceCounter_IncrementBy_IncrementBy2() } } - [ActiveIssue("https://github.com/dotnet/runtime/issues/24176")] [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] public static void PerformanceCounter_IncrementBy_IncrementByReadOnly() { @@ -233,7 +232,7 @@ public static void PerformanceCounter_IncrementBy_IncrementByReadOnly() } } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteAndReadNetPerfCounters))] public static void PerformanceCounter_Increment_IncrementReadOnly() { var name = nameof(PerformanceCounter_Increment_IncrementReadOnly) + "_Counter"; @@ -270,7 +269,7 @@ public static void PerformanceCounter_RemoveInstance() } } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteAndReadNetPerfCounters))] public static void PerformanceCounter_NextSample_MultiInstance() { var name = nameof(PerformanceCounter_NextSample_MultiInstance) + "_Counter"; diff --git a/src/libraries/System.Diagnostics.PerformanceCounter/tests/PerformanceDataTests.cs b/src/libraries/System.Diagnostics.PerformanceCounter/tests/PerformanceDataTests.cs index eeef6af01f315..d2864ae7bd3e3 100644 --- a/src/libraries/System.Diagnostics.PerformanceCounter/tests/PerformanceDataTests.cs +++ b/src/libraries/System.Diagnostics.PerformanceCounter/tests/PerformanceDataTests.cs @@ -18,7 +18,7 @@ public PerformanceDataTests(PerformanceDataTestsFixture fixture) } // We run the test only if the stress mode is enabled and the process is elvated. - private static bool IsRunnableEnvironnement => Helpers.IsElevatedAndCanWriteToPerfCounters && TestEnvironment.IsStressModeEnabled && RemoteExecutor.IsSupported; + private static bool IsRunnableEnvironnement => Helpers.IsElevatedAndCanWriteAndReadNetPerfCounters && TestEnvironment.IsStressModeEnabled && RemoteExecutor.IsSupported; /// /// This test was taken from System.Diagnostics.PerformanceData documentation https://msdn.microsoft.com/en-us/library/system.diagnostics.performancedata(v=vs.110).aspx From 924770ce504bc91426561517ed1eda727b62419b Mon Sep 17 00:00:00 2001 From: Eric StJohn Date: Mon, 30 Nov 2020 09:18:39 -0800 Subject: [PATCH 3/3] Condition more perf counter tests --- .../tests/PerformanceCounterTests.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libraries/System.Diagnostics.PerformanceCounter/tests/PerformanceCounterTests.cs b/src/libraries/System.Diagnostics.PerformanceCounter/tests/PerformanceCounterTests.cs index 96f8cd2d0e1c4..bfaf5fba64b3d 100644 --- a/src/libraries/System.Diagnostics.PerformanceCounter/tests/PerformanceCounterTests.cs +++ b/src/libraries/System.Diagnostics.PerformanceCounter/tests/PerformanceCounterTests.cs @@ -47,7 +47,7 @@ public static void PerformanceCounter_CreateCounter_ProcessorCounter() } } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteAndReadNetPerfCounters))] public static void PerformanceCounter_CreateCounter_MultiInstanceReadOnly() { var name = nameof(PerformanceCounter_CreateCounter_MultiInstanceReadOnly) + "_Counter"; @@ -221,7 +221,7 @@ public static void PerformanceCounter_IncrementBy_IncrementBy2() } } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteAndReadNetPerfCounters))] public static void PerformanceCounter_IncrementBy_IncrementByReadOnly() { var name = nameof(PerformanceCounter_IncrementBy_IncrementByReadOnly) + "_Counter"; @@ -243,7 +243,7 @@ public static void PerformanceCounter_Increment_IncrementReadOnly() } } - [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteToPerfCounters))] + [ConditionalFact(typeof(Helpers), nameof(Helpers.IsElevatedAndCanWriteAndReadNetPerfCounters))] public static void PerformanceCounter_Decrement_DecrementReadOnly() { var name = nameof(PerformanceCounter_Decrement_DecrementReadOnly) + "_Counter";