1 package org.apache.commons.jcs3.auxiliary.disk.jdbc.hsql;
2
3 import java.util.HashSet;
4 import java.util.Map;
5 import java.util.Set;
6
7 import org.apache.commons.jcs3.JCS;
8 import org.apache.commons.jcs3.access.CacheAccess;
9 import org.apache.commons.jcs3.engine.behavior.ICacheElement;
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 import junit.extensions.ActiveTestSuite;
31 import junit.framework.Test;
32 import junit.framework.TestCase;
33
34
35
36
37
38 public class HSQLDiskCacheConcurrentUnitTest
39 extends TestCase
40 {
41
42
43
44 private static final int items = 100;
45
46
47
48
49
50 public HSQLDiskCacheConcurrentUnitTest( final String testName )
51 {
52 super( testName );
53 }
54
55
56
57
58
59
60 public static Test suite()
61 {
62 final ActiveTestSuite suite = new ActiveTestSuite();
63
64 suite.addTest( new HSQLDiskCacheConcurrentUnitTest( "testHSQLDiskCache1" )
65 {
66 @Override
67 public void runTest()
68 throws Exception
69 {
70 this.runTestForRegion( "indexedRegion1" );
71 }
72 } );
73
74 suite.addTest( new HSQLDiskCacheConcurrentUnitTest( "testHSQLDiskCache2" )
75 {
76 @Override
77 public void runTest()
78 throws Exception
79 {
80 this.runTestForRegion( "indexedRegion2" );
81 }
82 } );
83
84 suite.addTest( new HSQLDiskCacheConcurrentUnitTest( "testHSQLDiskCache3" )
85 {
86 @Override
87 public void runTest()
88 throws Exception
89 {
90 this.runTestForRegion( "indexedRegion3" );
91 }
92 } );
93
94 return suite;
95 }
96
97
98
99
100 @Override
101 public void setUp()
102 {
103 JCS.setConfigFilename( "/TestHSQLDiskCacheConcurrent.ccf" );
104 }
105
106
107
108
109
110
111
112
113 public void runTestForRegion( final String region )
114 throws Exception
115 {
116 final CacheAccess<String, String> jcs = JCS.getInstance( region );
117
118
119 for ( int i = 0; i <= items; i++ )
120 {
121 jcs.put( i + ":key", region + " data " + i );
122 }
123
124
125
126
127 for ( int i = 0; i <= items; i++ )
128 {
129 final String value = jcs.get( i + ":key" );
130
131 assertEquals( "key = [" + i + ":key] value = [" + value + "]", region + " data " + i, value );
132 }
133
134
135 final Set<String> keys = new HashSet<>();
136 for ( int i = 0; i <= items; i++ )
137 {
138 keys.add( i + ":key" );
139 }
140
141 final Map<String, ICacheElement<String, String>> elements = jcs.getCacheElements( keys );
142 for ( int i = 0; i <= items; i++ )
143 {
144 final ICacheElement<String, String> element = elements.get( i + ":key" );
145 assertNotNull( "element " + i + ":key is missing", element );
146 assertEquals( "value " + i + ":key", region + " data " + i, element.getVal() );
147 }
148
149
150 for ( int i = 0; i <= items; i++ )
151 {
152 jcs.remove( i + ":key" );
153 }
154
155
156 for ( int i = 0; i <= items; i++ )
157 {
158 assertNull( "Removed key should be null: " + i + ":key", jcs.get( i + ":key" ) );
159 }
160 }
161 }