public void TestCreate()
        {
            const string categoryName = "Category Name";

            using (SingleInstancePerformanceCounterCategory singleInstancePerformanceCounterCategory =
                       new SingleInstancePerformanceCounterCategory(categoryName))
            {
                Assert.That(singleInstancePerformanceCounterCategory.CategoryName, Is.EqualTo(categoryName));
            }
        }
        public void TestGetPerformanceCounter_NullCounter()
        {
            const string categoryName = "Category Name";

            using (SingleInstancePerformanceCounterCategory singleInstancePerformanceCounterCategory =
                       new SingleInstancePerformanceCounterCategory(categoryName))
            {
                Assert.That(() => singleInstancePerformanceCounterCategory.GetPerformanceCounter <AverageTimer32PerformanceCounter>(null),
                            Throws.TypeOf <ArgumentNullException>().And.Property("ParamName").EqualTo("counterName"));
            }
        }
Example #3
0
        public void TestNonExistantCounter(Type performanceCounterType)
        {
            MethodInfo methodInfo;
            SingleInstancePerformanceCounterCategory singleInstancePerformanceCounterCategory;

            singleInstancePerformanceCounterCategory = new SingleInstancePerformanceCounterCategory(CategoryName);
            methodInfo = typeof(SingleInstancePerformanceCounterCategory)
                         .GetMethod("GetPerformanceCounter").MakeGenericMethod(performanceCounterType);
            Assert.That(() => methodInfo.Invoke(singleInstancePerformanceCounterCategory, BindingFlags.Default, null,
                                                new object[] { "Counter does not exist" }, null),
                        Throws.TargetInvocationException.And.Property("InnerException").TypeOf <InvalidOperationException>());
        }
        public void TestGetPerformanceCounter_PercentageRate()
        {
            const string categoryName = "..category name";
            // Leading '.'s place it at the front of the list. Useful for testing.
            const string categoryHelp          = "category help";
            const string percentageCounterName = "percentage counter";
            const string percentageCounterHelp = "percentage help";
            string       baseCounterName       = percentageCounterName + PerformanceCounterConstants.BaseSuffix;

            PercentageRatePerformanceCounter percentageRatePerformanceCounter = null;

            try
            {
                new PerformanceCounterCategoryFactory()
                .AddPercentageRate(percentageCounterName, percentageCounterHelp)
                .CreateCategory(categoryName, categoryHelp, PerformanceCounterCategoryType.SingleInstance);

                using (SingleInstancePerformanceCounterCategory singleInstancePerformanceCounterCategory =
                           new SingleInstancePerformanceCounterCategory(categoryName))
                {
                    percentageRatePerformanceCounter =
                        singleInstancePerformanceCounterCategory.GetPerformanceCounter <PercentageRatePerformanceCounter>(percentageCounterName);

                    Assert.That(percentageRatePerformanceCounter.SampleFraction.CategoryName, Is.EqualTo(categoryName));
                    Assert.That(percentageRatePerformanceCounter.SampleFraction.CounterName,
                                Is.EqualTo(percentageCounterName));
                    Assert.That(percentageRatePerformanceCounter.SampleFraction.CounterHelp,
                                Is.EqualTo(percentageCounterHelp));

                    Assert.That(percentageRatePerformanceCounter.SampleBase.CategoryName, Is.EqualTo(categoryName));
                    Assert.That(percentageRatePerformanceCounter.SampleBase.CounterName, Is.EqualTo(baseCounterName));
                }
            }
            finally
            {
                if (percentageRatePerformanceCounter != null)
                {
                    percentageRatePerformanceCounter.Dispose();
                    percentageRatePerformanceCounter = null;
                }

                if (PerformanceCounterCategory.Exists(categoryName))
                {
                    PerformanceCounterCategory.Delete(categoryName);
                }
            }
        }
        public void TestGetPerformanceCounter_NumberOfItems64()
        {
            const string categoryName = "..category name";
            // Leading '.'s place it at the front of the list. Useful for testing.
            const string categoryHelp = "category help";
            const string numberOfItems64CounterName = "percentage counter";
            const string numberOfItems64CounterHelp = "percentage help";

            NumberOfItems64PerformanceCounter numberOfItems64PerformanceCounter = null;

            try
            {
                new PerformanceCounterCategoryFactory()
                .AddNumberOfItems64(numberOfItems64CounterName, numberOfItems64CounterHelp)
                .CreateCategory(categoryName, categoryHelp, PerformanceCounterCategoryType.SingleInstance);

                using (SingleInstancePerformanceCounterCategory singleInstancePerformanceCounterCategory =
                           new SingleInstancePerformanceCounterCategory(categoryName))
                {
                    numberOfItems64PerformanceCounter =
                        singleInstancePerformanceCounterCategory.GetPerformanceCounter <NumberOfItems64PerformanceCounter>
                            (numberOfItems64CounterName);

                    Assert.That(numberOfItems64PerformanceCounter.Counter.CategoryName,
                                Is.EqualTo(categoryName));
                    Assert.That(numberOfItems64PerformanceCounter.Counter.CounterName,
                                Is.EqualTo(numberOfItems64CounterName));
                    Assert.That(numberOfItems64PerformanceCounter.Counter.CounterHelp,
                                Is.EqualTo(numberOfItems64CounterHelp));
                }
            }
            finally
            {
                if (numberOfItems64PerformanceCounter != null)
                {
                    numberOfItems64PerformanceCounter.Dispose();
                    numberOfItems64PerformanceCounter = null;
                }

                if (PerformanceCounterCategory.Exists(categoryName))
                {
                    PerformanceCounterCategory.Delete(categoryName);
                }
            }
        }
        public void TestGetPerformanceCounter_AverageTimer()
        {
            const string categoryName     = "..category name"; // Leading '.'s place it at the front of the list. Useful for testing.
            const string categoryHelp     = "category help";
            const string timerCounterName = "timer counter";
            const string timerCounterHelp = "timer help";
            string       baseCounterName  = "timer counter" + PerformanceCounterConstants.BaseSuffix;

            AverageTimer32PerformanceCounter averageTimerPerformanceCounter = null;

            try
            {
                new PerformanceCounterCategoryFactory()
                .AddAverageTimer32(timerCounterName, timerCounterHelp)
                .CreateCategory(categoryName, categoryHelp, PerformanceCounterCategoryType.SingleInstance);

                using (SingleInstancePerformanceCounterCategory singleInstancePerformanceCounterCategory =
                           new SingleInstancePerformanceCounterCategory(categoryName))
                {
                    averageTimerPerformanceCounter =
                        singleInstancePerformanceCounterCategory.GetPerformanceCounter <AverageTimer32PerformanceCounter>(timerCounterName);

                    Assert.That(averageTimerPerformanceCounter.Timer.CategoryName, Is.EqualTo(categoryName));
                    Assert.That(averageTimerPerformanceCounter.Timer.CounterName, Is.EqualTo(timerCounterName));
                    Assert.That(averageTimerPerformanceCounter.Timer.CounterHelp, Is.EqualTo(timerCounterHelp));

                    Assert.That(averageTimerPerformanceCounter.Base.CategoryName, Is.EqualTo(categoryName));
                    Assert.That(averageTimerPerformanceCounter.Base.CounterName, Is.EqualTo(baseCounterName));
                }
            }
            finally
            {
                if (averageTimerPerformanceCounter != null)
                {
                    averageTimerPerformanceCounter.Dispose();
                    averageTimerPerformanceCounter = null;
                }

                if (PerformanceCounterCategory.Exists(categoryName))
                {
                    PerformanceCounterCategory.Delete(categoryName);
                }
            }
        }
Example #7
0
        public IEnumerable <TestCaseData> IncorrectCounterTypeDataSource()
        {
            // There must be an easier way of handling method groups. *sigh*
            SingleInstancePerformanceCounterCategory singleInstancePerformanceCounterCategory = new SingleInstancePerformanceCounterCategory(CategoryName);

            yield return
                (new TestCaseData((Func <string, object>)singleInstancePerformanceCounterCategory.GetPerformanceCounter <AverageTimer32PerformanceCounter>, RateName).Throws(
                     typeof(InvalidOperationException)));

            yield return
                (new TestCaseData((Func <string, object>)singleInstancePerformanceCounterCategory.GetPerformanceCounter <RatePerSecond32PerformanceCounter>, TimerName).Throws(
                     typeof(InvalidOperationException)));

            yield return
                (new TestCaseData((Func <string, object>)singleInstancePerformanceCounterCategory.GetPerformanceCounter <PercentageRatePerformanceCounter>, RateName).Throws(
                     typeof(InvalidOperationException)));

            yield return
                (new TestCaseData((Func <string, object>)singleInstancePerformanceCounterCategory.GetPerformanceCounter <NumberOfItems64PerformanceCounter>, RateName).Throws(
                     typeof(InvalidOperationException)));
        }
        public void TestGetPerformanceCounter_RatePerSecond32()
        {
            const string categoryName     = "..category name"; // Leading '.'s place it at the front of the list. Useful for testing.
            const string categoryHelp     = "category help";
            const string timerCounterName = "rate of counts 32 counter";
            const string timerCounterHelp = "rate of counts 32 counter help";

            RatePerSecond32PerformanceCounter ratePerSecond32PerformanceCounter = null;

            try
            {
                new PerformanceCounterCategoryFactory()
                .AddRatePerSecond32(timerCounterName, timerCounterHelp)
                .CreateCategory(categoryName, categoryHelp, PerformanceCounterCategoryType.SingleInstance);

                using (SingleInstancePerformanceCounterCategory singleInstancePerformanceCounterCategory =
                           new SingleInstancePerformanceCounterCategory(categoryName))
                {
                    ratePerSecond32PerformanceCounter =
                        singleInstancePerformanceCounterCategory.GetPerformanceCounter <RatePerSecond32PerformanceCounter>(timerCounterName);

                    Assert.That(ratePerSecond32PerformanceCounter.Rate.CategoryName, Is.EqualTo(categoryName));
                    Assert.That(ratePerSecond32PerformanceCounter.Rate.CounterName, Is.EqualTo(timerCounterName));
                    Assert.That(ratePerSecond32PerformanceCounter.Rate.CounterHelp, Is.EqualTo(timerCounterHelp));
                }
            }
            finally
            {
                if (ratePerSecond32PerformanceCounter != null)
                {
                    ratePerSecond32PerformanceCounter.Dispose();
                    ratePerSecond32PerformanceCounter = null;
                }

                if (PerformanceCounterCategory.Exists(categoryName))
                {
                    PerformanceCounterCategory.Delete(categoryName);
                }
            }
        }