一、使用Eclipse进行项目编写

1.使用eclipse,新建项目名字为:TestNumber,包名为:test,类名为:TestNum

2.在JMeter的安装目下下lib/ext中copy2个jar包到eclipse中(ApacheJMeter_core.jar 和 ApacheJMeter_java.jar)

3.TestNum类继承AbstractJavaSamplerClient,该AbstractJavaSamplerClient存在与ApacheJMeter_java.jar中

4.TestNum extends AbstractJavaSamplerClient需要实现4个方法:setupTest()、getDefaultParameters()、runTest()、teardownTest()

二、具体代码实现

package test;

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; public class TestNum extends AbstractJavaSamplerClient{ private SampleResult results;
private String inNum; //输入的数字
private String resultNum; //需要匹配的数字
/**
* 初始化方法,用于初始化性能测试时的每个线程
*/
@Override
public void setupTest(JavaSamplerContext jsc) { results = new SampleResult();
inNum = jsc.getParameter("inNum","");
resultNum = jsc.getParameter("resultNum", ""); if(inNum !=null && inNum.length() > 0) {
results.setSamplerData(inNum);
} if(resultNum !=null && resultNum.length() > 0) {
results.setSamplerData(resultNum);
}
} /**
* 可以设置传入参数,可以设置多个,已设置的参数会显示到Jmeter参数列表中
*/
@Override
public Arguments getDefaultParameters() { Arguments params = new Arguments();
params.addArgument("inNum","");
params.addArgument("resultNum","66");
return params;
} /**
* 性能测试时的线程运行体
* 测试执行的循环体,根据线程数和循环次数的不同可执行多次
*/
@Override
public SampleResult runTest(JavaSamplerContext arg0) { boolean flag = false; //定义一个事务,表示这是事务的起始点,类似于Loadrunner中的lr.start_transaction
results.sampleStart(); for(int i =inNum.length();--i >=0;) {
if(!Character.isDigit(inNum.charAt(i))) {
flag = false;
}else {
flag = true;
}
} for(int j =resultNum.length();--j >=0;) {
if(!Character.isDigit(resultNum.charAt(j))) {
flag = false;
}else {
flag = true;
}
} //定义一个事务,表示这是事务的结束点,类似于Loadrunner中的lr.end_transaction
results.sampleEnd(); if (flag){
Integer num = Integer.parseInt(inNum);
Integer rsNum = Integer.parseInt(resultNum); if (num == rsNum){
results.setDataEncoding("UTF-8");//因为响应的数据有中文,所以最好先设置编码
results.setResponseData("恭喜你,答对了O(∩_∩)O~\n答案是【"+resultNum+"】");//响应数据,对应结果树,其他response code等可以自己点出来
results.setSuccessful(true);//告诉系统返回正确还是错误
} else if (num > rsNum){
results.setDataEncoding("UTF-8");
results.setResponseData("好像大了点~~~~(>_<)~~~~ \n您输入的是【"+inNum+"】");
results.setSuccessful(false);
}else {
results.setDataEncoding("UTF-8");
results.setResponseData("好像小了点~~~~(>_<)~~~~ \n您输入的是【"+inNum+"】");
results.setSuccessful(false);
} }else{
results.setDataEncoding("UTF-8");
results.setResponseData("请输入数字:~~~~(>_<)~~~~ \n您输入的inNum是【"+inNum+"】,resultNum是【"+resultNum+"】");
results.setSuccessful(false);
} return results;
} /**
* 测试结束方法,结束测试中的每个线程
*/
@Override
public void teardownTest(JavaSamplerContext context) {
}
}

  

三、JMeter运行压测

1.在eclipse中把项目导出为jar包,其jar名为:TestNumber.jar,将jar包拷贝到Jmeter的安装目录lib/ext下面

2.运行jmeter,添加线程组==java请求==查看结果树==聚合报告

3.设置并发用户数为20,查看其结果树

JMeter代码小Demo(Java)的更多相关文章

  1. java线程间通信:一个小Demo完全搞懂

    版权声明:本文出自汪磊的博客,转载请务必注明出处. Java线程系列文章只是自己知识的总结梳理,都是最基础的玩意,已经掌握熟练的可以绕过. 一.从一个小Demo说起 上篇我们聊到了Java多线程的同步 ...

  2. spark集群配置以及java操作spark小demo

    spark 安装 配置 使用java来操作spark spark 安装 tar -zxvf spark-2.4.0-bin-hadoop2.7.tgz rm spark-2.4.0-bin-hadoo ...

  3. 聊聊UDP、TCP和实现一个简单的JAVA UDP小Demo

    最近真的比较忙,很久就想写了,可是一直苦于写点什么,今天脑袋灵光一闪,觉得自己再UDP方面还有些不了解的地方,所以要给自己扫盲. 好了,咱们进入今天的主题,先列一下提纲: 1. UDP是什么,UDP适 ...

  4. 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo

    简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...

  5. Java - JavaMail - 利用 JavaMail 发邮件的 小demo

    1. 概述 面试的时候, 被问到一些乱七八糟的运维知识 虽然我不是干运维的, 但是最后却告诉我专业知识深度不够, 感觉很难受 又回到了一个烦人的问题 工作没有深度的情况下, 你该如何的提升自己, 并且 ...

  6. 《算法导论》第二章demo代码实现(Java版)

    <算法导论>第二章demo代码实现(Java版) 前言 表示晚上心里有些不宁静,所以就写一篇博客,来缓缓.囧 拜读<算法导论>这样的神作,当然要做一些练习啦.除了练习题与思考题 ...

  7. 「小程序JAVA实战」 小程序手写属于自己的第一个demo(六)

    转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-06/ 自己尝试的写一个小demo,用到自定义样式,自定义底部导航,页面之间的跳转等小功能.官方文档 ...

  8. Android -- 自定义View小Demo,动态画圆(一)

    1,转载:(http://blog.csdn.NET/lmj623565791/article/details/24500107),现在如下图的效果: 由上面的效果图可以看到其实是一个在一个圆上换不同 ...

  9. Redis的入门Demo(java)

    java代码部分参考了:http://www.runoob.com/redis/redis-java.html 在java中使用Redis,需要引入Redis驱动,就是jedis-2.1.0.jar, ...

随机推荐

  1. webstrom 配置eslint 自动修复错误

    1.展示效果 如何给vue项目添加eslint呢,如何自动修复呢? 先展示一下效果: 2.配置步骤 1.安装插件ESLint plugin webstrom 其实有个非常好用的插件,ESLint pl ...

  2. 【hive】在alter修改元数据的时候报错 mismatched input 'xxxxx' expecting KW_EXCHANGE

    目的:修改表某个字段属性 语句: 报错信息 错误原因: 在HiveQL中,alter命令不使用与create或select相同的语义 ; 具体来说,您不能使用“ALTER DATABASE.TABLE ...

  3. 虚拟机下的centos断电(非正常关机)后mysql启动不了

    在windows2003安装了vbox来部署centos. 但无法完美设置开机启动虚拟机里的系统. 只能把启动脚本放到用户的启动项里. server.bat "C:\Program File ...

  4. Python3基本数据类型(五)

    Python中的变量不需要声明,每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在Python中变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型 ...

  5. python 中 property 属性的讲解及应用

    Python中property属性的功能是:property属性内部进行一系列的逻辑计算,最终将计算结果返回 property属性的有两种方式: 1. 装饰器 即:在方法上应用装饰器 2. 类属性 即 ...

  6. AS3帮助手册

    http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/index.html

  7. jquery 判断checkbox状态

    jquery判断checked的三种方法:.attr('checked):   //看版本1.6+返回:”checked”或”undefined” ;1.5-返回:true或false.prop('c ...

  8. 几种常见的微服务架构方案——ZeroC IceGrid、Spring Cloud、基于消息队列、Docker Swarm

    微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合 ...

  9. vscode+Firefox实现前端移动真机测试

    需要配件: 1.安装有火狐浏览器的移动端(手机); 2.安装有火狐浏览器和vscode的pc(电脑); 3.在vscode安装Live Server 插件 4.安装之后vscode右下角会有Go Li ...

  10. Goroutine是如何工作的?

    翻译原文链接 转帖/转载请注明出处英文原文链接 发表于2014/02/24 Go语言 如果你刚刚接触Go语言,或者说你并不理解“并发不等于并行”这句话的含义,那么Rob Pike的讲座值得一看(在yo ...