<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-23  評論-6  文章-1  trackbacks-0

    ??????????????????????????????????????????????????????????測試源代碼

    CapabilityForConnection?主運行程序,讀取配置文件init.properties、reference.properties初始化參數。調用POOLTEST(一次完整的測試用例),計算其平均時間與使用連接數

    package?com.cea.repository.test;

    import
    ?org.apache.commons.logging.LogFactory;
    import
    ?org.apache.commons.logging.Log;
    import
    ?java.util.Properties;
    import
    ?java.io.FileInputStream;
    import
    ?java.io.InputStream;

    public?class
    ?CapabilityForConnection?{
    ????
    private?static?Log?log?=?LogFactory.getLog(CapabilityForConnection.class
    );
    ????
    /**

    ?????*?計算一次測試所消耗的時間
    ?????
    */
    ????
    public?static?long?times?=?0;
    ????
    /**

    ?????*?連接數
    ?????
    */
    ????
    public?static?long?psize?=?0;

    ????
    public?static?void?main(String[]?args)?throws
    ?Exception?{
    ????????
    /**

    ?????????*?運行的次數
    ?????????
    */
    ????????
    int?size?=?1;
    ????????
    /**

    ?????????*?見POOLTEST說明
    ?????????
    */
    ????????
    int?execsum?=?0;
    ????????
    /**

    ?????????*?見POOLTEST說明
    ?????????
    */
    ????????
    int?opencon?=?0;
    ????????
    /**

    ?????????*?execsum對應properties的命名
    ?????????
    */
    ????????String?execs?
    =?null;
    ????????
    /**

    ?????????*?opencon對應properties的命名
    ?????????
    */
    ????????String?openc?
    =?null;

    ????????
    long?sumtime?=?0
    ;
    ????????Properties?prop?
    =?initProperty("reference.properties"
    );
    ????????Properties?init?
    =?initProperty("init.properties"
    );

    ????????
    if?(init.size()?>?0
    )?{
    ????????????Object?o?
    =?init.get("init"
    );
    ????????????size?
    =
    ?Integer.parseInt(o.toString());
    ????????????execs?
    =?init.get("name0"
    ).toString();
    ????????????openc?
    =?init.get("name1"
    ).toString();
    ????????}

    ????????
    for?(int?i?=?0;?i?<?prop.size()?/?2;?i++
    )?{
    ????????????execsum?
    =?Integer.parseInt(prop.getProperty(execs?+
    ?i).toString());
    ????????????opencon?
    =?Integer.parseInt(prop.getProperty(openc?+
    ?i).toString());
    ????????????sumtime?
    =?0
    ;
    ????????????psize?
    =?0
    ;
    ????????????log.info(
    ""?+?(i?+?1)?+?"組數據:"
    );
    ????????????log.info(
    "并發應用數:"?+?execsum?+?"?模擬連接數:"?+
    ?opencon);

    ????????????String[]?reference?
    =?{""?+?execsum,?""?+
    ?opencon};
    ????????????
    for?(int?j?=?0;?j?<?size;?j++
    )?{
    ????????????????times?
    =?0
    ;
    ????????????????PoolTest.main(reference);
    ????????????????sumtime?
    +=
    ?times;
    ????????????}
    ????????????log.info(
    ""?+?(i?+?1)?+?"組數據共執行"?+?size?+?"次;平均耗時為:"?+

    ?????????????????????sumtime?
    /?(size?*?execsum)?+?"毫秒");
    ????????????log.info(
    "平均使用"?+?psize?/?size?+?"個連接"
    );

    ????????}
    ????}

    ????
    private?static?Properties?initProperty(String?filename)?throws
    ?Exception?{
    ????????InputStream?is?
    =?new
    ?FileInputStream(filename);
    ????????Properties?prop?
    =?new
    ?Properties();
    ????????prop.load(is);
    ????????
    return
    ?prop;

    ????}
    }

    POOLTEST計算一次完整過程耗時,統計消耗的連接
    package?com.cea.repository.test;

    import
    ?com.cea.repository.test.testdata.MainExecute;
    import
    ?java.util.HashMap;
    import
    ?java.util.Map;
    import
    ?com.cea.repository.connection.PoolSupper;
    import
    ?org.apache.commons.logging.LogFactory;
    import
    ?org.apache.commons.logging.Log;
    /**

    ?*
    ?*?

    Title:?連接池性能測試


    ?*
    ?*?

    Description:?測試不合理的利用連接對WEB應用所造成影響.


    ?*
    ?*?

    Copyright:?Copyright?(c)?2005


    ?*
    ?*?

    Company:?


    ?*
    ?*?
    @author?小舟
    ?*?
    @version
    ?1.0
    ?
    */

    public?class?PoolTest?extends?Thread?{
    ????
    private?static?Log?log?=?LogFactory.getLog(PoolTest.class
    );
    ????
    /**

    ?????*?并發執行MainExecute的數量
    ?????
    */
    ????
    private?static?int?EXECUTESUM?=?35;
    ????
    /**

    ?????*?一次MainExecute執行所請求的連接數
    ?????
    */
    ????
    public?static?int?CONNECTIONS?=?3;
    ????
    /**

    ?????*?記錄所使用的連接
    ?????
    */
    ????
    public?static?Map?poolTestMap?=?new?HashMap();
    ????
    /**

    ?????*?第sum次執行MainExecute所需要的時間
    ?????
    */
    ????
    public?int?sum?=?0;

    ????
    public?void
    ?run()?{
    ????????
    try
    ?{
    ????????????
    long?s?=
    ?System.currentTimeMillis();
    ????????????com.cea.repository.test.testdata.MainExecute.main(
    null
    );
    ????????????
    long?t?=?System.currentTimeMillis()?-
    ?s;
    ????????????CapabilityForConnection.times?
    +=
    t;
    //
    ????????????if(CapabilityForConnection.times?//????????????????CapabilityForConnection.times?=?t;
    //
    ????????????}

    //
    ????????????log.info("time"?+?(++sum)?+?":"?+
    //???????????????????????????????(System.currentTimeMillis()?-?s));

    ????????}?catch?(Exception?ex)?{
    ????????}
    ????}

    ????
    public?static?void?main(String[]?args)?throws
    ?Exception?{
    ????????
    if(args!=?null?&&?args.length>1
    ){
    ????????????EXECUTESUM?
    =?Integer.parseInt(args[0
    ]);
    ????????????CONNECTIONS?
    =?Integer.parseInt(args[1
    ]);
    ????????}

    ????????PoolSupper.initPool();
    ????????startExec(EXECUTESUM);
    ????????
    //設定足夠長的時間等待所有程序執行完,得到準確的并發執行所消耗的時間

    ????????try?{
    ????????????Thread.sleep(
    6000
    );
    ????????}?
    catch
    ?(InterruptedException?ex)?{
    ????????????ex.printStackTrace();
    ????????}
    ????????log.info(
    "運行平均耗時:"?+?CapabilityForConnection.times/
    EXECUTESUM);
    ????????
    //如果條件成立,證明連接沒有被回收,只要存在一個相同的,就證明連接被重復利用了

    ????????CapabilityForConnection.psize?+=poolTestMap.size();
    ????????
    if?(poolTestMap.size()?==
    ?EXECUTESUM)?{
    ????????????log.info(
    "不存在重復使用的連接,共創建"?+?poolTestMap.size()+?"個連接"
    ?);
    ????????}?
    else
    ?{
    ????????????log.info(
    "共使用"?+?poolTestMap.size()+?"個連接"
    ?);
    ????????}
    ????????clear();
    ????}

    ????
    private?static?void?startExec(int
    ?EXECUTESUM)?{
    ????????
    int?i?=?0
    ;
    ????????
    while?(i?<
    ?EXECUTESUM)?{
    ????????????
    if?(i++?<
    ?EXECUTESUM)?{
    ????????????????
    try
    ?{
    ????????????????????
    new
    ?PoolTest().start();
    ????????????????}?
    catch
    ?(Exception?ex2)?{
    ????????????????}
    ????????????}
    ????????}
    ????}
    ????
    private?static?void
    ?clear()?{
    ????????poolTestMap?
    =?new
    ?HashMap();
    ????}


    }

    簡單的不能再簡單的測試代碼:
    package?com.cea.repository.test.testdata;

    import
    ?com.cea.repository.connection.drive.ConnectionFactory;
    import
    ?java.sql.Connection;
    import
    ?java.sql.Statement;
    import
    ?java.sql.ResultSet;
    import
    ?java.sql.PreparedStatement;
    import
    ?java.util.HashMap;
    import
    ?java.util.Map;
    import
    ?java.util.List;
    import
    ?java.util.ArrayList;
    import
    ?com.cea.repository.test.PoolTest;
    import
    ?com.cea.repository.connection.poolpository.PoolFactory;

    /**

    ?*?
    ?*?

    Title:?


    ?*?

    Description:?


    ?*?

    Copyright:?Copyright?(c)?2004


    ?*?

    Company:?cea


    ?*?
    @author?小舟
    ?*?
    @version
    ?1.0
    ?
    */

    public?class?MainExecute?{
    ????
    public?static?void?main(String[]?args)?throws
    ?Exception?{
    ???????testConnection();
    ????}

    ????
    static?void?testConnection()?throws
    ?Exception?{
    ????????
    for?(int?i?=?0;?i?<?PoolTest.CONNECTIONS;?i++
    )?{
    ????????????Connection?con?
    =
    ?PoolFactory.newInstance();
    ????????????
    //這里的改變直接影響連接的復用

    ????????????Thread.sleep(50);
    ????????????PoolTest.poolTestMap.put(con.toString(),?
    ""
    );
    ????????????con.close();
    ????????}
    ????}

    }

    三個配置文件的內容:
    init.properties文件
    #運行的次數
    init
    =5

    #并發執行MainExecute的數量所匹配的名字
    name0
    =execsum
    #一次MainExecute執行所請求的連接數所匹配的名字
    name1
    =opencon

    reference.properties文件
    #過濾數據
    execsum0
    =10

    opencon0
    =1
    #第一次測試數據
    execsum1
    =100
    opencon1
    =6
    #第二次測試數據
    execsum2
    =85
    opencon2
    =9
    #第三次測試數據
    execsum3
    =140
    opencon3
    =3

    最后一個是pool-config.xml數據源配置:
    xml?version="1.0"?encoding="GB2312"?>
    <DataResources>
    ??
    <ResourceParams?dateIndentity="boat1">
    ????
    <defaultAutoCommit>falsedefaultAutoCommit>
    ????
    <initialSize>30initialSize>
    ????
    <maxActive>40maxActive>
    ????
    <minIdle>0minIdle>
    ????
    <maxIdle>18maxIdle>
    ????
    <maxWait>10000maxWait>
    ????
    <username>forumusername>
    ????
    <password>kingpassword>
    ????
    <driverClassName>oracle.jdbc.driver.OracleDriverdriverClassName>
    ????
    <url>jdbc:oracle:thin:@192.168.1.3:1521:gzesturl>
    ????
    <removeAbandoned>trueremoveAbandoned>
    ????
    <removeAbandonedTimeout>10removeAbandonedTimeout>
    ????
    <logAbandoned>truelogAbandoned>
    ??
    ResourceParams>
    DataResources>
    posted on 2005-09-26 22:36 ceaboat 閱讀(1652) 評論(0)  編輯  收藏 所屬分類: JAVA小結
    主站蜘蛛池模板: 亚洲av手机在线观看| 免费国产va视频永久在线观看| 99久久99久久精品免费看蜜桃| 亚洲人成色777777精品| 久久久久久久亚洲精品| 毛片无码免费无码播放 | 亚洲成a人片毛片在线| 成人免费毛片视频| 久久久久久久久久久免费精品| 久久精品国产亚洲av影院| 日韩免费观看的一级毛片| 成人妇女免费播放久久久| 456亚洲人成影院在线观| 亚洲乳大丰满中文字幕| 在线A级毛片无码免费真人| 久久99精品免费一区二区| 亚洲av无码专区在线| 国产精品亚洲视频| 大学生a级毛片免费观看| 亚洲免费观看视频| 福利片免费一区二区三区| 亚洲精品视频专区| 中文字幕亚洲综合久久菠萝蜜| 免费电影在线观看网站| 免费毛片在线看不用播放器| 亚洲AV无码国产剧情| 久久亚洲精品成人AV| 亚洲综合精品网站| 青青草国产免费久久久91| 国产精品免费一区二区三区四区| 亚洲精品在线播放| 亚洲国产精品乱码一区二区| 国产成人免费高清在线观看| 无码国产精品一区二区免费虚拟VR| 亚洲精品二区国产综合野狼| 日韩免费视频播放| 2021精品国产品免费观看| 暖暖免费在线中文日本| 亚洲国产精品综合久久网各| 久久亚洲国产成人精品无码区| 成年人视频在线观看免费|