Mercurial > pub > bltoolkit
comparison HowTo/Aspects/CounterAspect.cs @ 0:f990fcb411a9
Копия текущей версии из github
author | cin |
---|---|
date | Thu, 27 Mar 2014 21:46:09 +0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:f990fcb411a9 |
---|---|
1 using System; | |
2 using System.Reflection; | |
3 | |
4 using NUnit.Framework; | |
5 | |
6 using BLToolkit.Aspects; | |
7 using BLToolkit.Reflection; | |
8 | |
9 namespace HowTo.Aspects | |
10 { | |
11 [TestFixture] | |
12 public class CounterAspectTest | |
13 { | |
14 public /*[a]*/abstract/*[/a]*/ class TestClass | |
15 { | |
16 // This is a method we collect statistic for. | |
17 // Actually the entire class or even a base class | |
18 // can be decorated with the attribute. | |
19 // | |
20 [/*[a]*/Counter/*[/a]*/] | |
21 public /*[a]*/virtual/*[/a]*/ void TestMethod() | |
22 { | |
23 } | |
24 } | |
25 | |
26 [Test] | |
27 public void Test() | |
28 { | |
29 TestClass t = TypeAccessor<TestClass>.CreateInstance(); | |
30 | |
31 for (int i = 0; i < 10; i++) | |
32 t.TestMethod(); | |
33 | |
34 MethodInfo methodInfo = typeof(TestClass).GetMethod("TestMethod"); | |
35 MethodCallCounter counter = CounterAspect.GetCounter(methodInfo); | |
36 | |
37 Assert.AreEqual(10, counter.TotalCount); | |
38 | |
39 Console.WriteLine(@" | |
40 Method : {0}.{1} | |
41 TotalCount : {2} | |
42 ExceptionCount : {3} | |
43 CachedCount : {4} | |
44 CurrentCalls : {5} | |
45 TotalTime : {6} | |
46 MinTime : {7} | |
47 MaxTime : {8} | |
48 AverageTime : {9} | |
49 ", | |
50 counter.MethodInfo.DeclaringType.Name, | |
51 counter.MethodInfo.Name, | |
52 counter.TotalCount, // total actual calls (no cached calls) | |
53 counter.ExceptionCount, // calls with exceptions | |
54 counter.CachedCount, // cached calls | |
55 counter.CurrentCalls.Count, // current calls (make sense for multithreading) | |
56 counter.TotalTime, // total work time | |
57 counter.MinTime, // min call time | |
58 counter.MaxTime, // max call time | |
59 counter.AverageTime); // average call time | |
60 } | |
61 } | |
62 } |