我尝试使用Apache Jmeter加载测试Node.js TCP服务器。我已经创建了一个TCP采样器来模拟TCP服务器的虚拟用户,并且目前正在测试10个线程。我发送到TCP服务器的数据包含以字节为单位的位置信息。
每个位置包包含相同的起始位和相同的结束位。我根据Beanshell预处理器脚本中的结束位分割字节字符串。当我尝试将数据发送到服务器时,每个线程只发送第一个位置数据包并丢弃休止符。
这是我发送到TCP服务器的位置数据:
78782222110c0f080428c70312a7b0084b69f000153d01940b03f800e0110102010005462c0d0a 78782222110c0f081a39c90312af68084b83f010140f01940b03f80045580100000016b5830d0a 78782222110c0f081b2ac90312bacc084b87800b140d01940b03f80045590100000020bc450d0a 78782222110c0f081c04c80312bf2c084b83b017151a01940b03f8004559010000002735860d0a 78782222110c0f081c13c90312bf58084b7cb017150101940b03f800f26e010000002a5ea20d0a 78782222110c0f081e0eca0312a788084b6cd00c151e01940b03f800455801000000419fd30d0a
BeanShell预处理器的脚本:
import java.io.*;
import org.apache.jmeter.protocol.tcp.sampler.*;
String textToSend = "";
String fLine = "";
FileReader fileReader = new FileReader("${fname}");
BufferedReader bufferedReader = new BufferedReader(fileReader);
while((fLine = bufferedReader.readLine())!= null){
textToSend = textToSend + fLine;
}
String[] list = textToSend.split("0d0a");
for (String str : list) {
sampler.setRequestData(str);
}