亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源性能測試工具 > Jmeter
采用Jmeter測試Dubbo服務接口
作者:網絡轉載 發布時間:[ 2017/2/16 15:23:28 ] 推薦標簽:性能測試

  準備兩臺機器,一臺用于部署dubbo的服務端代碼,另一臺安裝jmeter,用于運行客戶端的測試腳本。采用zookeeper作為dubbo的注冊中心。本次測試所有依賴的版本信息如下:
  · jdk版本:1.7
  · maven版本:3.3
  · jmeter版本:3.0
  · dubbo版本:2.5.4
  為簡單起見,我們直接使用dubbo官方提供的demo工程來進行講解。
  服務端部署
  具體步驟
  1、首先clone dubbo的官方代碼,編譯安裝:
  # cd ~
  # git clone https://github.com/alibaba/dubbo.git
  # cd dubbo
  # mvn clean install -DskipTests=true
  2、安裝成功之后,我們進入demo工程,解壓服務端的代碼:
  # cd dubbo-demo/dubbo-demo-provider/target
  # tar zxvf dubbo-demo-provider-2.5.4-SNAPSHOT-assembly.tar.gz
  # cd dubbo-demo-provider-2.5.4-SNAPSHOT
  我們需要編輯dubbo的配置文件,使其采用zookeeper作為注冊中心(默認情況下采用組播注冊中心):
  # vim conf/dubbo.properties
  修改好之后的配置文件內容如下:
dubbo.container=log4j,spring
dubbo.application.name=demo-provider
dubbo.application.owner=
dubbo.registry.address=zookeeper://10.168.120.xxx:2181
dubbo.monitor.protocol=registry
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.service.loadbalance=roundrobin
dubbo.log4j.file=logs/dubbo-demo-provider.log
dubbo.log4j.level=WARN
  zookeeper的地址根據自己的實際情況填寫即可。
  3、啟動服務:
  # bin/start.sh
  如果啟動成功,會有如下的輸出:
  Starting the demo-provider ......OK!
  PID: 28164
  STDOUT: logs/stdout.log
  注意點
  1、如果出現啟動失敗,或者注冊中心注冊失敗的問題,請檢查注冊中心的ip地址是否配置成功,以及防火墻是否開放了對應的端口。
  2、默認情況下,start.sh里配置的jvm堆棧大小為2g,如果自己的機器內存不夠的話,可以調低start.sh里面jvm堆棧大小的配置。
  3、如果還有其他問題,可以通過logs文件夾下的日志進一步分析。
  客戶端部署
  具體步驟
  我們借助jmeter的java sampler來調用服務端的接口進行測試,所以我們需要將原先的客戶端里的代碼和java sampler進行結合。我們在剛才的demo工程目錄下,創建我們的測試類:
  # vim ~/dubbo/dubbo-demo/dubbo-demo-consumer/src/main/java/com/alibaba/dubbo/demo/consumer/DemoConsumer.java
  具體代碼如下:
package com.dubbo.test;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.alibaba.dubbo.demo.DemoService;
import java.util.Random;
public classDemoConsumerextendsAbstractJavaSamplerClient{
private DemoService demoService = null;
@Override
publicvoidsetupTest(JavaSamplerContext context){
super.setupTest(context);
ClassPathXmlApplicationContext springContext = new ClassPathXmlApplicationContext(new String[] { "dubbo-demo-consumer.xml" });
springContext.start();
demoService = (DemoService) springContext.getBean("demoService");
}
@Override
publicSampleResultrunTest(JavaSamplerContext javaSamplerContext){
SampleResult sr = new SampleResult();
Random r = new Random();
try {
sr.sampleStart();
String result = demoService.sayHello(r.nextInt(100000) + "");
sr.setResponseData("from provider:" + result, null);
sr.setDataType(SampleResult.TEXT);
sr.setSuccessful(true);
sr.sampleEnd();
}
catch (Exception e) {
e.printStackTrace();
}
return sr;
}
@Override
publicvoidteardownTest(JavaSamplerContext context){
super.teardownTest(context);
}
}
  自定義的java sampler測試類需要繼承AbstractJavaSamplerClient抽象類,然后我們需要重載setupTest、runTest以及teardownTest這三個方法:
  · setupTest:用于構建測試環境。我們在這里可以初始化spring以及dubbo上下文,獲取服務端的bean。
  · runTest:具體的測試邏輯。我們在這里向服務端發送了一個隨機數字字符串,然后借助SampleResult類將服務端的返回值回顯到jmeter。
  · teardownTest:執行收尾工作,比如釋放相關資源等。
  同時,我們需要在pom里添加jmeter對應的依賴:
  # vim ~/dubbo/dubbo-demo/dubbo-demo-consumer/pom.xml
  添加的依賴如下:
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_core</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_java</artifactId>
<version>3.0</version>
</dependency>
  將dubbo.properties以及dubbo-demo-consumer.xml文件拷貝到resources根目錄下,方便程序讀取配置文件,否則需要做些額外的工作使他們納入到classpath中:
  # cd ~/dubbo/dubbo-demo/dubbo-demo-consumer
  # cp src/main/assembly/conf/dubbo.properties src/main/resources
  # cp src/main/resources/META-INF/spring/dubbo-demo-consumer.xml src/main/resources
  然后編輯dubbo.properties文件,使客戶端也采用zookeeper作為注冊中心:
  dubbo.container=log4j,spring
  dubbo.application.name=demo-consumer
  dubbo.application.owner=
  dubbo.registry.address=zookeeper://10.168.120.xxx:2181
  dubbo.monitor.protocol=registry
  dubbo.log4j.file=logs/dubbo-demo-consumer.log
  dubbo.log4j.level=WARN
  在dubbo-demo-consumer文件夾下重新執行 mvn clean install -DskipTests=true ,然后解壓target目錄下的dubbo-demo-consumer-2.5.4-SNAPSHOT-assembly.tar.gz。將解壓目錄的lib文件夾下的所有jar包拷貝到jmeter的lib文件夾下,并且將其中的dubbo-demo-consumer-2.5.4-SNAPSHOT.jar拷貝到jmeter的lib/ext文件夾。
  啟動jmeter,建立線程組,然后選擇java sampler,并且添加察看結果樹:


運行結果如下:

 

軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 欧美黑人巨大xxxx猛交 | 免费观看性欧美特黄 | 久久综合久久精品 | 日韩精品中文字幕一区二区三区 | 欧产日产国产精品专区 | 欧美一级欧美一级在线播放 | 国产天堂亚洲精品 | 日韩在线观看一区二区三区 | 成人嗯啊视频在线观看 | 在线免费观看一级毛片 | 亚洲成人免费在线观看 | 一本一道dvd在线观看免费视频 | 一个人看的视频www在线 | 国产人妖ts丝丝 magnet | 欧美日韩亚洲天堂 | 日本v片免费一区二区三区 日本www色视频 | 欧美成人www在线观看网页 | 午夜影院啪啪 | 污版网站| 免费人成网址在线观看国内 | 二区在线观看 | 看一级| 在线视频 一区二区 | 色综合久久六月婷婷中文字幕 | 综合久青草视频 | 最新欧美精品一区二区三区不卡 | 亚洲视频精品 | 成年视频在线播放 | 欧美福利第一页 | 免费人欧美成又黄又爽的视频 | 在线国产小视频 | 色香欲综合天天影院综合 | 国产偷国产偷高清视频 | 国产100页| 日本高清中文字幕一区二区三区 | 最近免费字幕高清在线观看 | 国产亚洲欧美日韩在线观看不卡 | 亚洲视频在线观看免费 | 虫族bl文全肉高h | 欧美日本在线播放 | 日韩欧美国产中文 |