1   /*
2    * Copyright 2001-2004 The Apache Software Foundation
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.apache.commons.cache;
17  
18  import java.io.File;
19  import java.io.Serializable;
20  
21  import junit.framework.Test;
22  import junit.framework.TestCase;
23  import junit.framework.TestSuite;
24  
25  public class TestFileCache extends TestCase {
26     public TestFileCache(String testName) {
27        super(testName);
28     }
29  
30     public static void main(String args[]) {
31        String[] testCaseName = { TestFileCache.class.getName() };
32        junit.textui.TestRunner.main(testCaseName);
33     }
34  
35     public static Test suite() {
36        return new TestSuite(TestFileCache.class);
37     }
38  
39     private Cache cache = null;
40     private File basedir = new File("cachetest");
41  
42     public void setUp() {
43        basedir.mkdir();
44        cache = new SimpleCache(
45                       new FileStash(-1,10000,basedir.getAbsolutePath() + "/cachedir",10,false),
46                       new LRUEvictionPolicy(100,300000),
47                       null,
48                       new GroupMapImpl(),
49                       new File(basedir,"cache.ser")
50                    );
51     }
52  
53     public void tearDown() {
54        // basedir.delete();
55     }
56  
57     public void testLong() {
58  
59        System.out.println("NUM_RETRIEVE_FOUND: " + cache.getStat(CacheStat.NUM_RETRIEVE_FOUND));
60        System.out.println("NUM_RETRIEVE_NOT_FOUND: " + cache.getStat(CacheStat.NUM_RETRIEVE_NOT_FOUND));
61        System.out.println("NUM_RETRIEVE_REQUESTED: " + cache.getStat(CacheStat.NUM_RETRIEVE_REQUESTED));
62        System.out.println("NUM_STORE_NOT_STORED: " + cache.getStat(CacheStat.NUM_STORE_NOT_STORED));
63        System.out.println("NUM_STORE_REQUESTED: " + cache.getStat(CacheStat.NUM_STORE_REQUESTED));
64        System.out.println("NUM_STORE_STORED: " + cache.getStat(CacheStat.NUM_STORE_STORED));
65        System.out.println("CUR_CAPACITY: " + cache.getStat(CacheStat.CUR_CAPACITY));
66  
67        StringBuffer buf = new StringBuffer();
68  
69        for(int i=0;i<3;i++) {
70           buf.append("All your base are now belong to us. ");
71        }
72        for(int i=0;i<1500;i++) {
73           String key = "this is the key " + i;
74           assertTrue("object " + i + " should be storeable",cache.store(key,buf,new Long(System.currentTimeMillis()+600000L),null));
75           assertTrue("object " + i + " should be in the cache",cache.contains(key));
76        }
77        System.out.println("NUM_RETRIEVE_FOUND: " + cache.getStat(CacheStat.NUM_RETRIEVE_FOUND));
78        System.out.println("NUM_RETRIEVE_NOT_FOUND: " + cache.getStat(CacheStat.NUM_RETRIEVE_NOT_FOUND));
79        System.out.println("NUM_RETRIEVE_REQUESTED: " + cache.getStat(CacheStat.NUM_RETRIEVE_REQUESTED));
80        System.out.println("NUM_STORE_NOT_STORED: " + cache.getStat(CacheStat.NUM_STORE_NOT_STORED));
81        System.out.println("NUM_STORE_REQUESTED: " + cache.getStat(CacheStat.NUM_STORE_REQUESTED));
82        System.out.println("NUM_STORE_STORED: " + cache.getStat(CacheStat.NUM_STORE_STORED));
83        System.out.println("CUR_CAPACITY: " + cache.getStat(CacheStat.CUR_CAPACITY));
84  
85        int found = 0;
86        for(int i=0;i<1500;i++) {
87           String key = "this is the key " + i;
88           if(null != cache.retrieve(key)) {
89              found++;
90           }
91        }
92        System.out.println("found: " + found);
93  
94        System.out.println("NUM_RETRIEVE_FOUND: " + cache.getStat(CacheStat.NUM_RETRIEVE_FOUND));
95        System.out.println("NUM_RETRIEVE_NOT_FOUND: " + cache.getStat(CacheStat.NUM_RETRIEVE_NOT_FOUND));
96        System.out.println("NUM_RETRIEVE_REQUESTED: " + cache.getStat(CacheStat.NUM_RETRIEVE_REQUESTED));
97        System.out.println("NUM_STORE_NOT_STORED: " + cache.getStat(CacheStat.NUM_STORE_NOT_STORED));
98        System.out.println("NUM_STORE_REQUESTED: " + cache.getStat(CacheStat.NUM_STORE_REQUESTED));
99        System.out.println("NUM_STORE_STORED: " + cache.getStat(CacheStat.NUM_STORE_STORED));
100       System.out.println("CUR_CAPACITY: " + cache.getStat(CacheStat.CUR_CAPACITY));
101    }
102 
103     public void testStoreRetrieve() {
104       Serializable key1 = "key 1";
105       Serializable value1 = "value 1";
106       Serializable key2 = "key 2";
107       Serializable value2 = "value 2";
108       Serializable key3 = "key 3";
109       Serializable value3 = "value 3";
110 
111       assertTrue(!cache.contains(key1));
112       assertTrue(cache.store(key1,value1,null,null));
113       assertTrue(cache.contains(key1));
114       assertEquals(value1,cache.retrieve(key1));
115 
116       assertTrue(!cache.contains(key2));
117       assertTrue(cache.store(key2,value2,null,null));
118       assertTrue(cache.contains(key2));
119       assertEquals(value2,cache.retrieve(key2));
120 
121       assertTrue(!cache.contains(key3));
122       assertTrue(cache.store(key3,value3,null,null));
123       assertTrue(cache.contains(key3));
124       assertEquals(value3,cache.retrieve(key3));
125 
126       assertTrue(cache.contains(key1));
127       assertEquals(value1,cache.retrieve(key1));
128    }
129 
130    public void testStoreRetrieveClear() {
131       Serializable key1 = "key 1";
132       Serializable value1 = "value 1";
133       Serializable key2 = "key 2";
134       Serializable value2 = "value 2";
135       Serializable key3 = "key 3";
136       Serializable value3 = "value 3";
137 
138       assertTrue(!cache.contains(key1));
139       assertTrue(cache.store(key1,value1,null,null));
140       assertTrue(cache.contains(key1));
141       assertEquals(value1,cache.retrieve(key1));
142 
143       assertTrue(!cache.contains(key2));
144       assertTrue(cache.store(key2,value2,null,null));
145       assertTrue(cache.contains(key2));
146       assertEquals(value2,cache.retrieve(key2));
147 
148       assertTrue(!cache.contains(key3));
149       assertTrue(cache.store(key3,value3,null,null));
150       assertTrue(cache.contains(key3));
151       assertEquals(value3,cache.retrieve(key3));
152 
153       cache.clear(key1);
154       assertTrue(!cache.contains(key1));
155       assertTrue(cache.contains(key2));
156       assertTrue(cache.contains(key3));
157 
158       cache.clear(key2);
159       assertTrue(!cache.contains(key1));
160       assertTrue(!cache.contains(key2));
161       assertTrue(cache.contains(key3));
162 
163       cache.clear(key3);
164       assertTrue(!cache.contains(key1));
165       assertTrue(!cache.contains(key2));
166       assertTrue(!cache.contains(key3));
167    }
168 }