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. php开启pdo扩展

    在Windows环境下php 5.1以上版本中,pdo和主要数据库的驱动同php一起作为扩展发布,要激活它们只需要简单地编辑php.ini文件. 打开php.ini配置文件,找到extension=p ...

  2. windows连接远程win服务器失败,win7win10都存在此问题,显示出现身份验证错误,要求的函数不受支持,可能由于CredSSP加密Oracle修正 (原)

    之前电脑windows+mstsc连接另一个windows服务器正常登陆,可在更新本地系统为win10以后,登陆就出现了问题,提示的错误是,出现身份验证错误.要求的函数不受支持,可能由于CredSSP ...

  3. C# 去重处理字符大小写

    本文展示了如何对集合去重并且处理大小写

  4. JavaScript 创建和浅析自定义对象

    在Js中,除了Array.Date.Number等内置对象外,开发者可以通过Js代码创建自己的对象. 目录 1. 对象特性:描述对象的特性 2. 创建对象方式:对象直接量.new 构造函数.Objec ...

  5. PHP数据库环境配置

    wamp环境   w是windows系统       a是Apache(服务器管理软件)      m是MySQL(数据库)    p是PHP wamp正常情况下是绿色的可以正常使用 黄色和红色不能使 ...

  6. Semaphore wait has lasted > 600 seconds

    解决方案:set global innodb_adaptive_hash_index=0;

  7. git server 配置

    因为后面要采用Git代替Subversion,花了点时间配置了Git服务端和客户端,像以前一样,仍然基于最新的Ubuntu11.10 server/desktop系统. 感谢这几篇文章的作者: htt ...

  8. CSS文本(Text)属性-----letter-spacing和text-align

       letter-spacing letter-spacing:normal | <length>  指定字符之间的额外间隙 normal:默认间隔.计算值为0 <length&g ...

  9. Lua语言特色

    [1]多重赋值 多重赋值规则:若值的个数少于变量的个数,那么多余的变量会被赋值为nil 若值的个数多余变量的个数,那么多余的值会被“悄悄地”丢弃掉. 多重赋值应用示例: a, b = , * prin ...

  10. 使用Java函数接口及lambda表达式隔离和模拟外部依赖更容易滴单测

    概述 单测是提升软件质量的有力手段.然而,由于编程语言上的支持不力,以及一些不好的编程习惯,导致编写单测很困难. 最容易理解最容易编写的单测,莫过于独立函数的单测.所谓独立函数,就是只依赖于传入的参数 ...