1 16 package scriptella.jdbc; 17 18 import scriptella.DBTestCase; 19 20 import java.sql.SQLException ; 21 import java.util.ArrayList ; 22 import java.util.Collections ; 23 import java.util.List ; 24 25 31 public class StatementCacheTest extends DBTestCase { 32 33 34 private int simpleClosed; 35 private int preparedClosed; 36 private int preparedCleared; 37 private int preparedParamsSet; 38 39 StatementCache sc; 40 41 protected void setUp() { 42 sc = new StatementCache(null, 100) { 43 @Override 44 protected StatementWrapper.Simple create(final String sql, final JdbcTypesConverter converter) { 45 return new StatementWrapper.Simple(sql) { 46 public void close() { 47 simpleClosed++; 48 } 49 }; 50 } 51 52 @Override 53 protected StatementWrapper.Prepared prepare(final String sql, final JdbcTypesConverter converter) { 54 return new StatementWrapper.Prepared() { 55 @Override 56 public void close() { 57 preparedClosed++; 58 } 59 60 @Override 61 public void setParameters(List <Object > params) { 62 preparedParamsSet++; 63 } 64 65 @Override 66 public void clear() { 67 preparedCleared++; 68 } 69 }; 70 } 71 }; 72 73 } 74 75 80 public void testGrowth() throws SQLException { 81 simpleClosed = 0; 82 preparedClosed = 0; 83 preparedCleared = 0; 84 preparedParamsSet = 0; 85 StringBuilder sb = new StringBuilder (); 86 JdbcTypesConverter converter = new JdbcTypesConverter(); 87 List <Object > params = new ArrayList <Object >(); 88 params.add(1); 89 for (int i = 0; i < 105; i++) { 90 sb.append('.'); 91 StatementWrapper s = sc.prepare(sb.toString(), Collections.emptyList(), converter); 92 assertEquals(i, preparedParamsSet); sc.releaseStatement(s); 94 assertEquals(i, simpleClosed); 95 StatementWrapper s2 = sc.prepare(sb.toString(), params, converter); 96 assertEquals(i + 1, preparedParamsSet); assertEquals(i + 1, simpleClosed); assertEquals(i, preparedCleared); 99 sc.releaseStatement(s2); 100 assertEquals(i + 1, preparedCleared); 101 } 102 assertEquals(5, preparedClosed); 104 sc.close(); 105 106 } 107 108 public void testUsual() throws SQLException { 109 preparedClosed = 0; 110 preparedCleared = 0; 111 112 113 StringBuilder sb = new StringBuilder (); 114 JdbcTypesConverter converter = new JdbcTypesConverter(); 115 List <Object > params = new ArrayList <Object >(); 116 params.add(1); 117 for (int i = 0; i < 20; i++) { 118 sb.append('.'); 119 StatementWrapper s2 = sc.prepare(sb.toString(), params, converter); 120 sc.releaseStatement(s2); 121 } 122 assertEquals(20, preparedCleared); 123 assertEquals(0, preparedClosed); sc.close(); 125 assertEquals(20, preparedCleared); 126 assertEquals(20, preparedClosed); 127 128 } 129 130 131 } 132 | Popular Tags |