package jef.database.pooltest; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import jef.database.innerpool.IConnection; import jef.database.innerpool.IUserManagedPool; import org.junit.Before; import org.junit.Ignore; import org.slf4j.LoggerFactory; /** * case600 * 测试同一个线程拿到的连接是否相同 * * 连接池大小随意 线程数量1 * @author zhaolong * */ public class Conn600IsSameTest extends AbstractTestConnection{ private final int LOOPS =10; //判断是否在服务器上 还是eclipse org.slf4j.Logger log=LoggerFactory.getLogger(Conn600IsSameTest.class); @Before public void prepare() throws SQLException { String url = ConnDBConfigUtil.getStringValue("url"); String uname = ConnDBConfigUtil.getStringValue("uname"); String pwd = ConnDBConfigUtil.getStringValue("pwd"); int POOL_SIZE=ConnDBConfigUtil.getIntValue("pool.size"); super.prepare(url, uname, pwd, POOL_SIZE); } // @Test @Ignore public void testIsSame()throws SQLException{ IUserManagedPool pool=super.getPool(); //获取刚开始的连接 IConnection preInPool=pool.poll(); String table=ConnDBConfigUtil.getStringValue("table.name","DEPT"); String sql="select count(*) from "+table; //循环调用多次 查看得到的连接是否是同一个连接 for(int i=0;i<LOOPS;i++){ IConnection afterInPool=pool.poll(); IConnection conn=afterInPool; PreparedStatement ps=conn.prepareStatement(sql); ResultSet rs=ps.executeQuery(); if(rs.next()){ if(i==0|| i==LOOPS-1){ ConnPrintOutUtil.print(log, ConnPrintOutUtil.INFO, "rows:"+rs.getInt(1)); } } if(afterInPool!=preInPool){ ConnPrintOutUtil.printFailure(log); } } ConnPrintOutUtil.printSuccess(log); } }