public static void PerformanceCounterExceptionHandler_Counter_Not_Available()
        {
            // Arrange
            var handler = new PerformanceCounterExceptionHandler()
            {
                Counters = new[]
                {
                    @"\XXXXX\XXXXXX"
                },
                WatchWindow = 1
            };
            var ex = new InvalidOperationException();

            // Act
            var result = handler.HandleException(ex);

            // Assert
            Assert.False(result);
            var counters = (NameValueCollection)ex.Data["Performance Counters"];

            Assert.Equal(1, counters.Count);
            Assert.Equal("N/A", counters[0]);
        }
        public static void PerformanceCounterExceptionHandler()
        {
            // Arrange
            var handler = new PerformanceCounterExceptionHandler()
            {
                Counters = new[]
                {
                    @"\Memory\Pages/sec",
                    @"\PhysicalDisk(_Total)\Avg. Disk Queue Length",
                    @"\Processor(_Total)\% Processor Time"
                }
            };
            var ex = new InvalidOperationException();

            // Act
            var result = handler.HandleException(ex);

            // Assert
            Assert.False(result);
            var counters = (NameValueCollection)ex.Data["Performance Counters"];

            Assert.Equal(3, counters.Count);
            Assert.True(handler.Counters.All(name => NameValueCollectionHelper.HasKey(counters, name)));
        }