]> source.dussan.org Git - archiva.git/blob
16698ffdf59078d9442b3764cda6e8683ee14cc0
[archiva.git] /
1 package org.apache.maven.repository.reporting;
2
3 /*
4  * Copyright 2005-2006 The Apache Software Foundation.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18
19 import junit.framework.TestCase;
20
21 /**
22  *
23  */
24 public class CacheTest
25     extends TestCase
26 {
27     private Cache cache;
28
29     public void testCacheManagementBasedOnHitsRatio()
30     {
31         cache = new Cache( 0.5 );
32         newCacheObjectTests();
33
34         String key = "key";
35         String value = "value";
36         for ( int ctr = 1; ctr < 10; ctr++ )
37         {
38             cache.put( key + ctr, value + ctr );
39         }
40
41         while ( cache.getHitRate() < 0.75 )
42         {
43             cache.get( "key2" );
44         }
45         cache.put( "key10", "value10" );
46         assertNull( "first key must be expired", cache.get( "key1" ) );
47     }
48
49     public void testCacheManagementBasedOnCacheSize()
50     {
51         cache = new Cache( 9 );
52         newCacheObjectTests();
53
54         String key = "key";
55         String value = "value";
56         for ( int ctr = 1; ctr < 10; ctr++ )
57         {
58             cache.put( key + ctr, value + ctr );
59         }
60
61         cache.put( "key10", "value10" );
62         assertNull( "first key must be expired", cache.get( "key1" ) );
63         assertEquals( "check cache size to be max size", 9, cache.size() );
64     }
65
66     public void testCacheManagementBasedOnCacheSizeAndHitRate()
67     {
68         cache = new Cache( 0.5, 9 );
69         newCacheObjectTests();
70
71         String key = "key";
72         String value = "value";
73         for ( int ctr = 1; ctr < 5; ctr++ )
74         {
75             cache.put( key + ctr, value + ctr );
76         }
77
78         while ( cache.getHitRate() < 0.5 )
79         {
80             cache.get( "key3" );
81         }
82
83         cache.put( "key10", "value10" );
84         assertNull( "first key must be expired", cache.get( "key1" ) );
85
86         while ( cache.getHitRate() >= 0.5 )
87         {
88             cache.get( "key11" );
89         }
90
91         for ( int ctr = 5; ctr < 10; ctr++ )
92         {
93             cache.put( key + ctr, value + ctr );
94         }
95
96         cache.put( "key11", "value11" );
97         assertNull( "second key must be expired", cache.get( "key2" ) );
98         assertEquals( "check cache size to be max size", 9, cache.size() );
99     }
100
101     public void testCacheOnRedundantData()
102     {
103         cache = new Cache( 0.5, 9 );
104         newCacheObjectTests();
105
106         String key = "key";
107         String value = "value";
108         for ( int ctr = 1; ctr < 10; ctr++ )
109         {
110             cache.put( key + ctr, value + ctr );
111         }
112
113         cache.put( "key1", "value1" );
114         cache.put( "key10", "value10" );
115         assertNull( "second key must be gone", cache.get( "key2" ) );
116         assertEquals( "check cache size to be max size", 9, cache.size() );
117     }
118
119     private void newCacheObjectTests()
120     {
121         assertEquals( (double) 0, cache.getHitRate(), 0 );
122         assertEquals( "check cache size", 0, cache.size() );
123
124         String value = "value";
125         String key = "key";
126
127         cache.put( key, value );
128         assertEquals( "check cache hit", value, cache.get( key ) );
129         assertEquals( (double) 1, cache.getHitRate(), 0 );
130         assertEquals( "check cache size", 1, cache.size() );
131         assertNull( "check cache miss", cache.get( "none" ) );
132         assertEquals( (double) 0.5, cache.getHitRate(), 0 );
133         cache.flush();
134         assertNull( "check flushed object", cache.get( "key" ) );
135         assertEquals( (double) 0, cache.getHitRate(), 0 );
136         assertEquals( "check flushed cache size", 0, cache.size() );
137         cache.flush();
138     }
139 }