1 package org.smartlib.pool.core; 2 3 import junit.framework.TestCase; 4 import org.apache.log4j.LogManager; 5 import org.apache.log4j.PropertyConfigurator; 6 import org.apache.log4j.Logger; 7 import org.smartlib.pool.core.PoolConstants; 8 import org.smartlib.pool.core.PoolConfig; 9 10 import java.util.Properties ; 11 import java.sql.Connection ; 12 import java.sql.Statement ; 13 import java.sql.ResultSet ; 14 import java.sql.PreparedStatement ; 15 16 17 24 public class PoolTestFixture extends TestCase { 25 26 Logger logger = Logger.getLogger(PoolTestFixture.class); 27 28 protected PoolConfig getBasicPoolConfig() { 29 PoolConfig config = new PoolConfig(); 30 config.setMultiPoolName("MultiPool-1"); 31 config.setAllowAnonymousConnections(true); 32 config.setAutoClose(true); 33 PoolConfig.ConnectionString connectionString = new PoolConfig.ConnectionString(); 34 connectionString.setName("MultiPool.Pool-1"); 35 connectionString.setConnectString("jdbc:oracle:thin:@db01.dev:1521:dev1"); 36 config.setConnectionString(new PoolConfig.ConnectionString[] {connectionString}); 37 config.setDefaultPool(true); 38 config.setDetectLeaks(false); 39 config.setDriver("oracle.jdbc.driver.OracleDriver"); 40 config.setMaxConnections(3); 41 config.setMinConnections(1); 42 config.setPassword("passw0rd"); 43 config.setUserName("sachin"); 44 return config; 45 } 46 47 protected PoolConfig getPoolConfigWithMultiplePools() { 48 PoolConfig config = getBasicPoolConfig(); 49 50 PoolConfig.ConnectionString connectionString = new PoolConfig.ConnectionString(); 51 connectionString.setName("MultiPool.Pool-1"); 52 connectionString.setConnectString("jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=10.102.15.212)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=DEV)(INSTANCE_NAME=DEV1)))"); 53 PoolConfig.ConnectionString connectionString1 = new PoolConfig.ConnectionString(); 54 connectionString1.setConnectString("jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=10.102.15.213)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=DEV)(INSTANCE_NAME=DEV1)))"); 55 connectionString1.setName("MultiPool.Pool-2"); 56 config.setConnectionString(new PoolConfig.ConnectionString[] {connectionString, connectionString1}); 57 return config; 58 59 } 60 61 protected PoolConfig getPoolConfigWithMultipleExternalPools() { 62 PoolConfig config = getBasicPoolConfig(); 63 64 PoolConfig.ConnectionLoaderClass connectionLoaderClass = new PoolConfig.ConnectionLoaderClass(); 65 66 connectionLoaderClass.setName("MultiPool.ConnectionProviderImpl-1"); 67 connectionLoaderClass.setConnectionLoaderClass("org.smartlib.pool.core.ConnectionProviderImpl1"); 68 69 PoolConfig.ConnectionLoaderClass connectionLoaderClass1 = new PoolConfig.ConnectionLoaderClass(); 70 connectionLoaderClass1.setConnectionLoaderClass("org.smartlib.pool.core.ConnectionProviderImpl2"); 71 connectionLoaderClass1.setName("MultiPool.ConnectionProviderImpl-2"); 72 config.setConnectionLoaderClass(new PoolConfig.ConnectionLoaderClass[] {connectionLoaderClass, connectionLoaderClass1}); 73 return config; 74 75 } 76 77 protected void testConnection(Connection conn) throws Exception { 78 79 logger.debug("Testing Connection: " + conn); 80 Statement stmt = null; 81 try { 82 stmt = conn.createStatement(); 83 stmt.execute("Select count(*) from version"); 84 logger.debug("Test Passed: " + conn); 85 } finally { 86 if (stmt != null) { 87 try { 88 stmt.close(); 89 } catch (Exception e) { 90 } 92 } 93 } 94 95 } 96 97 protected void setUp() throws Exception { 98 super.setUp(); 99 LogManager.resetConfiguration(); 100 Properties log4j = new Properties (); 101 102 log4j.put("log4j.appender.A1", "org.apache.log4j.DailyRollingFileAppender"); 104 log4j.put("log4j.appender.A1.File", "c:\\smartpool.log"); 105 log4j.put("log4j.appender.A1.layout", "org.apache.log4j.PatternLayout"); 106 log4j.put("log4j.appender.A1.layout.ConversionPattern", "[%d{ISO8601}] <%t> %-5p %c: %m%n"); 107 log4j.put("log4j.appender.A1.DatePattern", "'.'yyyy-MM-dd"); 108 log4j.put("log4j.appender.SYSTEMOUT", "org.apache.log4j.ConsoleAppender"); 109 log4j.put("log4j.appender.SYSTEMOUT.layout", "org.apache.log4j.PatternLayout"); 110 log4j.put("log4j.appender.SYSTEMOUT.layout.ConversionPattern", "[%d{ISO8601}] <%t> %-5p %c: %m%n"); 111 log4j.put("log4j.appender.KILL", "org.apache.log4j.FileAppender"); 112 log4j.put("log4j.appender.KILL.File", "/dev/null"); 113 log4j.put("log4j.appender.KILL.layout", "org.apache.log4j.PatternLayout"); 114 log4j.put("log4j.appender.KILL.layout.ConversionPattern", "[%d] %m%n"); 115 117 log4j.put("log4j.rootLogger", "WARN, SYSTEMOUT"); 118 log4j.put("log4j.logger.org.smartlib", "DEBUG"); 119 120 PropertyConfigurator.configure(log4j); 121 if (logger.isDebugEnabled()) { 122 logger.debug("Log4J Configured"); 123 } 124 125 System.setProperty(PoolConstants.CONFIG_FILE_SYSTEM_PROPERTY, System.getProperty(PoolConstants.TEST_CONFIG_FILE_SYSTEM_PROPERTY)); 127 128 129 } 130 131 137 protected String getInstanceName(Connection conn) throws Exception { 138 PreparedStatement stmt = null; 139 ResultSet rs = null; 140 try { 141 stmt = conn.prepareStatement("select instance_name from v$instance"); 142 rs = stmt.executeQuery(); 143 if (rs.next()) { 144 return rs.getString(1); 145 } 146 else { 147 throw new Exception ("No Rows found, should never happen"); 148 } 149 } 150 finally { 151 stmt.close(); 152 rs.close(); 153 } 154 } 155 156 } 157 | Popular Tags |