batchGetAnchorLevel(dubbo接口)
一、编写脚本前的准备工作
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接口)的更多相关文章
- jmeter测试dubbo接口
本文讲解jmeter测试dubbo接口的实现方式,文章以一个dubbo的接口为例子进行讲解,该dubbo接口实现的功能为: 一:首先我们看服务端代码 代码架构为: 1:新建一个maven工程,pom文 ...
- 利用jmeter+JAVA对RPC的单接口(dubbo接口等)进行性能测试
建立JAVA项目 建立maven项目,加入Jmeter所需要的JAR包依赖. POM.xml 加入如下: <dependency> <groupId>org.apache.j ...
- Jmeter实现dubbo接口压测案例
当前项目中重构了消息服务,需要对消息服务接口做性能压测,评估消息服务的性能情况 通过和开发对接,目前消息服务是通过dubbo接口对内提供服务,所以才有了这边文章的记录 最初的压测这个dubbo接口有三 ...
- dubbo接口demo开发
接口需求 客户端输入uncleyong(当然,也可以输入其它字符串),服务端返回hello uncleyong 开发环境 jdk + idea + maven + zookeeper jdk安装 id ...
- jmeter5.1测试dubbo接口
dubbo接口功能介绍 客户端输入uncleyong(当然,也可以是其他字符串),服务端返回hello uncleyong 开发dubbo服务jmeter客户端 idea中创建模块dubbo_jmet ...
- java反射调用dubbo接口
需求:项目增加幂等 场景:1.三个项目:a .b.c2.a项目加幂等3.b项目dubbo调用项目a的时候超时没有获取返回结果,增加重试机制(非立即重试,3min or 5min 后重试)4.c项目是一 ...
- 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 ...
- Dubbo接口压测
在每年的双十一大促之前,除了全链路压测,还需要各个业务方对自己业务提供的核心接口进行单接口压测,以评判系统的稳定性和承压能力. 一.准备工作 环境准备:确保应用性能环境(perf)正常可用 压测接口梳 ...
- 【Dubbo&&Zookeeper】6、 给dubbo接口添加白名单——dubbo Filter的使用
在开发中,有时候需要限制访问的权限,白名单就是一种方法.对于Java Web应用,Spring的拦截器可以拦截Web接口的调用:而对于dubbo接口,Spring的拦截器就不管用了. dubbo提供了 ...
- 给dubbo接口添加白名单——dubbo Filter的使用
本文转自:http://blog.csdn.net/mj158518/article/details/47379799 在开发中,有时候需要限制访问的权限,白名单就是一种方法.对于Java Web应用 ...
随机推荐
- D Cloud of Hashtags Codeforces Round #401 (Div. 2)
Cloud of Hashtags [题目链接]Cloud of Hashtags &题意: 给你一个n,之后给出n个串,这些串的总长度不超过5e5,你要删除最少的单词(并且只能是后缀),使得 ...
- SQL Server数据库(时间戳timestamp)类型
1.公开数据库中自动生成的唯一二进制数字的数据类型. 2.timestamp 通常用作给表行加版本戳的机制. 3.存储大小为 8 个字节. 不可为空的 timestamp 列在语义上等价于 binar ...
- mysqldump导出数据
如果导出的数据是乱码,需要制定--default-character-set= mysqldump -h wn-fala-v2-cluster.cluster-cczg3tb617nn.eu-cent ...
- Python全栈-day6-day7-字符编码和文件处理
一.字符编码 1.编码基础 定义:人在使用计算机时,使用的是人类能够读懂的字符,使用者必须通过一张字符和数字间的相对应关系表实现人机交互,这一系列标准称为字符编码 Python应用中解决核心字符串乱码 ...
- UML之通信图
通信图的概念:通信图(协作图)是表现对象交互关系的图,它展现了多个对象在协同工作达成共同目标的过程中互相通信的情况,通过对象和对象之间的链.发送的消息来显示参与交互的对象. 首先通信图一样是一种交互图 ...
- C语言阐述进程和线程的区别
[cpp]view plain copy /* 每一个程序相当于一个进程,而一个进程之中可以有多个线程 */ #define _CRT_SECURE_NO_WARNINGS #include<s ...
- 【2017-2-26】C#String类、Math类、DateTime类
String类 黑色小扳手:属性 后面不带括号 紫色小箱子:方法 后面带小括号 1.字符串.Length; 字符串长度,返回int类型 字符串的长度 2.字符串.TrimSta ...
- Spark学习之路 (十七)Spark分区
一.分区的概念 分区是RDD内部并行计算的一个计算单元,RDD的数据集在逻辑上被划分为多个分片,每一个分片称为分区,分区的格式决定了并行计算的粒度,而每个分区的数值计算都是在一个任务中进行的,因此任务 ...
- python 读csv格式的文件
对于大多数的CSV 格式的数据读写问题,都可以使用csv 库 1. 直接读csv 以下是要操作的csv文件内容 import csv with open(r'C:\Temp\f.csv') as f: ...
- AtCoder Beginner Contest 066 B - ss
题目链接:http://abc066.contest.atcoder.jp/tasks/abc066_b Time limit : 2sec / Memory limit : 256MB Score ...