package com.yzb.user_center;

/**
 * @Created by IntelliJ IDEA.
 * @Author tk
 * @Date 2018/7/31
 * @Time 11:43
 */

import com.alibaba.fastjson.JSON;
import com.xkx.service.base.ResponseResult;
import com.xkx.service.usercenter.api.XkxMemberApi;
import com.xkx.service.usercenter.request.data.XkxMemberQueryRequest;
import com.xkx.service.usercenter.response.XkxMemberResponse;
import org.apache.jmeter.config.Arguments;
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.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class FindMemberInfoTest extends AbstractJavaSamplerClient {
    private SampleResult results;
    private final String configLocation = "classpath:aplication-context.xml";
    private ApplicationContext appContext = null;
    private XkxMemberApi xkxMemberApi;
    private String memberIds;
    private String source;

public Arguments getDefaultParameters() {
        Arguments args = new Arguments();
        args.addArgument("memberIds", "1065111");
        args.addArgument("source","13605245");

return args;
    }
    //调用服务并获取接口对象
    public void setupTest(JavaSamplerContext context) {
        appContext = new ClassPathXmlApplicationContext(configLocation);
        xkxMemberApi = appContext.getBean("xkxMemberApi", XkxMemberApi.class);    }

public SampleResult runTest(JavaSamplerContext context) {
        results = new SampleResult();
        memberIds=context.getParameter("memberIds", memberIds);
        source = context.getParameter("source",source);

//方法
        XkxMemberQueryRequest  memberRequest= new  XkxMemberQueryRequest();
        memberRequest.setIsFilter(0);
        //获取memberIds是个list
        List<String> memberIds = new ArrayList<String>();

memberRequest.setMemberIds(memberIds);
        memberRequest.setIsFilter(1);
        memberRequest.setSource(source);

results.sampleStart();
        //对象关联方法,方法传入参数,用fiResp接受
        //xkxMemberApi对象,findMemberInfo方法,XkxMemberQueryRequest参数(分为:memberIds(list),isFilter(int整形),source
        ResponseResult<Map<String,XkxMemberResponse>> fiResp = xkxMemberApi.findMemberInfo(memberRequest);
        results.sampleEnd();

Integer result = fiResp.getResult() == null ? 0 : fiResp.getResult();
        System.out.println("result***"+JSON.toJSONString(fiResp));
        results.setSuccessful(result.equals(1));

return results;
    }

public void teardownTest(JavaSamplerContext arg0) {
    }

public static void main(String[] args) {
        Arguments argu = new Arguments();
        JavaSamplerContext javaSamplerContex = new JavaSamplerContext(argu);
        FindMemberInfoTest maintest = new FindMemberInfoTest();
        maintest.setupTest(javaSamplerContex);
        maintest.runTest(javaSamplerContex);
    }

}

代码思路分析:

1、关键的一句:ResponseResult<Map<String,XkxMemberResponse>> fiResp = xkxMemberApi.findMemberInfo(memberRequest);

xkxMemberApi:对象

findMemberInfo:方法

memberRequest:参数

2、XkxMemberQueryRequest memberRequest= new XkxMemberQueryRequest();

XkxMemberQueryRequest:方法的类型,声明以后就需要对参数就行传值

memberRequest.setMemberIds(memberIds);    传入参数 memberIds

3、和jmeter关联的地方,也是整个脚本比较核心的逻辑关系

args.addArgument("memberIds", "1065111");
args.addArgument("source","13605245"); memberIds=context.getParameter("memberIds", memberIds);
source = context.getParameter("source",source); memberRequest.setMemberIds(memberIds);
memberRequest.setIsFilter(1);
memberRequest.setSource(source); 这三段代码的关系是:
1、jemter面板需要暴露出memberIds和source(即:需要传入的参数)
2、第二段的代码用文本来接受jemter传入的参数
3、第三段代码用方法的类型声明的变量接受memberIds和source并传入(即:memberRequest.setMemberIds(memberIds);)
----这样整体的参数就偶合起来了
												

dubbo接口FindMemberInfoTest思路整合的更多相关文章

  1. Jmeter实现dubbo接口压测案例

    当前项目中重构了消息服务,需要对消息服务接口做性能压测,评估消息服务的性能情况 通过和开发对接,目前消息服务是通过dubbo接口对内提供服务,所以才有了这边文章的记录 最初的压测这个dubbo接口有三 ...

  2. 关于dubbo接口性能测试

      最初的压测这个dubbo接口有三种思路: .第一种就是基于业务,比如注册业务,注册成功后,会发送短信消息到用户手机,通过业务调用消息服务,最容易实现,但是业务瓶颈最大导致测试结果不准 .第二种是通 ...

  3. Dubbo的Filter实战--整合Oval校验框架

    前言: 其实很早之前就想写一篇关于oval和具体服务相整合的常见做法, 并以此作为一篇笔记. 趁现在项目中间空闲期, 刚好对dubbo的filter有一些了解. 因此想结合两者, 写一下既结合校验框架 ...

  4. 秒懂Dubbo接口(原理篇)

    引言 背景 单一应用架构 垂直应用架构 分布式服务架构 流动计算架构 为什么要用 Dubbo? 什么是分布式? 为什么要分布式? Dubbo 的架构 Dubbo 的架构图解 Dubbo 工作原理 Du ...

  5. 从应用层到网络层排查 Dubbo 接口超时全记录

    大家好,我是坤哥 我们常说面试造火箭,很多人对此提出质疑,相信大家看了这篇文章会明白面试造火箭的道理,这篇排查问题的技巧涉及到索引,GC,容器,网络抓包,全链路追踪等基本技能,没有这些造火箭的本事,排 ...

  6. jmeter测试dubbo接口

    本文讲解jmeter测试dubbo接口的实现方式,文章以一个dubbo的接口为例子进行讲解,该dubbo接口实现的功能为: 一:首先我们看服务端代码 代码架构为: 1:新建一个maven工程,pom文 ...

  7. 利用jmeter+JAVA对RPC的单接口(dubbo接口等)进行性能测试

    建立JAVA项目 建立maven项目,加入Jmeter所需要的JAR包依赖. POM.xml  加入如下: <dependency> <groupId>org.apache.j ...

  8. dubbo接口demo开发

    接口需求 客户端输入uncleyong(当然,也可以输入其它字符串),服务端返回hello uncleyong 开发环境 jdk + idea + maven + zookeeper jdk安装 id ...

  9. jmeter5.1测试dubbo接口

    dubbo接口功能介绍 客户端输入uncleyong(当然,也可以是其他字符串),服务端返回hello uncleyong 开发dubbo服务jmeter客户端 idea中创建模块dubbo_jmet ...

随机推荐

  1. 工厂模式&策略模式。

    抽象.封装,具体事情做得越多,越容易犯错误.这每个做过具体工作的人都深有体会,相反,官做得越高,说出的话越抽象越笼统,犯错误可能性就越少.好象我们从编程序中也能悟出人生道理.(百度百科) 不断抽象封装 ...

  2. hbase-java-api001

    package api; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfig ...

  3. JSP—连接池

    1:为什么要使用连接池? 解决频繁连接释放造成的资源浪费 2:配置好的数据库连接池也是以数据源DateSource的形式存, 连接池的实现类负责建立与数据库的连接. 3:使用连接池关闭资源的区别? 使 ...

  4. Beta冲刺阶段5.0

    1. 提供当天站立式会议照片一张 2. 每个人的工作 (有work item 的ID) 成员 昨天已完成的工作 今天计划完成的工作 工作中遇到的困难 具体贡献 郑晓丽 首页活动详情界面的美化 实现首页 ...

  5. <1>Cocos Creator安装和启动

    学习之间需要了解JavaScritp基本语法和面向对象,详情参考https://blog.csdn.net/jadeshu/article/category/7476938 1.下载Cocos Cre ...

  6. 《大话设计模式》c++实现 外观模式

    外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 外观模式在什么时候使用呢? 分为三个阶段: (1)首先,在设计初期阶段,应该要有意识的 ...

  7. ExtJS5入门

    https://www.cnblogs.com/xiaoliu66007/p/7988060.html

  8. edis配置文件-转

    # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => 1000 bytes # 1kb ...

  9. python内置函数bin

    bin() 返回一个整数 int 或者长整数 long int 的二进制表示. 代码示例: print(bin(10)) 运行结果: F:\dev\python\python.exe F:/pyCha ...

  10. linux查看系统状态的命令

    vmstat查看机器实时的综合情况:load,内存,swap,cpu使用率等方面 procs: r:运行队列中进程数量 b:等待IO的进程数量 memory(内存): swpd:使用虚拟内存大小 fr ...