上次直接使用jmeter里面的FTPsampler没有连接成功
现在想着自己写java代码,通过jmeter进行调用进行连接测试实现并发
代码引文:
http://www.cnblogs.com/chen1987lei/archive/2010/11/26/1888384.html
/*
* Created on 2009-9-14
* Copyright 2009 by www.xfok.net. All Rights Reserved
*
*/

package test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;
import java.util.Vector;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;

/**
* @author YangHua
* 转载请注明出处:http://www.xfok.net/2009/10/124485.html
*/
public class TestSftp {

/**
* 连接sftp服务器
* @param host 主机
* @param port 端口
* @param username 用户名
* @param password 密码
* @return
*/
public ChannelSftp connect(String host, int port, String username,
String password) {
ChannelSftp sftp = null;
try {
JSch jsch = new JSch();
jsch.getSession(username, host, port);
Session sshSession = jsch.getSession(username, host, port);
System.out.println("Session created.");
sshSession.setPassword(password);
Properties sshConfig = new Properties();
sshConfig.put("StrictHostKeyChecking", "no");
sshSession.setConfig(sshConfig);
sshSession.connect();
System.out.println("Session connected.");
System.out.println("Opening Channel.");
Channel channel = sshSession.openChannel("sftp");
channel.connect();
sftp = (ChannelSftp) channel;
System.out.println("Connected to " + host + ".");
} catch (Exception e) {

}
return sftp;
}

/**
* 上传文件
* @param directory 上传的目录
* @param uploadFile 要上传的文件
* @param sftp
*/
public void upload(String directory, String uploadFile, ChannelSftp sftp) {
try {
sftp.cd(directory);
File file=new File(uploadFile);
sftp.put(new FileInputStream(file), file.getName());
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 下载文件
* @param directory 下载目录
* @param downloadFile 下载的文件
* @param saveFile 存在本地的路径
* @param sftp
*/
public void download(String directory, String downloadFile,String saveFile, ChannelSftp sftp) {
try {
sftp.cd(directory);
File file=new File(saveFile);
sftp.get(downloadFile, new FileOutputStream(file));
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 删除文件
* @param directory 要删除文件所在目录
* @param deleteFile 要删除的文件
* @param sftp
*/
public void delete(String directory, String deleteFile, ChannelSftp sftp) {
try {
sftp.cd(directory);
sftp.rm(deleteFile);
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 列出目录下的文件
* @param directory 要列出的目录
* @param sftp
* @return
* @throws SftpException
*/
public Vector listFiles(String directory, ChannelSftp sftp) throws SftpException{
return sftp.ls(directory);
}

public static void main(String[] args) {
TestSftp sf = new TestSftp();
String host = "192.168.0.1";
int port = 22;
String username = "root";
String password = "root";
String directory = "/";
String uploadFile = "D:\\tmp\\upload.txt";
String downloadFile = "upload.txt";
String saveFile = "D:\\tmp\\download.txt";
String deleteFile = "delete.txt";
ChannelSftp sftp=sf.connect(host, port, username, password);
sf.upload(directory, uploadFile, sftp);
sf.download(directory, downloadFile, saveFile, sftp);
sf.delete(directory, deleteFile, sftp);
try{
sftp.cd(directory);
sftp.mkdir("ss");
System.out.println("finished");
}catch(Exception e){
e.printStackTrace();
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
写测试代码,调试下载
package test;

import com.jcraft.jsch.ChannelSftp;

public class TestSftpMain {
public static void main(String[] args){
TestSftp sf = new TestSftp();
String host = "192.168.1.107";
int port = 22;
String username = "root";
String password = "wxf";
String directory = "/root/Desktop";
String uploadFile = "D:\\tmp\\upload.txt";
String downloadFile = "threadServer.py";
String saveFile = "D:\\threadServer.py";
String deleteFile = "delete.txt";
ChannelSftp sftp=sf.connect(host, port, username, password);
// sf.upload(directory, uploadFile, sftp);
sf.download(directory, downloadFile, saveFile, sftp);
// sf.delete(directory, deleteFile, sftp);
try{
sftp.cd(directory);
sftp.mkdir("ss");
System.out.println("finished");
}catch(Exception e){
e.printStackTrace();
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
代码是将服务器的Desktop下面的一个py文件下载到本地的D盘
运行结果:下载成功
代码没有问题。使用上面的方法还需要下载第三方jar包地址:

下载地址:CSDN有下载

在jmeter中实现调用
搞了半天,调用上面的代码失败了,总是提示Typed variable declaration : Object constructorshi
问题定位过程:
1 经过不断尝试,定位问题,以为BeanShell Sampler不允许实例化对象,只能使用匿名对象。
2 实际是因为有了类型变量声明:
下面声明了一个ChannelSftp的类型变量。也就是说代码中只能声明基础变量
3 实际是没有加载创建类型变量的jar包,在eclipse里面通过添加外部jar包加进去了所以是成功的。到了jmeter就会出现编译都失败。只是这个问题提示不好定位。
错误如下
Response message: org.apache.jorphan.util.JMeterException:
Error invoking bsh method: eval Sourced file: inline
evaluation of:
`source("F:\\javatcp\\test\\src\\test\\test11.java");
test11 ts = new test11(); . . . '' :
Typed variable declaration : Object constructor
1
2
3
4
5
6
public ChannelSftp connect(String host, int port, String username,
String password) {
ChannelSftp sftp = null;

return sftp;
}
1
2
3
4
5
6
先附上简单的调用接口方式,再解决前面的问题

beanShell测试自己的java接口:
步骤:
1 编写代码:

public class Test {
public int ad(){
return 3;
}
}
1
2
3
4
5
6
7
2 beanshell脚本

source是直接加载java,也可以加载class文件更快
vars.put(“ad”,res.toString()); 给变量ad赋值

source("F:\\javatcp\\BSFjmeter\\src\\TestAdd.java");
int res = new Test().ad(3,3);
vars.put("ad",res.toString());
1
2
3
4
Debug Sampler样本的结果

JMeterVariables:
JMeterThread.last_sample_ok=true
JMeterThread.pack=org.apache.jmeter.threads.SamplePackage@c5adae
START.HMS=173222
START.MS=1458466342471
START.YMD=20160320
TESTSTART.MS=1458467432453
ddd=2
1
2
3
4
5
6
7
8
这里实现了简单的调用
BeanShell Sampler测试还有很多强大的用法,后面测试中继续加强练习
搞了好久,前面提示了不能声明类型变量,是因为没有引入对应的jar包。现在引入jar包
jmter引入第三方jar包除了直接放到lib/ext下,还有一种方式就是如图:

然后再测试就可以通过了

---------------------
作者:测试小卒子
来源:CSDN
原文:https://blog.csdn.net/g695144224/article/details/50937839
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/zgq123456/p/9817630.html

jmeter使用BeanShell Sampler测试自己写的java接口(一)相关推荐

  1. jmeter学习指南之Beanshell Sampler 常用方法

    视频地址:http://edu.51cto.com/lecturer/4626073.html JMeter 中可以使用 Beanshell Sampler 编写一些简单的脚本,实现更多功能. 1.B ...

  2. jmeter 使用beanshell 编写脚本

    目录 一.介绍 1.1 介绍 1.2 下载&启动 二.jmeter中创建beanshell脚本 三.jmeter与beanshell 数据交互 3.1 例子1 beanshell 将变量传给j ...

  3. Jmeter之Beanshell测试加密接口

    课程目标  1. 什么是Bean Shell 2. Jmeter有哪些Bean Shell 3. 加密算法MD5,AES,RSA介绍. 4. 处理各种加密BeanShell的使用用法 5. Bean ...

  4. JMeter工具:常用协议脚本开发(BeanShell Sampler, Debug Sampler, FTP/Java/JDBC请求, JUnit request, SOAP/XML-RPC)

    目录 1. BeanShell Sampler 1.1 BeanShell Timer:BeanShell定时器 1.2 BeanShell PreProcessor:BeanShell前置处理器 1 ...

  5. Jmeter 在 beanshell 脚本中写日志

    JMETER 在执行时,会写日志数据,我们在编写脚本的时候也可以自己写日志. 日志记录再jmeter 的bin 目录的 jmeter.log 文件中. jmeter 比较人性化,它在这里提供了脚本可以 ...

  6. linux脚本自定义赋值,JMeter——运用BeanShell给自定义的变量动态赋值

    这个计划中定义了以下组件:用户自定义变量: 里面定义了2个变量,一个是us(注意,未对它初始化),一个变量名是:test ,值为:123456一个BeanShell Sampler: ${test}表 ...

  7. jmeter4.0 统计结果次数 BeanShell Sampler,Debug Sampler

    jmeter4.0 统计结果次数 BeanShell Sampler,Debug Sampler 业务场景: 抽奖活动,程序按比例分配奖品,测试员想模拟100次抽奖,获取抽奖的结果,分析大致的概率 1 ...

  8. 利用JMeter的beanshell进行接口的加密处理

    最近项目中在做http协议的接口测试,其中接口请求报文数据有个字段值需要用到加密后的签名,即出于网络传输过程中,对数据安全的考虑,要对请求的数据进行特定的处理(加密),再进行请求. 刚开始由于项目赶进 ...

  9. jmeter之beanshell sample使用

    一.操作变量 二.操作属性 三.自定义函数 四.引用外部java文件 五.引用外部class文件 六.引用外部Jar包 七.其它用法(接受参数, log等) 一.操作变量:通过使用Bean shell ...

最新文章

  1. RubyGems 镜像
  2. 强化学习之贝尔曼方程中文解释
  3. PHP新手上路文件上传
  4. ARM嵌入式开发之JTAG与SWD接口
  5. 直流电机基本系统模型
  6. 【jQuery Demo】图片由下至上逐渐显示
  7. HTML placeholder
  8. python判别性别的代码_python如何实现性别识别 python实现性别识别代码示例
  9. Linux智能手机安全策略研究
  10. (日常搬砖)数据集标注格式转换:txt转xml(VOC格式)
  11. Flutter学习资源汇总(不定期更新)
  12. ARM指令集与Thumb指令集
  13. 有赞订单搜索AKF架构演进之路
  14. 如何在网站集成Payssion的国外支付方式?
  15. 创建一个商品类Product类,在该类中定义3个属性id,name,price和重写toString()方法
  16. 给你心爱的 npm 包上个『北京户口』
  17. 单反镜头上的参数具体意义
  18. 在虚拟机中,Elastix2.5 安装配置指南
  19. 给你三个ASCII字符(不含空白字符:包括空格、制表符\t、回车换行符\n),找出其中最大的那个
  20. Python 与神奇的数学之科赫曲线

热门文章

  1. 卷积神经网络卷积,池化,全连接--笔记01
  2. 猫咪视频_猫视频如何进入您的手机
  3. H5一键复制 兼容iOS
  4. 蓝桥杯2019 c/c++ B组真题
  5. Cadence allegro小技巧总结
  6. 频域特征提取的Python实现(频谱、功率谱、倒频谱)
  7. Package javax.naming
  8. [conda] 利用conda安装本地包
  9. python怎么求商_如何用python求差商?
  10. Web前端——登录界面hover效果