51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5318|回复: 7
打印 上一主题 下一主题

[转贴] 影响性能测试报告测试的源代码

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-5-23 12:59:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
<P><FONT face=宋体 size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 影响性能测试报告测试的源代码</FONT></P>
<P><FONT face=宋体 size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;——文章不错,可供相关人员参考学习</FONT></P>
<P><FONT face=宋体 size=2>主题:影响性能测试的源代码(数据库)</FONT></P>
<P><FONT face=宋体 size=2>关键词:测试报告、数据库、性能分析、性能测试、源代码</FONT></P>
<P><FONT face=宋体 size=2></FONT>&nbsp;</P>
<P><BR>CapabilityForConnection 主运行程序,读取配置文件init.properties、reference.properties初始化参数。调用POOLTEST(一次完整的测试用例),计算其平均时间与使用连接数package com.cea.repository.test;</P>
<P>import org.apache.commons.logging.LogFactory;<BR>import org.apache.commons.logging.Log;<BR>import java.util.Properties;<BR>import java.io.FileInputStream;<BR>import java.io.InputStream;</P>
<P>public class CapabilityForConnection {<BR>&nbsp;&nbsp;&nbsp; private static Log log = LogFactory.getLog(CapabilityForConnection.class);<BR>&nbsp;&nbsp;&nbsp; /**<BR>&nbsp;&nbsp;&nbsp;&nbsp; * 计算一次测试所消耗的时间<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; public static long times = 0;<BR>&nbsp;&nbsp;&nbsp; /**<BR>&nbsp;&nbsp;&nbsp;&nbsp; * 连接数<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; public static long psize = 0;</P>
<P>&nbsp;&nbsp;&nbsp; public static void main(String[] args) throws Exception {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 运行的次数<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int size = 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 见POOLTEST说明<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int execsum = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 见POOLTEST说明<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int opencon = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * execsum对应properties的命名<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String execs = null;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * opencon对应properties的命名<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String openc = null;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long sumtime = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Properties prop = initProperty("reference.properties");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Properties init = initProperty("init.properties");</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (init.size() &gt; 0) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object o = init.get("init");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; size = Integer.parseInt(o.toString());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; execs = init.get("name0").toString();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; openc = init.get("name1").toString();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; prop.size() / 2; i++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; execsum = Integer.parseInt(prop.getProperty(execs + i).toString());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; opencon = Integer.parseInt(prop.getProperty(openc + i).toString());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sumtime = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; psize = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log.info("第" + (i + 1) + "组数据:");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log.info("并发应用数:" + execsum + " 模拟连接数:" + opencon);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] reference = {"" + execsum, "" + opencon};<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; size; j++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; times = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PoolTest.main(reference);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sumtime += times;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log.info("第" + (i + 1) + "组数据共执行" + size + "次;平均耗时为:" +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sumtime / (size * execsum) + "毫秒");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log.info("平均使用" + psize / size + "个连接");</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; private static Properties initProperty(String filename) throws Exception {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InputStream is = new FileInputStream(filename);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Properties prop = new Properties();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prop.load(is);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return prop;</P>
<P>&nbsp;&nbsp;&nbsp; }<BR>}<BR></P>

[ 本帖最后由 Jon 于 2007-5-23 13:02 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2007-5-23 13:03:38 | 只看该作者
<P>POOLTEST计算一次完整过程耗时,统计消耗的连接<BR>package com.cea.repository.test;</P>
<P>import com.cea.repository.test.testdata.MainExecute;<BR>import java.util.HashMap;<BR>import java.util.Map;<BR>import com.cea.repository.connection.PoolSupper;<BR>import org.apache.commons.logging.LogFactory;<BR>import org.apache.commons.logging.Log;<BR>/**<BR>&nbsp;*<BR>&nbsp;* <BR>Title: 连接池性能测试</P>
<P><BR>&nbsp;*<BR>&nbsp;* <BR>Description: 测试不合理的利用连接对WEB应用所造成影响.</P>
<P><BR>&nbsp;*<BR>&nbsp;* <BR>Copyright: Copyright (c) 2005</P>
<P><BR>&nbsp;*<BR>&nbsp;* <BR>Company: </P>
<P><BR>&nbsp;*<BR>&nbsp;* @author 小舟<BR>&nbsp;* @version 1.0<BR>&nbsp;*/<BR>public class PoolTest extends Thread {<BR>&nbsp;&nbsp;&nbsp; private static Log log = LogFactory.getLog(PoolTest.class);<BR>&nbsp;&nbsp;&nbsp; /**<BR>&nbsp;&nbsp;&nbsp;&nbsp; * 并发执行MainExecute的数量<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; private static int EXECUTESUM = 35;<BR>&nbsp;&nbsp;&nbsp; /**<BR>&nbsp;&nbsp;&nbsp;&nbsp; * 一次MainExecute执行所请求的连接数<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; public static int CONNECTIONS = 3;<BR>&nbsp;&nbsp;&nbsp; /**<BR>&nbsp;&nbsp;&nbsp;&nbsp; * 记录所使用的连接<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; public static Map poolTestMap = new HashMap();<BR>&nbsp;&nbsp;&nbsp; /**<BR>&nbsp;&nbsp;&nbsp;&nbsp; * 第sum次执行MainExecute所需要的时间<BR>&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp;&nbsp; public int sum = 0;</P>
<P>&nbsp;&nbsp;&nbsp; public void run() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long s = System.currentTimeMillis();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; com.cea.repository.test.testdata.MainExecute.main(null);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long t = System.currentTimeMillis() - s;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CapabilityForConnection.times +=t;<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(CapabilityForConnection.times &lt; t){<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CapabilityForConnection.times = t;<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log.info("time" + (++sum) + ":" +<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (System.currentTimeMillis() - s));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception ex) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; public static void main(String[] args) throws Exception {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(args!= null &amp;&amp; args.length&gt;1){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXECUTESUM = Integer.parseInt(args[0]);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CONNECTIONS = Integer.parseInt(args[1]);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PoolSupper.initPool();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; startExec(EXECUTESUM);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //设定足够长的时间等待所有程序执行完,得到准确的并发执行所消耗的时间<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread.sleep(6000);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (InterruptedException ex) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ex.printStackTrace();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log.info("运行平均耗时:" + CapabilityForConnection.times/EXECUTESUM);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //如果条件成立,证明连接没有被回收,只要存在一个相同的,就证明连接被重复利用了<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CapabilityForConnection.psize +=poolTestMap.size();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (poolTestMap.size() == EXECUTESUM) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log.info("不存在重复使用的连接,共创建" + poolTestMap.size()+ "个连接" );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log.info("共使用" + poolTestMap.size()+ "个连接" );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clear();<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; private static void startExec(int EXECUTESUM) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (i &lt; EXECUTESUM) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (i++ &lt; EXECUTESUM) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new PoolTest().start();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception ex2) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; private static void clear() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; poolTestMap = new HashMap();<BR>&nbsp;&nbsp;&nbsp; }</P>
<P><BR>}</P>
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-5-23 13:04:35 | 只看该作者
<P>简单的不能再简单的测试代码:<BR>package com.cea.repository.test.testdata;</P>
<P>import com.cea.repository.connection.drive.ConnectionFactory;<BR>import java.sql.Connection;<BR>import java.sql.Statement;<BR>import java.sql.ResultSet;<BR>import java.sql.PreparedStatement;<BR>import java.util.HashMap;<BR>import java.util.Map;<BR>import java.util.List;<BR>import java.util.ArrayList;<BR>import com.cea.repository.test.PoolTest;<BR>import com.cea.repository.connection.poolpository.PoolFactory;</P>
<P>/**<BR>&nbsp;* <BR>&nbsp;* <BR>Title: </P>
<P><BR>&nbsp;* <BR>Description: </P>
<P><BR>&nbsp;* <BR>Copyright: Copyright (c) 2004</P>
<P><BR>&nbsp;* <BR>Company: cea</P>
<P><BR>&nbsp;* @author 小舟<BR>&nbsp;* @version 1.0<BR>&nbsp;*/<BR>public class MainExecute {<BR>&nbsp;&nbsp;&nbsp; public static void main(String[] args) throws Exception {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; testConnection();<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; static void testConnection() throws Exception {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; PoolTest.CONNECTIONS; i++) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connection con = PoolFactory.newInstance();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //这里的改变直接影响连接的复用<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread.sleep(50);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PoolTest.poolTestMap.put(con.toString(), "");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; con.close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>}</P>
<P>三个配置文件的内容:<BR>init.properties文件<BR>#运行的次数<BR>init=5<BR>#并发执行MainExecute的数量所匹配的名字<BR>name0=execsum<BR>#一次MainExecute执行所请求的连接数所匹配的名字<BR>name1=opencon<BR>reference.properties文件<BR>#过滤数据<BR>execsum0=10<BR>opencon0=1<BR>#第一次测试数据<BR>execsum1=100<BR>opencon1=6<BR>#第二次测试数据<BR>execsum2=85<BR>opencon2=9<BR>#第三次测试数据<BR>execsum3=140<BR>opencon3=3<BR>最后一个是pool-config.xml数据源配置:<BR>xml version="1.0" encoding="GB2312"?&gt;<BR>&lt;DataResources&gt;<BR>&nbsp; &lt;ResourceParams dateIndentity="boat1"&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;defaultAutoCommit&gt;falsedefaultAutoCommit&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;initialSize&gt;30initialSize&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;maxActive&gt;40maxActive&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;minIdle&gt;0minIdle&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;maxIdle&gt;18maxIdle&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;maxWait&gt;10000maxWait&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;username&gt;forumusername&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;password&gt;kingpassword&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;driverClassName&gt;oracle.jdbc.driver.OracleDriverdriverClassName&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;url&gt;jdbc:oracle:thin:@192.168.1.3:1521:gzesturl&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;removeAbandoned&gt;trueremoveAbandoned&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;removeAbandonedTimeout&gt;10removeAbandonedTimeout&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;logAbandoned&gt;truelogAbandoned&gt;<BR>&nbsp; ResourceParams&gt;<BR>DataResources&gt;</P>
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2009-11-5 10:09:49 | 只看该作者
自己先顶一下 ,呵呵
欢迎交流学习
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-3-26 10:28:53 | 只看该作者
自己先顶一下 ,呵呵欢迎交流学习
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    6#
    发表于 2010-11-4 22:46:32 | 只看该作者
    楼主是啥意思
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2010-11-19 13:55:03 | 只看该作者
    我也没看懂
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2010-12-7 15:02:11 | 只看该作者
    这个就不好怎么解释了,还是自己动手先做做
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-25 13:30 , Processed in 0.072192 second(s), 26 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表