一、编写脚本前的准备工作

1、安装idea,安装本地maven库,并在idea里面配置maven

2、导入git源码(目的在于下载所依赖的基础包)-->File-new-Project from version Contorl-git

3、加入pom文件,下载jmeter依赖的包

4、找开发要本次测试接口的pom文件,下载依赖的业务包

二、开发提供接口文档后,具体的测试方法

B、在resurces下面建一个文件applicationcontext.xml文件—>输入:<dubbo:reference id="LiveVideoFacade" interface="com.yzb.service.liveroomfacade.live.facade.LiveVideoFacade" protocol="dubbo"  timeout="3000" actives="0" retries="0" check="false" url="172.16.254.137:20881" />

其中: id="LiveVideoFacade”指:服务的对象,interface="com.yzb.service.liveroomfacade.live.facade.LiveVideoFacade 指:接口地址
url="172.16.254.137:20881" 指:连接的服务器地址,端口可以从第四步查询

三、详细的代码:

package com.yzb.user;

import com.alibaba.fastjson.JSON;
import com.yixia.anchor.level.api.AnchorLevelService;
import com.yixia.anchor.level.api.request.BatchGetAnchorLevelRequest;
import com.yixia.anchor.level.api.response.BatchGetAnchorLevelResp;
import com.yixia.anchor.level.api.response.ResponseResultVo;
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.io.*;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List; public class batchGetAnchorLever extends AbstractJavaSamplerClient {
//连接dubbo服务
private static final String configLocation = "classpath:aplication-context.xml";
private SampleResult results;
private static ApplicationContext appContext = null;
private String memberids;
private AnchorLevelService anchorLevelService; //参数暴露在jmeter面板上
public Arguments getDefaultParameters() {
Arguments args = new Arguments();
args.addArgument("memberids","");
return args;
} //调用服务并获取接口对象
public void setupTest(JavaSamplerContext context) {
appContext = new ClassPathXmlApplicationContext(configLocation);
anchorLevelService = (AnchorLevelService) appContext.getBean("anchorLevelService"); } //声明对象里面的参数,并由参数获取是由memberlist组成
public SampleResult runTest(JavaSamplerContext Context) {
results = new SampleResult();
BatchGetAnchorLevelRequest batchGetAnchorLevelRequest = new BatchGetAnchorLevelRequest();
memberids = Context.getParameter("memberids", memberids);
List<String> memberidlist = new LinkedList<String>();
memberidlist.add("10380124");
//memberidlist.add("10380312"); //从CSV文件内读取member
File csv = new File("/Users/wufq/lidong/file/xk_anchor_task_score.csv");
BufferedReader br = null;
try
{
br = new BufferedReader(new FileReader(csv));
} catch (FileNotFoundException e)
{
e.printStackTrace();
}
String line = "";
String everyLine = "";
List<String> memberidlist = new LinkedList<String>();
try {
//List<String> allString = new ArrayList<>();
while ((line = br.readLine()) != null) //读取到的内容给line变量
{
everyLine = line;
String memberId = everyLine.split(",")[0];
//System.out.println(memberId);
memberidlist.add(memberId);
}
System.out.println("csv表格中所有行数:"+memberidlist.size());
} catch (IOException e)
{
e.printStackTrace();
} batchGetAnchorLevelRequest.setMemberIds(memberidlist); results.sampleStart();
//计算程序开始到结束所消耗的时间
long start = System.currentTimeMillis();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
long end = System.currentTimeMillis();
System.out.println("start time:" + start + "; end time:" + end + "; Run time:" + (end - start) + "(ms)"); //对象关联方法,方法传入参数,用res接受
ResponseResultVo<BatchGetAnchorLevelResp> res = anchorLevelService.batchGetAnchorLevel(batchGetAnchorLevelRequest);
results.sampleEnd(); if (res.getResult().equals("10000")){
results.setSuccessful(true);
System.out.println("查询成功");
System.out.println(JSON.toJSONString(res));
}else{
results.setSuccessful(false);
}
return results;
} public void teardownTest(JavaSamplerContext arg0) {
System.out.println("test end");
} public static void main(String[] args){
batchGetAnchorLever test = new batchGetAnchorLever();
Arguments arguments = test.getDefaultParameters();
JavaSamplerContext context = new JavaSamplerContext(arguments);
test.setupTest(context);
test.runTest(context);
test.teardownTest(context);
}
}

batchGetAnchorLevel(dubbo接口)的更多相关文章

  1. jmeter测试dubbo接口

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

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

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

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

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

  4. dubbo接口demo开发

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

  5. jmeter5.1测试dubbo接口

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

  6. java反射调用dubbo接口

    需求:项目增加幂等 场景:1.三个项目:a .b.c2.a项目加幂等3.b项目dubbo调用项目a的时候超时没有获取返回结果,增加重试机制(非立即重试,3min or 5min 后重试)4.c项目是一 ...

  7. jmeter4.0测试dubbo接口遇到的问题:An error occurred: org.springframework.scheduling.quartz.CronTriggerBean has interface org.quartz.CronTrigger as super class

    半年前,用jmeter4.0测试dubbo接口的时候,遇到这样一个问题 An error occurred: org.springframework.scheduling.quartz.CronTri ...

  8. Dubbo接口压测

    在每年的双十一大促之前,除了全链路压测,还需要各个业务方对自己业务提供的核心接口进行单接口压测,以评判系统的稳定性和承压能力. 一.准备工作 环境准备:确保应用性能环境(perf)正常可用 压测接口梳 ...

  9. 【Dubbo&&Zookeeper】6、 给dubbo接口添加白名单——dubbo Filter的使用

    在开发中,有时候需要限制访问的权限,白名单就是一种方法.对于Java Web应用,Spring的拦截器可以拦截Web接口的调用:而对于dubbo接口,Spring的拦截器就不管用了. dubbo提供了 ...

  10. 给dubbo接口添加白名单——dubbo Filter的使用

    本文转自:http://blog.csdn.net/mj158518/article/details/47379799 在开发中,有时候需要限制访问的权限,白名单就是一种方法.对于Java Web应用 ...

随机推荐

  1. ASP.NET Core 启动流程图

    简洁描述: 一   WebHostBuilder.Build() =>1注入公共的实例 2创建WebHost实例 3注入自定义实例 4创建IServer 5添加中间件(_components集合 ...

  2. 019-JQuery(Ajax异步请求)

    使用jquery完成异步操作 ->开发文档提供的异步API url:请求地址 type:请求方式,主要是get.post data:{}:请求的数据 dataType:返回值的类型,主要有xml ...

  3. import caffe报错问题

    在搭建好的caffe环境下运行Python报错:ImportError:No module named _caffe 报错原因:由于caffe的Python环境变量未配置好 解决方案: 方法1 imp ...

  4. HDU 6300

    Problem Description Chiaki has 3n points p1,p2,…,p3n. It is guaranteed that no three points are coll ...

  5. copy on write,代理模式

    StringBuilder 内部用了代理的技术实现, 是可变字符串的代理 .net设计模式实例之代理模式(Proxy Pattern) 一.代理模式简介(Brief Introduction) 代理模 ...

  6. 【impala学习之二】impala 使用

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 CM5.4 一.Impala shell 1.进入impal ...

  7. MySql 存储过程 退出

    mysql不支持quit, exit或return的方式退出编写存储过程时,为了业务规则需要,我们可能需要提前退出存储过程那么,我们可以利用leave label方式模拟实现quit退出的效果应用示例 ...

  8. pandas.io.common.CParserError: Error tokenizing data. C error: Expected 1 fields in line 526, saw 5

    pandas.io.common.CParserError: Error tokenizing data. C error: Expected 1 fields in line 526, saw 5 ...

  9. linux常用命令:cp 命令

    cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数.但是如果是 ...

  10. php小数加减精度问题,比特币计算精度问题

    php小数加减精度问题,比特币计算精度问题 在php开发时,有小数加减的场景.结果发现不能够等于预想的值,bccomp比较二个高精确度数字.语法: int bccomp(string left ope ...