一、使用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. HDU 4669 Mutiples on a circle 不知道该归为哪一类。

    题意:给你N个珠宝和一个K,每个珠宝上面都有数字,这个珠宝做成项链,把珠宝上的数字拼起来如果可以整除掉K,那么久说这个数字为wonderful value,问你有多少种方案可以组成WONDERFUL ...

  2. Ansible 手册系列 一(介绍)

    一 介绍 Ansible 是一个配置管理和应用部署工具,功能类似于目前业界的配置管理工具 Chef,Puppet,Saltstack.Ansible 是通过 Python 语言开发.Ansible 平 ...

  3. 快速切题 poj 3026 Borg Maze 最小生成树+bfs prim算法 难度:0

    Borg Maze Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8905   Accepted: 2969 Descrip ...

  4. 【codeforces-482div2-C】Kuro and Walking Route(DFS)

    题目链接:http://codeforces.com/contest/979/problem/C Kuro is living in a country called Uberland, consis ...

  5. JTable的应用

    最近项目中使用到一个table表格,表格的样子如下: 可以修改数量,以及折扣,对应的最终价会相应的变化. 随手写了份插件,命名为JTable,可以给热爱jquery 的友友们一个参考: 代码如下: / ...

  6. Jquery validation自定义验证

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. ElasticSearch6.0 高级应用之 多字段聚合Aggregation(二)

    ElasticSearch6.0 多字段聚合网上完整的资料很少 ,所以作者经过查阅资料,编写了聚合高级使用例子 例子是根据电商搜索实际场景模拟出来的 希望给大家带来帮助! 下面我们开始吧! 1. 创建 ...

  8. PostgreSQL备份工具-pg_backrest(转)

    转自:http://blog.chinaunix.net/uid-7270462-id-5777877.html 官网:https://pgbackrest.org 一.配置集中备份服务器 1.1 备 ...

  9. asp.net string有多行文字

    用如下格式设置

  10. (转)MapReduce Design Patterns(chapter 2 (part 2))(三)

    Median and standard deviation 中值和标准差的计算比前面的例子复杂一点.因为这种运算是非关联的,它们不是那么容易的能从combiner中获益.中值是将数据集一分为两等份的数 ...