Exemplo n.º 1
0
        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);
        }
Exemplo n.º 4
0
        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);
                }
            }
        }
Exemplo n.º 6
0
        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());
        }