public void a_performance_counter_can_be_defined_from_a_category_and_a_counter()
        {
            var counter = new PerformanceCounterDefinition("\\category\\counter");

            Assert.That(counter.CategoryName, Is.EqualTo("category"));
            Assert.That(counter.CounterName, Is.EqualTo("counter"));
            Assert.That(counter.InstanceName, Is.Null);
        }
        public void a_performance_counter_can_be_defined_from_a_category_with_a_particular_instance_and_a_counter()
        {
            var counter = new PerformanceCounterDefinition("\\category(instance)\\counter");

            Assert.That(counter.CategoryName, Is.EqualTo("category"));
            Assert.That(counter.CounterName, Is.EqualTo("counter"));
            Assert.That(counter.InstanceName, Is.EqualTo("instance"));
            Assert.That(counter.AllInstances, Is.False);
        }
        public IEnumerable <Sample> QueryValue(string path)
        {
            try
            {
                var samples    = new List <Sample>();
                var definition = new PerformanceCounterDefinition(path);

                if (definition.AllInstances)
                {
                    var instances = _categoryRepository.GetInstances(definition.CategoryName);

                    foreach (var instance in instances)
                    {
                        var value = _registry.Read(definition.CategoryName, definition.CounterName, instance);

                        if (value.HasValue)
                        {
                            samples.Add(new Sample(instance, value.Value));
                        }
                    }
                }
                else
                {
                    var value = _registry.Read(definition.CategoryName, definition.CounterName, definition.InstanceName);

                    if (value.HasValue)
                    {
                        samples.Add(new Sample(definition.InstanceName, value.Value));
                    }
                }

                return(samples);
            }
            catch (Exception ex)
            {
                ex.Data.Add("Path", path);
                Log.Error("Exception occurred querying performance counter", ex);
            }

            return(Enumerable.Empty <Sample>());
        }
        public IEnumerable<Sample> QueryValue(string path)
        {
            try
            {
                var samples = new List<Sample>();
                var definition = new PerformanceCounterDefinition(path);

                if (definition.AllInstances)
                {
                    var instances = _categoryRepository.GetInstances(definition.CategoryName);

                    foreach (var instance in instances)
                    {
                        var value = _registry.Read(definition.CategoryName, definition.CounterName, instance);

                        if (value.HasValue)
                        {
                            samples.Add(new Sample(instance, value.Value));
                        }
                    }
                }
                else
                {
                    var value = _registry.Read(definition.CategoryName, definition.CounterName, definition.InstanceName);

                    if (value.HasValue)
                    {
                        samples.Add(new Sample(definition.InstanceName, value.Value));
                    }
                }

                return samples;
            }
            catch (Exception ex)
            {
                ex.Data.Add("Path", path);
                Log.Error("Exception occurred querying performance counter", ex);
            }

            return Enumerable.Empty<Sample>();
        }