public PerformanceCounterStructure CreateCounter( string perfCounterName, bool supportInstanceNames, out bool usesInstanceNamePlaceholder, out string error) { error = null; try { return(PerformanceCounterUtility.ParsePerformanceCounter( perfCounterName, new string[] { }, new string[] { }, supportInstanceNames, out usesInstanceNamePlaceholder)); } catch (Exception e) { usesInstanceNamePlaceholder = false; PerformanceCollectorEventSource.Log.CounterParsingFailedEvent(e.Message, perfCounterName); error = e.Message; return(null); } }
private PerformanceCounter CreateCounter( string perfCounterName, IEnumerable <string> win32Instances, IEnumerable <string> clrInstances, out bool usesInstanceNamePlaceholder, out string error) { error = null; try { return(PerformanceCounterUtility.ParsePerformanceCounter( perfCounterName, win32Instances, clrInstances, out usesInstanceNamePlaceholder)); } catch (Exception e) { usesInstanceNamePlaceholder = false; PerformanceCollectorEventSource.Log.CounterParsingFailedEvent(e.Message, perfCounterName); error = e.Message; return(null); } }
public void ParsePerformanceCounterTest() { PerformanceCounter pc; pc = PerformanceCounterUtility.ParsePerformanceCounter(@"\Processor(_Total)\% Processor Time", null, null); Assert.AreEqual("Processor", pc.CategoryName); Assert.AreEqual("% Processor Time", pc.CounterName); Assert.AreEqual("_Total", pc.InstanceName); pc = PerformanceCounterUtility.ParsePerformanceCounter(@"\Memory\Available Memory", null, null); Assert.AreEqual("Memory", pc.CategoryName); Assert.AreEqual("Available Memory", pc.CounterName); Assert.AreEqual(string.Empty, pc.InstanceName); }
public void ParsePerformanceCounterTest() { PerformanceCounterStructure pc; bool usesInstanceNamePlaceholder; pc = PerformanceCounterUtility.ParsePerformanceCounter(@"\Processor(_Total)\% Processor Time", null, null, true, out usesInstanceNamePlaceholder); Assert.AreEqual("Processor", pc.CategoryName); Assert.AreEqual("% Processor Time", pc.CounterName); Assert.AreEqual("_Total", pc.InstanceName); pc = PerformanceCounterUtility.ParsePerformanceCounter(@"\Memory\Available Memory", null, null, true, out usesInstanceNamePlaceholder); Assert.AreEqual("Memory", pc.CategoryName); Assert.AreEqual("Available Memory", pc.CounterName); Assert.AreEqual(string.Empty, pc.InstanceName); }
private void InitializePerformanceCollector() { foreach (var counter in QuickPulsePerfCounterList.CountersToCollect) { PerformanceCounter pc = null; bool usesPlaceholder; try { pc = PerformanceCounterUtility.ParsePerformanceCounter(counter.Item2, null, null, out usesPlaceholder); } catch (Exception e) { QuickPulseEventSource.Log.CounterParsingFailedEvent(e.Message, counter.Item2); continue; } if (usesPlaceholder) { // Instance placeholders are not currently supported since they require refresh. Refresh is not implemented at this time. continue; } try { this.performanceCollector.RegisterPerformanceCounter( counter.Item2, counter.Item1.ToString(), pc.CategoryName, pc.CounterName, pc.InstanceName, false, true); QuickPulseEventSource.Log.CounterRegisteredEvent(counter.Item2); } catch (Exception e) { QuickPulseEventSource.Log.CounterRegistrationFailedEvent(e.Message, counter.Item2); } } }
public void PerformanceCounterUtilityPlaceholderExpansionTest() { PerformanceCounterUtility.InvalidatePlaceholderCache(); var win32Instances = PerformanceCounterUtility.GetWin32ProcessInstances(); var clrInstances = PerformanceCounterUtility.GetClrProcessInstances(); bool usesInstanceNamePlaceholder; var pc = PerformanceCounterUtility.ParsePerformanceCounter(@"\Processor(??APP_WIN32_PROC??)\% Processor Time", win32Instances, clrInstances, out usesInstanceNamePlaceholder); Assert.IsFalse(pc.InstanceName.Contains("?")); pc = PerformanceCounterUtility.ParsePerformanceCounter(@"\Processor(??APP_CLR_PROC??)\% Processor Time", win32Instances, clrInstances, out usesInstanceNamePlaceholder); Assert.IsFalse(pc.InstanceName.Contains("?")); pc = PerformanceCounterUtility.ParsePerformanceCounter(@"\Processor(??APP_W3SVC_PROC??)\% Processor Time", win32Instances, clrInstances, out usesInstanceNamePlaceholder); Assert.IsFalse(pc.InstanceName.Contains("?")); pc = PerformanceCounterUtility.ParsePerformanceCounter(@"\ASP.NET Applications(??APP_W3SVC_PROC??)\Request Execution Time", win32Instances, clrInstances, out usesInstanceNamePlaceholder); Assert.IsFalse(pc.InstanceName.Contains("?")); pc = PerformanceCounterUtility.ParsePerformanceCounter(@"\Processor(??NON_EXISTENT??)\% Processor Time", win32Instances, clrInstances, out usesInstanceNamePlaceholder); Assert.AreEqual("??NON_EXISTENT??", pc.InstanceName); // validate placeholder cache state var cache = new PrivateType(typeof(PerformanceCounterUtility)).GetStaticField( "PlaceholderCache", BindingFlags.NonPublic) as ConcurrentDictionary <string, string>; Assert.AreEqual(3, cache.Count); Assert.IsTrue(cache.ContainsKey("APP_WIN32_PROC")); Assert.IsTrue(cache.ContainsKey("APP_CLR_PROC")); Assert.IsTrue(cache.ContainsKey("APP_W3SVC_PROC")); PerformanceCounterUtility.InvalidatePlaceholderCache(); Assert.IsFalse(cache.Any()); }