У меня есть проблема при создании сценария производительности, связанная с чтением данных из конфигурации данных csv.
Мой скрипт имеет следующую структуру:
setup Thread
Create csv Thread. After view dashboard, using Json extractor to get list of data and put it to csv file
Создать CSV-файл - После этой темы у меня будет много базы CSV-файлов по номеру центра. Например: 4 файла с разными именами
String[] attempt = (vars.get("ListAttemptId_ALL")).split(",");
int length = attempt.length;
String dir = props.get("UserFilePath").toString();
String center = vars.get("Center");
File csvFile = new File(dir, center + ".csv");
if(!csvFile.exists()){
FileWriter fstream = new FileWriter(csvFile);
BufferedWriter out = new BufferedWriter(fstream);
for(int i = 1; i <= length; i++){
out.write(attempt[i-1]);
out.write(System.getProperty("line.separator"));
}
out.close();
fstream.close();
}
Следующий поток получает имя файла и использует CSV-файл для зацикливания
вся линия
String center = vars.get("Center");
String fileName = center + ".csv";
props.put("path_${__threadNum}", String.valueOf(fileName));
Поскольку у меня много потоков, будет запускаться один и тот же файл, поэтому я просто проверяю __threadNum of, чтобы найти имя файла, который должен использовать этот поток.
Я использую цикл контроллера, чтобы перейти через файл CSV, запуск до конца файла остановит поток. Вот внутри этой петли
CSV data Set config:
Filename: ${__property(UserFilePath)}\\${__P(path_${__threadNum})}
где $ {__ property (UserFilePath)} = путь к папке и
$ {__ P (путь _ $ {__ threadNum})} - имя извлеченного файла csv
Моя проблема в том, что этот код нестабилен, иногда потоки могут нормально читать файл, иногда показывается ошибка, что файл не существует (на самом деле он существует), поэтому трудно отследить, откуда возникла проблема. Кто-нибудь может предложить решение моей проблемы? Или предложить какую-либо идею лучше, чем мое решение, чтобы прочитать файл CSV в группе потоков?