一,导入
使用Jmeter运行Java脚本,需要用到Jmeter的提供的框架jar包(分别在jmeter目录下的lib和ext目录下)
1.ApacheJMeter_core.jar
2.ApacheJMeter_java.jar
3.slf4j-api-1.7.25.jar
4.jorphan.jar
5.导入sql驱动器.jar
注:导入之后要记得,右键 build pats -> add..引入jar包
二,创建类导入
javaSamplerClient方法 jmeter 中 java请求框架
三,写脚本
getDefaultParameters:获取参数,设置的参数会在Jmeter的参数面板上显示出来
setupTest:初始化方法,只执行一次,跟LR里的init方法一样的,用于建立链接
runTest:执行N次,处理业务
teardownTest:结束方法,只执行一次,LR里的end方法是一样的,用于释放资源
四,导出jmeter jar 包
java_jdbc 脚本由loadrunner脚本转化而来
1 package com.test.jmeter; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.PreparedStatement; 6 import java.sql.SQLException; 7 8 import org.apache.jmeter.config.Arguments; 9 import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient; 10 import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; 11 import org.apache.jmeter.samplers.SampleResult; 12 13 public class jdbc_jmeter_insert implements JavaSamplerClient { 14 // 全局变量 15 PreparedStatement statement; 16 Connection conn; 17 18 @Override 19 public Arguments getDefaultParameters() { 20 Arguments arguments = new Arguments(); 21 arguments.addArgument("sql", "insert into itcast_role (name,description) values (?,?)"); 22 arguments.addArgument("url", "jdbc:mysql://localhost:3306/oa?useUnicode=true&characterEncoding=utf8"); 23 arguments.addArgument("user", "root"); 24 arguments.addArgument("password", "123456"); 25 26 arguments.addArgument("name", "lisi"); 27 arguments.addArgument("desc", "test"); 28 return arguments; 29 } 30 31 // 初始化方法,类似于LR里的init方法,特点是每个用户只执行一次 32 @Override 33 public void setupTest(JavaSamplerContext context) { 34 // 注册驱动,告诉Java接下来要链接哪个数据库 35 try { 36 Class.forName("com.mysql.jdbc.Driver"); 37 // 建立mysql数据库链接 38 conn = DriverManager.getConnection(context.getParameter("url"),context.getParameter("user"),context.getParameter("password")); 39 // 把sql进行编译 40 statement = conn.prepareStatement(context.getParameter("sql")); 41 } catch (Exception e) { 42 e.printStackTrace(); 43 } 44 45 } 46 47 // runTest方法,类似LR里的actions方法,特点是每个用户执行多次(循环次数或者持续时间s) 48 @Override 49 public SampleResult runTest(JavaSamplerContext context) { 50 SampleResult result = new SampleResult(); 51 // 定义一个事务名称 52 result.setSampleLabel("insert"); 53 // 事务开始 54 result.sampleStart(); 55 // 执行sql之前,先进行参数化 56 try { 57 statement.setString(1, context.getParameter("name")); 58 statement.setString(2, context.getParameter("desc")); 59 int rows = statement.executeUpdate(); 60 if (rows == 1){ 61 // 事务成功 62 result.setSuccessful(true); 63 }else{ 64 // 事务失败 65 result.setSuccessful(false); 66 } 67 System.out.println("=============================:"+rows); 68 } catch (SQLException e) { 69 e.printStackTrace(); 70 } 71 // 事务结束 72 result.sampleEnd(); 73 return result; 74 } 75 76 // 结束方法,类似于LR里的end方法,特点是每个用户只执行一次 77 @Override 78 public void teardownTest(JavaSamplerContext context) { 79 // 关闭链接 80 try { 81 conn.close(); 82 } catch (SQLException e) { 83 e.printStackTrace(); 84 } 85 } 86 87 public static void main(String[] args) { 88 jdbc_jmeter_insert jmeter = new jdbc_jmeter_insert(); 89 JavaSamplerContext context = new JavaSamplerContext(jmeter.getDefaultParameters()); 90 jmeter.setupTest(context); 91 jmeter.runTest(context); 92 jmeter.teardownTest(context); 93 } 94 95 }
loadrunner-JDBC 脚本 https://www.cnblogs.com/zhenyu1/p/10620524.html
原文:https://www.cnblogs.com/zhenyu1/p/10642339.html