1
2
3
4
5
6
7
8
9
10 package org.mule.util.store;
11
12 import org.mule.tck.AbstractMuleTestCase;
13 import org.mule.tck.testmodels.fruit.Apple;
14 import org.mule.tck.testmodels.fruit.Banana;
15 import org.mule.tck.testmodels.fruit.Kiwi;
16 import org.mule.util.FileUtils;
17
18 import java.io.File;
19
20 public class TextFileStoreTestCase extends AbstractMuleTestCase
21 {
22 public static final String DIR = ".mule/temp";
23 TextFileObjectStore store;
24
25
26 protected void doSetUp() throws Exception
27 {
28 super.doSetUp();
29 FileUtils.deleteTree(new File(DIR));
30
31 }
32
33
34 protected void doTearDown() throws Exception
35 {
36 if (store != null)
37 {
38 store.dispose();
39 }
40 FileUtils.deleteTree(new File(DIR));
41 super.doTearDown();
42
43 }
44
45 public void testTimedExpiry() throws Exception
46 {
47
48 store = new TextFileObjectStore();
49 store.setDirectory(DIR);
50 store.setMuleContext(muleContext);
51 store.setName("timed");
52 store.setMaxEntries(3);
53 store.setEntryTTL(3000);
54 store.setExpirationInterval(1000);
55 store.initialise();
56
57
58 assertTrue(store.storeObject("1", "1"));
59 assertTrue(store.storeObject("2", "2"));
60 assertTrue(store.storeObject("3", "3"));
61
62
63 assertTrue(store.containsObject("1"));
64 assertTrue(store.containsObject("2"));
65 assertTrue(store.containsObject("3"));
66
67
68 Thread.sleep(4000);
69
70
71 assertFalse(store.containsObject("1"));
72 assertFalse(store.containsObject("2"));
73 assertFalse(store.containsObject("3"));
74
75 }
76
77 public void testTimedExpiryWithRestart() throws Exception
78 {
79
80 store = new TextFileObjectStore();
81 store.setDirectory(DIR);
82 store.setMuleContext(muleContext);
83 store.setName("timed");
84 store.setMaxEntries(3);
85 store.setEntryTTL(3000);
86 store.setExpirationInterval(1000);
87 store.initialise();
88
89
90 assertTrue(store.storeObject("1", "1"));
91 assertTrue(store.storeObject("2", "2"));
92 assertTrue(store.storeObject("3", "3"));
93
94
95 assertTrue(store.containsObject("1"));
96 assertTrue(store.containsObject("2"));
97 assertTrue(store.containsObject("3"));
98
99 store.dispose();
100
101 store = new TextFileObjectStore();
102 store.setDirectory(DIR);
103 store.setMuleContext(muleContext);
104 store.setName("timed");
105 store.setMaxEntries(3);
106 store.setEntryTTL(3000);
107 store.setExpirationInterval(1000);
108 store.initialise();
109
110 assertTrue(store.containsObject("1"));
111 assertTrue(store.containsObject("2"));
112 assertTrue(store.containsObject("3"));
113
114
115 Thread.sleep(4000);
116
117
118 assertFalse(store.containsObject("1"));
119 assertFalse(store.containsObject("2"));
120 assertFalse(store.containsObject("3"));
121
122 store.dispose();
123
124 store = new TextFileObjectStore();
125 store.setDirectory(DIR);
126 store.setMuleContext(muleContext);
127 store.setName("timed");
128 store.setMaxEntries(3);
129 store.setEntryTTL(3000);
130 store.setExpirationInterval(1000);
131 store.initialise();
132
133
134 assertFalse(store.containsObject("1"));
135 assertFalse(store.containsObject("2"));
136 assertFalse(store.containsObject("3"));
137
138
139 }
140
141 public void testTimedExpiryWithObjects() throws Exception
142 {
143
144 store = new TextFileObjectStore();
145 store.setDirectory(DIR);
146 store.setMuleContext(muleContext);
147 store.setName("timed");
148 store.setMaxEntries(3);
149 store.setEntryTTL(3000);
150 store.setExpirationInterval(1000);
151 store.initialise();
152
153
154 try
155 {
156 assertTrue(store.storeObject("1", new Apple()));
157 fail("should not be abe to store objects");
158 }
159 catch (Exception e)
160 {
161
162 }
163 }
164
165 public void testMaxSize() throws Exception
166 {
167
168 store = new TextFileObjectStore();
169 store.setDirectory(DIR);
170 store.setMuleContext(muleContext);
171 store.setName("bounded");
172 store.setMaxEntries(3);
173 store.setEntryTTL(-1);
174 store.setExpirationInterval(1000);
175 store.initialise();
176
177
178 assertTrue(store.storeObject("1", "1"));
179 assertTrue(store.storeObject("2", "2"));
180 assertTrue(store.storeObject("3", "3"));
181
182 assertTrue(store.containsObject("1"));
183 assertTrue(store.containsObject("2"));
184 assertTrue(store.containsObject("3"));
185
186
187
188 Thread.sleep(3000);
189 assertTrue(store.containsObject("1"));
190 assertTrue(store.containsObject("2"));
191 assertTrue(store.containsObject("3"));
192
193
194 assertTrue(store.storeObject("4", "4"));
195
196
197 assertTrue(store.containsObject("1"));
198
199
200 store.expire();
201 assertFalse(store.containsObject("1"));
202 assertTrue(store.containsObject("2"));
203 assertTrue(store.containsObject("3"));
204 assertTrue(store.containsObject("4"));
205
206
207 assertTrue(store.storeObject("5", "5"));
208 store.expire();
209 assertFalse(store.containsObject("2"));
210 assertTrue(store.containsObject("3"));
211 assertTrue(store.containsObject("4"));
212 assertTrue(store.containsObject("5"));
213
214
215 assertTrue(store.storeObject("6", "6"));
216 assertTrue(store.storeObject("7", "7"));
217 assertTrue(store.storeObject("8", "8"));
218 assertTrue(store.storeObject("9", "9"));
219
220 store.expire();
221 assertTrue(store.containsObject("7"));
222 assertTrue(store.containsObject("8"));
223 assertTrue(store.containsObject("9"));
224 assertFalse(store.containsObject("3"));
225 assertFalse(store.containsObject("4"));
226 assertFalse(store.containsObject("5"));
227 assertFalse(store.containsObject("6"));
228 }
229
230 }