1 package org.apache.commons.jcs3.auxiliary.remote;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.HashSet;
23 import java.util.Map;
24
25 import junit.framework.TestCase;
26
27 import org.apache.commons.jcs3.auxiliary.MockCacheEventLogger;
28 import org.apache.commons.jcs3.auxiliary.remote.behavior.IRemoteCacheAttributes;
29 import org.apache.commons.jcs3.engine.CacheElement;
30 import org.apache.commons.jcs3.engine.ZombieCacheServiceNonLocal;
31 import org.apache.commons.jcs3.engine.behavior.ICacheElement;
32 import org.apache.commons.jcs3.engine.behavior.ICacheElementSerialized;
33 import org.apache.commons.jcs3.utils.serialization.SerializationConversionUtil;
34
35
36
37
38 public class RemoteCacheUnitTest
39 extends TestCase
40 {
41 private IRemoteCacheAttributes cattr;
42 private MockRemoteCacheService<String, String> service;
43 private MockRemoteCacheListener<String, String> listener;
44 private RemoteCacheMonitor monitor;
45
46
47
48
49 @Override
50 protected void setUp() throws Exception
51 {
52 super.setUp();
53 cattr = new RemoteCacheAttributes();
54 service = new MockRemoteCacheService<>();
55 listener = new MockRemoteCacheListener<>();
56 monitor = new RemoteCacheMonitor();
57 }
58
59
60
61
62
63
64
65 public void testUpdate()
66 throws Exception
67 {
68
69 final long listenerId = 123;
70 listener.setListenerId( listenerId );
71
72 final RemoteCache<String, String> remoteCache = new RemoteCache<>( cattr, service, listener, monitor );
73
74 final String cacheName = "testUpdate";
75
76
77 final ICacheElement<String, String> element = new CacheElement<>( cacheName, "key", "value" );
78 remoteCache.update( element );
79
80
81 assertTrue( "The element should be in the serialized wrapper.",
82 service.lastUpdate instanceof ICacheElementSerialized );
83 final ICacheElement<String, String> result = SerializationConversionUtil
84 .getDeSerializedCacheElement( (ICacheElementSerialized<String, String>) service.lastUpdate, remoteCache
85 .getElementSerializer() );
86 assertEquals( "Wrong element updated.", element.getVal(), result.getVal() );
87 assertEquals( "Wrong listener id.", Long.valueOf( listenerId ), service.updateRequestIdList.get( 0 ) );
88 }
89
90
91
92
93
94
95 public void testUpdateZombieThenFix()
96 throws Exception
97 {
98
99 final ZombieCacheServiceNonLocal<String, String> zombie = new ZombieCacheServiceNonLocal<>( 10 );
100
101
102 final RemoteCache<String, String> remoteCache = new RemoteCache<>( cattr, zombie, listener, monitor );
103
104 final String cacheName = "testUpdate";
105
106
107 final ICacheElement<String, String> element = new CacheElement<>( cacheName, "key", "value" );
108 remoteCache.update( element );
109
110 remoteCache.fixCache( service );
111
112
113 assertTrue( "The element should be in the serialized warapper.",
114 service.lastUpdate instanceof ICacheElementSerialized );
115 final ICacheElement<String, String> result = SerializationConversionUtil
116 .getDeSerializedCacheElement( (ICacheElementSerialized<String, String>) service.lastUpdate, remoteCache
117 .getElementSerializer() );
118 assertEquals( "Wrong element updated.", element.getVal(), result.getVal() );
119 }
120
121
122
123
124
125
126 public void testUpdate_simple()
127 throws Exception
128 {
129 final RemoteCache<String, String> remoteCache = new RemoteCache<>( cattr, service, listener, monitor );
130
131 final MockCacheEventLogger cacheEventLogger = new MockCacheEventLogger();
132 remoteCache.setCacheEventLogger( cacheEventLogger );
133
134 final ICacheElement<String, String> item = new CacheElement<>( "region", "key", "value" );
135
136
137 remoteCache.update( item );
138
139
140 assertEquals( "Start should have been called.", 1, cacheEventLogger.startICacheEventCalls );
141 assertEquals( "End should have been called.", 1, cacheEventLogger.endICacheEventCalls );
142 }
143
144
145
146
147
148
149 public void testGet_simple()
150 throws Exception
151 {
152 final RemoteCache<String, String> remoteCache = new RemoteCache<>( cattr, service, listener, monitor );
153
154 final MockCacheEventLogger cacheEventLogger = new MockCacheEventLogger();
155 remoteCache.setCacheEventLogger( cacheEventLogger );
156
157
158 remoteCache.get( "key" );
159
160
161 assertEquals( "Start should have been called.", 1, cacheEventLogger.startICacheEventCalls );
162 assertEquals( "End should have been called.", 1, cacheEventLogger.endICacheEventCalls );
163 }
164
165
166
167
168
169
170 public void testGetMultiple_simple()
171 throws Exception
172 {
173 final RemoteCache<String, String> remoteCache = new RemoteCache<>( cattr, service, listener, monitor );
174
175 final MockCacheEventLogger cacheEventLogger = new MockCacheEventLogger();
176 remoteCache.setCacheEventLogger( cacheEventLogger );
177
178
179 remoteCache.getMultiple( new HashSet<>() );
180
181
182 assertEquals( "Start should have been called.", 1, cacheEventLogger.startICacheEventCalls );
183 assertEquals( "End should have been called.", 1, cacheEventLogger.endICacheEventCalls );
184 }
185
186
187
188
189
190
191 public void testRemove_simple()
192 throws Exception
193 {
194 final RemoteCache<String, String> remoteCache = new RemoteCache<>( cattr, service, listener, monitor );
195
196 final MockCacheEventLogger cacheEventLogger = new MockCacheEventLogger();
197 remoteCache.setCacheEventLogger( cacheEventLogger );
198
199
200 remoteCache.remove( "key" );
201
202
203 assertEquals( "Start should have been called.", 1, cacheEventLogger.startICacheEventCalls );
204 assertEquals( "End should have been called.", 1, cacheEventLogger.endICacheEventCalls );
205 }
206
207
208
209
210
211
212 public void testRemoveAll_simple()
213 throws Exception
214 {
215 final RemoteCache<String, String> remoteCache = new RemoteCache<>( cattr, service, listener, monitor );
216
217 final MockCacheEventLogger cacheEventLogger = new MockCacheEventLogger();
218 remoteCache.setCacheEventLogger( cacheEventLogger );
219
220
221 remoteCache.remove( "key" );
222
223
224 assertEquals( "Start should have been called.", 1, cacheEventLogger.startICacheEventCalls );
225 assertEquals( "End should have been called.", 1, cacheEventLogger.endICacheEventCalls );
226 }
227
228
229
230
231
232
233 public void testGetMatching_simple()
234 throws Exception
235 {
236
237 final String pattern = "adsfasdfasd.?";
238
239 final RemoteCache<String, String> remoteCache = new RemoteCache<>( cattr, service, listener, monitor );
240
241 final MockCacheEventLogger cacheEventLogger = new MockCacheEventLogger();
242 remoteCache.setCacheEventLogger( cacheEventLogger );
243
244
245 final Map<String, ICacheElement<String, String>> result = remoteCache.getMatching( pattern );
246
247
248 assertNotNull( "Should have a map", result );
249 assertEquals( "Start should have been called.", 1, cacheEventLogger.startICacheEventCalls );
250 assertEquals( "End should have been called.", 1, cacheEventLogger.endICacheEventCalls );
251 }
252
253
254
255
256
257
258 public void testDispose_simple()
259 throws Exception
260 {
261 final RemoteCache<String, String> remoteCache = new RemoteCache<>( cattr, service, listener, monitor );
262
263 final MockCacheEventLogger cacheEventLogger = new MockCacheEventLogger();
264 remoteCache.setCacheEventLogger( cacheEventLogger );
265
266
267 remoteCache.dispose( );
268
269
270 assertEquals( "Start should have been called.", 1, cacheEventLogger.startICacheEventCalls );
271 assertEquals( "End should have been called.", 1, cacheEventLogger.endICacheEventCalls );
272 }
273
274
275
276
277
278
279 public void testDispose_nullListener()
280 throws Exception
281 {
282
283 final RemoteCache<String, String> remoteCache = new RemoteCache<>( cattr, service, null, monitor );
284
285 final MockCacheEventLogger cacheEventLogger = new MockCacheEventLogger();
286 remoteCache.setCacheEventLogger( cacheEventLogger );
287
288
289 remoteCache.dispose( );
290
291
292 assertEquals( "Start should have been called.", 1, cacheEventLogger.startICacheEventCalls );
293 assertEquals( "End should have been called.", 1, cacheEventLogger.endICacheEventCalls );
294 }
295 }