Apache JMeter TCPSampler的使用

上一篇 / 下一篇  2018-08-14 11:20:32 / 个人分类:Jmeter

Apache JMeter TCPSampler的使用
   在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

Open Toolbar