jmeter+dubbo接口開發

jmeter+dubbo接口開發

一、在本身安裝的Linux機器上面安裝zookeeper服務
    1) 在data路徑下使用輸入命令:wget  http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz 
        若是沒有wget命令,使用yum進行下載:( yum install wget* -y)
 
    2)tar  -zxvf文件名
        tar -zxvf zookeeper-3.4.14.tar.gz
 
   3)在zookeeper的主路徑下新建下面兩個文件名
        mkdir {logs,data},這個命令一會兒建立兩個文件夾
 
   4)進入到conf目錄下,修改zookeeper配置文件(備份一個,防止設置錯誤,沒法恢復)
       備份文件命令: cp zoo_sample.cfg   zoo.cfg
       修改配置文件zoo.cfg:vim zoo.cfg
        在配置文件的tickTime=2000行下添加一下內容:
         dataDir=/root/data/zookeeper-3.4.14/data
    dataLogDir=/root/data/zookeeper-3.4.14/logs
    
    配置集羣方式,這須要寫多個,ip值就是對應的主機ip,由於是不一樣的主機因此端口號能夠徹底同樣,如圖
        
        在以前設置的dataDir中新建myid文件, 寫入一個數字, 該數字表示這是第幾號server. 該數字必須和zoo.cfg文件中的server.X中的X一一對應.
   
    5)在配置文件vim /etc/profile中添加下面兩句
        #zookeeper
        export ZK_HOME=/data/zookeeper-3.4.14
        export PATH=………………:$PATH:$ZK_HOME/bin(path前面路徑不要動,添加上後面部分便可)
        
        使用source /etc/profile實時更新修改的配置文件
 
    6)啓動
        切換到bin目錄下啓動:./zkServer.sh  start
        查看是否啓動成功: zkServer.sh status
        鏈接 (-Initiating client) :鏈接本機能夠直接使用 zkCli.sh 
        
         鏈接其餘地址,使用: zkCli.sh -server ip:2181(2181爲默認端口)
        
        而後使用ls /:前提條件:添加環境變量
        
    配置文件說明:
        一、myid文件和server.myid  在快照目錄下存放的標識本臺服務器的文件,他是整個zk集羣用來發現彼此的一個重要標識;
        二、zoo.cfg 文件是zookeeper配置文件 在conf目錄裏;
        三、log4j.properties文件是zk的日誌輸出文件 在conf目錄裏用java寫的程序基本上有個共同點日誌都用log4j,來進行管理;
 
二、在idea工具裏面完成dubbo消費提供者和消費者模塊
    1)建立一個發送接口文件SmsService,文件內容以下:
    package com.pertest.server;
    public interface SmsService {
    /*
    * 定義一個發短信的接口
    * @param content 內容
    * @param platform平臺,分別對應LIANTONG,YIDONG,DIANXIN
    * @return 正常返回發送成功,失敗便可,這裏爲了展現發送的手機號和內容平臺,直接把內容再返回去
    */
    String sendSms(String mobile, String content, String platform);
        }
    2)建立SmsServiceImpl文件,該文件模擬是發送信息,文件內容爲:
    package com.pertest.server.impl;
    import com.pertest.server.SmsService;
    import org.springframework.stereotype.Service;
    @Service
    @Component
    public class SmsServiceImpl implements SmsService {
        public String sendSms(String mobile, String content, String platform) {
        try{
       Thread.sleep(2000);     // 模擬調用短信接口耗時2s
      return String.format("發送結果:%s, 手機號碼:%s, 內容:%s, 平臺:%s", "SUCCESS", mobile,content,platform);
        }
        catch (InterruptedException e) {
            e.printStackTrace();
        }
        return null;
        }
 
    }   
    3)編輯pom.xml文件,須要將用到的其餘依賴包都添加進來
    4)在resources下添加日誌文件log4j.xml,文件中包含了日誌文件的格式
    5)在resources下添加日誌文件applicationProvider.xml,文件中包含註冊地址,註冊地址(zookeeper所在的地址),用dubbo協議在28080端口暴露服務,接口的位置,實現bean(對應第二步驟)
   6)在建立包com.pertest.main,下建立調用java文件MyMainPertest,文件內容以下:
    package com.pertest.main;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    public class MyMainPertest {
     public static void main(String[] args) throws Exception {
      ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
       new String[] {"applicationProvider.xml"});
      context.start();
      System.out.println("按任意鍵退出");
      System.in.read();
     }}
    7)編譯,進行調試
    8)打Maven包
        view--Tool windows----Maven--install---綠色運行鍵
    
 
消費端:
1)將一些依賴包添加進來,包括消費提供端的剛剛打的Maven包
 <dependency>
    <groupId>com.pertest</groupId>
    <artifactId>dubbo_provider</artifactId> 
    <version>1.0-SNAPSHOT</version>
 </dependency>
2)在resources下添加日誌文件log4j2.xml,文件中包含了日誌文件的格式
3)在resources下添加日誌文件customer.xml,文件中包含調用的信息
4)在建立包com.pertest.main,下建立調用java文件ConsumerApplicationTests這個類名會在jmeter中用到:
    1.寫一個測試方法,GetStringTest隨便取名字
public static String GetStringTest(String mobile, String content, String platform){
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:customer.xml");寫一個//步驟3對應的文件目錄
    context.start();
    SmsService smsService = (SmsService) context.getBean("demoService");
    String s = smsService.sendSms(mobile, content, platform);//消息發送端中編寫的那個接口
    return s;
    }
    2.//主函數進行調用
public static void main(String[] args) {
    String mobile = "18262988703";
    String content = "pertest";//內容
    String platform = "test";//平臺
    String result = GetStringTest(mobile,content,platform); // 調用java接口
    System.out.println("+++++++++"+result);
}
    3.//jmeter每次執行的內容部分
public SampleResult runTest(JavaSamplerContext args0) {
    //setValues(args);
    SampleResult sr = new SampleResult();
    sr.setSampleLabel("JmeterDubboTest");//在jmeter結果樹查看顯示的內容
    sr.sampleStart(); //事務開始,開始計算時間
    try {
    String result = GetStringTest(mobile,content,platform); // 調用java接口
    sr.setResponseData("From dubbo provider:"+result,null); //輸入方法結果
    sr.setDataType(SampleResult.TEXT); //輸入結果保存內容
    System.out.println(result); //在jmeter的控制檯終端顯示
    sr.setSuccessful(true); //設置測試結果true
    }
    catch (Throwable e) {
    sr.setSuccessful(false); //設置測試結果false
    e.printStackTrace();//失敗進行捕獲跟蹤
    }
    finally {
    sr.sampleEnd(); // 事務結束,計算時間
    }
return sr;
}
    4.最後打包:view--Tool windows----Maven--install---綠色運行鍵
    5.若是未制定打包文件的位置,則在src同級的target目錄下面
    
 
在Maven找包方法:
    1)進入直接在  maven倉庫中搜索: https://mvnrepository.com ,找到須要的包的對應版本,並複製對應的依賴配置
        
    2)直接複製該信息,並粘貼在pom.xml裏面就能夠啦
 
三、修改爲jmeter的參數化腳本,並在jmeter裏面完成調用
    關於腳本部分:
        在消費端添加上一下內容:
// 定義全局變量
private String mobile;
private String content;
private String platform;
// 此方法爲參數化內容,能夠顯示在jmeter界面中,若是返回爲null,則不顯示
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("mobile",""); //名字自定義參數化
params.addArgument("content",""); //進入jmeter頁面能夠看到這個參數
params.addArgument("platform","");
return params;
}
// 執行初始化內容,每一個線程執行一次,一般建議在該方法中獲取參數值,而不是RunTest方法中使用,以便儘量減小測試開銷
public void setupTest(JavaSamplerContext arg0){
mobile = arg0.getParameter("mobile");
content = arg0.getParameter("content");
platform = arg0.getParameter("platform");
}
// 在測試運行結束時進行本次測試所需的清理工做,也是一個線程執行一次
public void teardownTest(JavaSamplerContext arg0) {
 
}
    1)將消費端的jar包放到到lib--ext目錄下
    2)打開jmete,添加java請求
    3)就能夠看到剛剛的ConsumerApplicationTests方法,以及設置的參數化值
    
    4)最後的運行結果如圖:
        
相關文章
相關標籤/搜索