Apache JMeter TCPSampler的使用
上一篇 /
下一篇 2018-08-14 11:20:32
/ 个人分类:Jmeter
在Jmeter中新建一个线程组,再新建一个TCPSampler,填写TCPSampler的一些配置,执行线程。
Response code =500,Response body返回正确
解决办法:
TCPClient classname
TCP Sampler提供了3个Sampler的实现,分别是org.apache.jmeter.protocol.tcp.sampler.TCPClientImpl、org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl和
org.apache.jmeter.protocol.tcp.sampler.LengthPrefixedBinaryTCPClientImpl。
其中TCPClientImpl实现了以文本编辑器中所编辑的纯文本为内容进行发送,BinaryTCPClientImpl则以文本编辑器中所编辑的16进制字符(hex)内容为基础转换为二进制的字节内容进行发送,LengthPrefixedBinaryTCPClientImpl则会在BinaryTCPClientImpl基础上默认以发送内容的长度以字节前缀进行填充。
我们可以通过配置jmeter.properties文件中tcp.handler属性来设置默认的TCPClient。
TCPClientImpl
我们使用TCPClientImpl对Mock TCP Server进行测试,配置参考下图: 点击运行测试,你会发现测试发生了阻塞,原因是服务器使用了readLine获取客户端的发送数据,需要根据发送数据中的CRLF(\r或\n)判断一行的结束。而我们制作的发送内容并不包括CRLF标识内容,因此,服务器阻塞在了读数据,测试客户端得不到服务器响应,同样也阻塞在了读数据,正确的配置需要添加一个“回车”(不能是”\r”或”\n”,因为TCPClientImpl会自动将其转换为对应的两个字符而不是CRLF标识)参考下图:
BinaryTCPClientImpl
BinaryTCPClientImpl的配置只需要将“Hello Server”转换为hex就可以实现同样的测试内容,注意尾部增加0a(\n)作为CRLF标识:
48656c6c6f205365727665720a1
LengthPrefixedBinaryTCPClientImpl
LengthPrefixedBinaryTCPClientImpl会自动在前缀增加内容长度,我们需要对Mock TCP Server进行小的改造
EOL配置
EOL是与读数据相关的,就是设定来自于服务器数据流的一个结束标识字节。没有设置EOL将会一直读到输入流结束为止。
这里值得注意的是,这是个十进制的值(千万不要写成hex),比如你可以查询ASCII表,来确认一个表示结束字符的十进制值
由于tcp发送的报文采用的是16进制发送,因此以15结尾,15转换为10进制为21
填写tcp请求采样器的各项参数后,发送请求,Response code返回500
标题搜索
日历
|
日 |
一 |
二 |
三 |
四 |
五 |
六 |
| 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 | | | | |
数据统计
- 访问量: 276508
- 日志数: 170
- 建立时间: 2011-12-05
- 更新时间: 2020-05-07