KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tirsen > nanning > samples > CacheTest


1 /*
2  * Nanning Aspects
3  *
4  * Distributable under LGPL license.
5  * See terms of license at gnu.org.
6  * (C) 2003 Jon Tirsen
7  */

8 package com.tirsen.nanning.samples;
9
10 import com.tirsen.nanning.config.AspectSystem;
11 import com.tirsen.nanning.config.FindTargetMixinAspect;
12 import com.tirsen.nanning.attribute.AbstractAttributesTest;
13 import com.tirsen.nanning.Aspects;
14
15 public class CacheTest extends AbstractAttributesTest {
16
17     public void testCacheCounter() {
18         AspectSystem aspectSystem = new AspectSystem();
19         aspectSystem.addAspect(new FindTargetMixinAspect());
20         CacheAspect counter = new CacheAspect(new CacheInterceptor());
21         aspectSystem.addAspect(counter);
22
23         assertEquals(1, counter.getCacheHitRatio(), 0.01);
24         CacheTestCalculations cacheTestCalculations =
25                 (CacheTestCalculations) aspectSystem.newInstance(CacheTestCalculations.class);
26         assertEquals(42.4711, cacheTestCalculations.someHeavyCalculation(1), 0.01);
27         assertEquals(1, counter.totalCount);
28         assertEquals(1, counter.missCount);
29         assertEquals(0, counter.getCacheHitRatio(), 0.01);
30
31         assertEquals(42.4711, cacheTestCalculations.someHeavyCalculation(1), 0.01);
32         assertEquals(2, counter.totalCount);
33         assertEquals(1, counter.missCount);
34         assertEquals(1, counter.totalCount - counter.missCount);
35         assertEquals(0.5, (counter.totalCount - counter.missCount) / (double) counter.totalCount, 0.01);
36         assertEquals(0.5, counter.getCacheHitRatio(), 0.01);
37
38         assertEquals(42.4711, cacheTestCalculations.someHeavyCalculation(1), 0.01);
39         assertEquals(0.66, counter.getCacheHitRatio(), 0.01);
40
41         assertEquals(84.9422, cacheTestCalculations.someHeavyCalculation(2), 0.01);
42         assertEquals(0.5, counter.getCacheHitRatio(), 0.01);
43
44         assertEquals(127.4132, cacheTestCalculations.someHeavyCalculation(3), 0.01);
45         assertEquals(0.4, counter.getCacheHitRatio(), 0.01);
46
47         assertEquals(3, counter.missCount);
48         cacheTestCalculations.someHeavyCalculation(1);
49         assertEquals(3, counter.missCount);
50         ((CacheInterceptor)
51                 Aspects.findFirstInterceptorWithClass(cacheTestCalculations, CacheInterceptor.class)).clearCache();
52         cacheTestCalculations.someHeavyCalculation(1);
53         assertEquals(4, counter.missCount);
54     }
55
56 }
57
Popular Tags