一、使用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. Java截取图片的一部分并保存为40*40的图片

    @Test public void testImag() { try { String path = "E:/flower2.jpg"; int x = 11, y = 20, c ...

  2. python中sort()与sorted()的区别

    Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列 一,最简单的排序 1.使用sort排序 my_list = [3 ...

  3. PentesterLab-From SQL Injection to Shell

    一.打开靶机ip出现如下界面: 随便点一下,点到test链接,访问了如下url:http://192.168.109.131/cat.php?id=1,这里出现了一个id,常规思路这个位置可能有sql ...

  4. 20165202 预备作业3 Linux安装及学习

    一.虚拟机安装 娄老师的<基于VirtualBox安装Ubuntu图文教程>对于安装过程的介绍很易懂,但在安装过程中还是遇到了一些问题 Q1:安装教程中下载地址的VM提示安装包损坏 解决办 ...

  5. iOS 阶段学习第六天笔记(数组)

                                                                                                  iOS学习( ...

  6. 利用xcopy在复制文件或文件夹的时候保留其权限

    当用 Windows Explorer 复制或移动文件和文件夹时,文件或文件夹上设置的权限可能会发生改变.例如,当在一个 NTFS文件系统卷内或在两个 NTFS 卷之间复制一个文件时,Windows将 ...

  7. 【排序】堆排序,C++实现

    原创文章,转载请注明出处! 博客文章索引地址 博客文章中代码的github地址 # 预备知识     堆是一种特殊的树形数据结构,即完全二叉树.堆分为大根堆和小根堆,大根堆为根节点的值大于两个子节点的 ...

  8. socket创建TCP服务端和客户端

    看情况选择相对应的套接字*面向连接的传输--tcp协议--可靠的--流式套接字(SOCK_STREAM)*面向无连接的传输--udp协议--不可靠的--数据报套接字(SOCK_DGRAM) 在liun ...

  9. Git学习的网址

    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 https://github.co ...

  10. 关于python机器学习常用算法的例子

    Home Installation Documentation  Examples     Previous An introduction ... This documentation is for ...