性能测试十二:jmeter进阶之java请求参数化
如项目中的ip、端口号之类的,都可以在此代码中定义

public Arguments getDefaultParameters() {
// TODO Auto-generated method stub
return null;
}
此处注册两个参数到jmeter的变量池:
p_name,默认值设为abc
p_desc,默认值设为123

/**
* 此函数里面可以人工注册一些参数,这些参数可以在java请求面板里展示或更改
*/
@Override
public Arguments getDefaultParameters() {
Arguments arguments = new Arguments();
arguments.addArgument("p_name", "abc");
arguments.addArgument("p_desc", "123");
return arguments;
}
由于改变了代码 ,需重新导出jar包,并在jmeter目录下替换原来的jar包


重启jmeter


这样就可以在代码里面引用到参数了
当然,只要注册了过后,做什么参数都行

在代码中使用:

@Override
public SampleResult runTest(JavaSamplerContext arg0) {
SampleResult result = new SampleResult();
// 给事务起个名称
result.setSampleLabel("insert");
// 事务开始
result.sampleStart();
// 执行sql之前,先进行参数化
try {
String p_name = arg0.getParameter("p_name");
String p_desc = arg0.getParameter("p_desc");
statement.setString(1, p_name);
statement.setString(2, p_desc);
int rows = statement.executeUpdate();
if (rows > 0){
// 事务成功
result.setSuccessful(true);
}else{
// 事务失败
result.setSuccessful(false);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 事务结束
result.sampleEnd();
return result;
}

public static void main(String[] args) {
MyJmeterTest test = new MyJmeterTest();
// 创建一个JavaSamplerContext对象,该对象创建的时候需要传入一个Arguments对象
JavaSamplerContext context = new JavaSamplerContext(test.getDefaultParameters());
test.setupTest(context);
test.runTest(context);
test.teardownTest(context);
}
此时需再次导出、替换、重启jmeter就可以运行了

jmeter java脚本调试最终版:
package cn.test.jmeter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
public class MyJmeterTest implements JavaSamplerClient {
// 全局变量
PreparedStatement statement;
Connection conn;
/**
* 此函数里面可以人工注册一些参数,这些参数可以在java请求面板里展示或更改
*/
@Override
public Arguments getDefaultParameters() {
Arguments arguments = new Arguments();
arguments.addArgument("p_name", "abc");
arguments.addArgument("p_desc", "123");
return arguments;
}
/**
* 初始化的操作写在setup方法里,类似于LR里的init
*/
@Override
public void setupTest(JavaSamplerContext arg0) {
// 注册驱动,告诉Java接下来要链接哪个数据库
try {
Class.forName("com.mysql.jdbc.Driver");
// 建立mysql数据库链接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/oa", "root", "123456");
// 把sql进行编译
statement = conn.prepareStatement("insert into itcast_role (name, description) values (?,?)");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 真正多次操作的业务,放在runtest方法里,类似于LR里的action
*/
@Override
public SampleResult runTest(JavaSamplerContext arg0) {
SampleResult result = new SampleResult();
// 给事务起个名称
result.setSampleLabel("insert");
// 事务开始
result.sampleStart();
// 执行sql之前,先进行参数化
try {
String p_name = arg0.getParameter("p_name");
String p_desc = arg0.getParameter("p_desc");
statement.setString(1, p_name);
statement.setString(2, p_desc);
int rows = statement.executeUpdate();
if (rows > 0){
// 事务成功
result.setSuccessful(true);
}else{
// 事务失败
result.setSuccessful(false);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 事务结束
result.sampleEnd();
return result;
}
/**
* 结束的操作放在teardown里,类似于LR里的end
*/
@Override
public void teardownTest(JavaSamplerContext arg0) {
// 关闭链接
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
MyJmeterTest test = new MyJmeterTest();
// 创建一个JavaSamplerContext对象,该对象创建的时候需要传入一个Arguments对象
JavaSamplerContext context = new JavaSamplerContext(test.getDefaultParameters());
test.setupTest(context);
test.runTest(context);
test.teardownTest(context);
}
}
性能测试十二:jmeter进阶之java请求参数化的更多相关文章
- 性能测试十一:jmeter进阶之java请求
使用Java编写JDBC脚本对Mysql进行增删改查等操作的性能测试 使用Jmeter提供的脚本框架依赖的jar包(分别在jmeter目录下的lib和ext目录下) ApacheJMeter_core ...
- 性能测试十:jmeter进阶之webService与socket
一.webService 1.添加http post请求2.添加header:Conent-type:text/xml Post请求的body中填写<soapenv:Envelope xmln ...
- Jmeter二次开发——基于Java请求
简述 这近几年,越来越多非http的协议需要进行性能测试,包括不仅限于各类rpc.mq.缓存等.对于这些协议,市面上可能没有现成的工具可以直接使用,这个时候,我们可以自己动手,通过编写相应的JavaS ...
- jmeter中实现java请求实战日志
view code public class JdbcInsert implements JavaSamplerClient { // 全局变量 PreparedStatement pstmt; Co ...
- jmeter之自定义java请求性能测试
一.环境准备 1.新建一个java工程 2.导入jar包:ApacheJMeter_core.jar ApacheJMeter_java.jar ...
- jmeter二次开发之java请求
现在很多公司都用的是微服务,每个服务的请求协议有可能不相同,怎样用jmeter二次开发自己的java请求? 下面是具体的开发步骤: 1,把需要的jar包 添加到maven依赖中 jmeter中java ...
- 【JMeter】JMeter完成一个java请求的压测
先定义一下我说的remoteService:即远程调用服务,没有http的url.不对外提供或者对外提供有限的服务.具体视各公司的代码架构所定,比如有些公司为web工程,scf服务,db.scf即为服 ...
- 【转】JMeter完成一个java请求的压测
JMeter完成java请求的压力测试详解以及问题总结 原文地址:http://www.cnblogs.com/zhaoxd07/p/4895224.html 作者:KK_Yolanda 这篇文 ...
- 性能测试三十二:监控之Java线程监控
线程的五种状态 * 新建:new * 运行:runnable * 等待:waitting(无限期等待),timed waitting(限期等待) * 阻塞:blocked * 结束:terminate ...
随机推荐
- koa的洋葱圈模型
拿以下这段代码为例: const Koa = require('koa'); const app = new Koa(); // x-response-time app.use(async (ctx, ...
- win7屏蔽ctrl+alt+up/down快捷键/ (eclipse冲突)
win7屏蔽ctrl+alt+up/down快捷键/ Eclipse有个非常好用的快捷键(当然Eclipse好用的快捷键有N个)Ctrl+Alt+UP/DOWN,用于复制当前行的内容,用法很简单, ...
- div中让内容能不换行就尽量不换行.【纯原】
div中让内容能不换行就尽量不换行,部分左对齐,部分右对齐. <html> <head> <title>九歌·少司命</title> <style ...
- servlet dispatcher .forward(request, response); 进入其它servlet【原】
dispatcher .forward(request, response); 进入其它servlet 假如我们的web.xml配置如下 <servlet> <servlet-nam ...
- Html-Css 从入门到放弃(一)基础知识
注意要点: 1.ID属性不要以数字开头,数字开头的ID在 Mozilla/Firefox 浏览器中不起作用. 2.class 选择器用于描述一组元素的样式,class 选择器有别于id选择器,clas ...
- Linux 命令详解(十一)Shell 解析 json命令jq详解
前言 在自动化部署中涉及到shell脚本需要动态读取很多配置文件,最好是json格式. 更多jq信息: http://stedolan.github.io/jq/manual/ 一.根据key获取va ...
- python多进程那点事儿【multiprocessing库】
前言:项目中有个需求需要对产品的日志处理,按照产品中日志的某些字段,对日志进行再次划分.比如产品的日志中含有字段id,tag=1,现在需要把tag是基数的放到一个文件中,tag是偶数的放入一个文件中. ...
- luogu P2662 牛场围栏
传送门 因为一个木板可以切掉最多\(m\),所以可以先预处理哪些长度的木板可用,开个桶,然后对\([l-m,l]\)打标记,再把打了标记的数取出来 假设可用长度\(a_1,a_2,,,a_n\)从小到 ...
- tr 设置margin、padding无效
tr.td设置margin 无效 tr 设置padding无效.td设置padding有效
- static extern
/*主程序在a.c*/ //a.c #include <stdio.h> #include "b.h" main(){ printf ("%d\n" ...