對 Rational Performance Tester 數據池的改進(3)

發表于:2012-03-26來源:未知作者:娃娃點擊數: 標簽:
PoolLoad.java: 傳入文件位置,初始化 RPTDataPool 文件只包括一行,就是調用 RPTDataPool 的構造函數: static RPTDataPool pool1 = new RPTDataPool(c:\\pool1.txt); getLine.java:

  PoolLoad.java: 傳入文件位置,初始化 RPTDataPool

  文件只包括一行,就是調用 RPTDataPool 的構造函數:

static RPTDataPool pool1 = new RPTDataPool("c:\\pool1.txt");

  getLine.java: 每個 RPT 的 Test 中,在需要數據池前需要插入的代碼,用于把當前用戶對應的數據池記錄通過一行返回給 Test

public String exec(ITestExecutionServices tes, String[] args) {
    // 調用 PoolLoad 中初始化的 pool1 的 getDataPoolItemLine 的方法返回當前行然后把 line 返回給 Test
    String line = PoolLoad.pool1.getaDataPoolItemLine();
    return line;
}

  getName.java: 從返回的行中取出需要的字段 ,每個變量對應著一個 get 方法,比如 getName, getPassword 等 。

public String exec(ITestExecutionServices tes, String[] args) {
    // 從參數中讀出記錄行到 line
    StringTokenizer st = new StringTokenizer(line,",");// 轉換成 StringTokenizer
    while (st.hasMoreTokens()) {
    if (i == index) { // 匹配需要的字段
        name = st.nextToken(); // 把相應的字段賦值
        break;
    }
    i++;
}

  關鍵代碼的解釋:

  RPTDataPool.java:主要用于將記錄以分頁的形式從文件中讀入到 ArrayList 中

  首先定義需要的變量:

Private String DataPoolFileName;// 定義數據池文件存放的位置,運行時會由 PoolLoad.java 裝入
        private ArrayList DataPool;// 存放每次從數據池中讀出的記錄
        private int cursor = 0;// 當前記錄的光標
        static private int pageno = 1;// 根據每頁的大小 (PageSize), 目前光標停在哪頁
        private int pagesize = 500;// 每次 load 進 DataPool 的記錄數量

  構造函數 RPTDataPool:

  調用 fillPageByLine 方法,把文件的第一個頁面存入到變量 DataPool 中來。

public RPTDataPool(String fileName ) {
    
    ……
    
    fillPageByLine( DataPoolFileName, DataPool, 1);
}        

  fillPageByLine: 每次到了頁面的記錄末尾,都會被調用,從而把相關的記錄讀到 DataPool 中來。

private boolean fillPageByLine(String fileName, ArrayList FileLines, int Pageno) {
    // 通過 ReadLine 讀文件 ;
    while (line !=null) {
    // 當前行數在關注的頁面中, pageno 通過參數傳入
    if ((lineno>=pagesize*(Pageno-1))&&(lineno<pagesize*Pageno)) {
        FileLines.add(line);// 把當前記錄加入 ArrayList
        line=br.readLine();// 記錄下移
        lineno++;// 行數增加
    } else if (lineno<pagesize*(Pageno-1)) {// 當前行數還沒到關注的頁面
        line=br.readLine();// 記錄下移
        lineno++;// 行數增加
    } else if (lineno >= pagesize*(Pageno)) {// 當前行數超過關注的頁面
        break;// 退出
    }
}

  PoolLoad.java: 傳入文件位置,初始化 RPTDataPool

  文件只包括一行,就是調用 RPTDataPool 的構造函數:

static RPTDataPool pool1 = new RPTDataPool("c:\\pool1.txt");

  getLine.java: 每個 RPT 的 Test 中,在需要數據池前需要插入的代碼,用于把當前用戶對應的數據池記錄通過一行返回給 Test

public String exec(ITestExecutionServices tes, String[] args) {
    // 調用 PoolLoad 中初始化的 pool1 的 getDataPoolItemLine 的方法返回當前行然后把 line 返回給 Test
    String line = PoolLoad.pool1.getaDataPoolItemLine();
    return line;
}

  getName.java: 從返回的行中取出需要的字段 ,每個變量對應著一個 get 方法,比如 getName, getPassword 等 。

public String exec(ITestExecutionServices tes, String[] args) {
    // 從參數中讀出記錄行到 line
    StringTokenizer st = new StringTokenizer(line,",");// 轉換成 StringTokenizer
    while (st.hasMoreTokens()) {
    if (i == index) { // 匹配需要的字段
        name = st.nextToken(); // 把相應的字段賦值
        break;
    }
    i++;
}

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97