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

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. AsssetBunlder打包

    unity3d,资源过多的话.可以压缩成一个资源包.加载出来后.可以解压.找到自己需要的资源 就想.net网站.很多图标都是放一个大图片上.而不是一个图标就是一个图片 因为是在项目编辑时候给资源打包. ...

  2. chrome 搜索 jsonView

    1.打开 https://github.com : 2.搜索 jsonView 链接:https://github.com/search?utf8=%E2%9C%93&q=jsonview: ...

  3. 《大话设计模式》c++实现 工厂模式

    工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建对象时不会对客户端 ...

  4. html5-fieldset和legend和keygen元素的用法

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  5. uvalive 3353 Optimal Bus Route Design

    题意: 给出n个点,以及每个点到其他点的有向距离,要求设计线路使得每一个点都在一个环中,如果设计的线路拥有最小值,那么这个线路就是可选的.输出这个最小值或者说明最小线路不存在. 思路: 在DAG的最小 ...

  6. jsp页面报错 javax.servlet cannot be resolved to a type

    需要引入 Tomcat 中的两个 jar 包: servlet-api jsp-api.jar

  7. mybatis源码解析2---SqlSessionFactoryBuilder、SqlSessionFactory解析

    1.先看一个mybatis最简单的Demo String resource = "mybatis-config.xml"; //1.流形式读取mybatis配置文件 InputSt ...

  8. JDK8 元空间

    1. 运行时常量池和静态变量都存储到了堆中,MetaSpace存储类的元数据,MetaSpace直接申请在本地内存中(Native memory),这样类的元数据分配只受本地内存大小的限制,OOM问题 ...

  9. Spring Batch 远程分区和远程分块的区别

    Partitioning is a master/slave step configuration that allows for partitions of data to be processed ...

  10. SQL数据库增量备份还原方式

    SQLSERVER2008的备份还原最基本的方式自然是完整备份,然后完整还原即可. 但是如果遇到数据库文件很大,数据量很大,备份和还原需要花费不少时间的时候, 数据库的差异备份自然就成为考虑的备份方案 ...