1 package org.apache.commons.jcs.auxiliary.disk.jdbc;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import junit.framework.TestCase;
23 import org.apache.commons.jcs.JCS;
24 import org.apache.commons.jcs.access.CacheAccess;
25 import org.apache.commons.jcs.engine.behavior.ICacheElement;
26
27 import java.sql.Connection;
28 import java.sql.DriverManager;
29 import java.util.HashSet;
30 import java.util.Map;
31 import java.util.Properties;
32 import java.util.Set;
33
34
35
36
37
38
39 public class JDBCDiskCacheSharedPoolUnitTest
40 extends TestCase
41 {
42
43 @Override
44 public void setUp()
45 {
46 JCS.setConfigFilename( "/TestJDBCDiskCacheSharedPool.ccf" );
47 }
48
49
50
51
52
53 public void testSimpleJDBCPutGetWithHSQL()
54 throws Exception
55 {
56 System.setProperty( "hsqldb.cache_scale", "8" );
57
58 String rafroot = "target";
59 Properties p = new Properties();
60 String driver = p.getProperty( "driver", "org.hsqldb.jdbcDriver" );
61 String url = p.getProperty( "url", "jdbc:hsqldb:" );
62 String database = p.getProperty( "database", rafroot + "/cache_hsql_db_sharedpool" );
63 String user = p.getProperty( "user", "sa" );
64 String password = p.getProperty( "password", "" );
65
66 new org.hsqldb.jdbcDriver();
67 Class.forName( driver ).newInstance();
68 Connection cConn = DriverManager.getConnection( url + database, user, password );
69
70 HsqlSetupTableUtil.setupTABLE( cConn, "JCS_STORE_0" );
71
72 HsqlSetupTableUtil.setupTABLE( cConn, "JCS_STORE_1" );
73
74 runTestForRegion( "testCache1", 200 );
75 }
76
77
78
79
80
81
82
83
84
85 public void runTestForRegion( String region, int items )
86 throws Exception
87 {
88 CacheAccess<String, String> jcs = JCS.getInstance( region );
89
90
91
92
93
94 for ( int i = 0; i <= items; i++ )
95 {
96 jcs.put( i + ":key", region + " data " + i );
97 }
98
99
100
101 Thread.sleep( 1000 );
102
103
104
105
106
107 for ( int i = 0; i <= items; i++ )
108 {
109 String value = jcs.get( i + ":key" );
110
111 assertEquals( "key = [" + i + ":key] value = [" + value + "]", region + " data " + i, value );
112 }
113
114
115 Set<String> keys = new HashSet<String>();
116 for ( int i = 0; i <= items; i++ )
117 {
118 keys.add( i + ":key" );
119 }
120
121 Map<String, ICacheElement<String, String>> elements = jcs.getCacheElements( keys );
122 for ( int i = 0; i <= items; i++ )
123 {
124 ICacheElement<String, String> element = elements.get( i + ":key" );
125 assertNotNull( "element " + i + ":key is missing", element );
126 assertEquals( "value " + i + ":key", region + " data " + i, element.getVal() );
127 }
128
129
130 for ( int i = 0; i <= items; i++ )
131 {
132 jcs.remove( i + ":key" );
133 }
134
135
136 for ( int i = 0; i <= items; i++ )
137 {
138 assertNull( "Removed key should be null: " + i + ":key", jcs.get( i + ":key" ) );
139 }
140 }
141 }