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)最后的运行结果如图:
        
相关文章
相关标签/搜索