annotate HowTo/Aspects/CounterAspect.cs @ 0:f990fcb411a9

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