我在 jMeter 中进行了一些性能测试,在一个 HTTP 请求中我有 BeanShell PostProcessor。它应该在 CSV 文件的顶部写入用户电子邮件地址(最新的在顶部)。对这个文件进行排序非常重要。
import org.apache.commons.io.FilenameUtils;
import org.apache.jmeter.services.FileServer;
import java.text.*;
import java.io.*;
import java.util.*;
try {
String email = vars.get("emailPrefix") + "+" + vars.get("environment") + "-jm-" + vars.get("randomEmailNumber")+"@someEmail.com";
log.info(email);
String separator = System.getProperty("file.separator");
File mFile = new File(FileServer.getFileServer().getBaseDir() + separator + "investors_" + vars.get("environment") + ".csv");
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(mFile), "UTF8"));
String result = "";
String line = "";
while((line = br.readLine()) != null){
result = result + "\n" + line;
}
result = email + "," + result;
FileOutputStream fos = new FileOutputStream(mFile);
fos.write(result.getBytes());
fos.flush();
} catch(Exception e) {
System.out.println("Exception in 2 1 4 /getContactInformation::Email writer:" + e.toString());
throw e;
}
但是,当我尝试一次运行 100 个线程时,有时会发生,并非所有电子邮件都被记录,或者 CSV 文件以空结尾(内容在运行过程中被删除)。
我的问题可以通过从最后读取这个 CSV 文件来解决,但是 jMeter 不能这样做。
有没有简单的方法,如何同步这个后处理器,或者如何重写它?