У меня есть данные CSV как
FirstName,MiddleName,LastName,ImageLocation
Jack|Michel|Rechards|C:\Image\picture.jpg
Tom|Peter|Kim|C:\Image\picture123.jpg
Я пытаюсь настроить Jmeter для чтения вышеуказанного файла данных и передачи изображения в виде данных формы в ресурс REST API PUT в качестве данных формы. API принимает изображение как ByteBuffer.
В JMeter загрузка нескольких частей / данных формы доступна только для POST, но не для ресурса PUT.
Для Image я написал код в BeanShell PreProcessor, который помещает byte [] в переменную
String imageLoc = vars.get("ImageLocation");
File file = new File(imageLoc);
byte[] buffer = new byte[(int) file.length()];
InputStream ios = null;
try {
ios = new FileInputStream(file);
if (ios.read(buffer) == -1) {
throw new IOException(
"EOF reached while trying to read the whole file");
}
} finally {
try {
if (ios != null)
ios.close();
} catch (IOException e) {
}
}
vars.put("imageData", new String(buffer));
и переменная imageData передается в данных тела HTTP-запроса как
------=_parttest
Content-Type: image/jpeg; name=test.jpeg
Content-Transfer-Encoding: binary
Content-Disposition: form-data; name="Picture"; filename="test.jpeg"
${imageData}
------=_parttest--
Почему-то изображения не отображаются правильно для запросов от Jmeter. Если я сделаю аналогичный PUT-запрос почтальона к API для сохранения изображения и сделаю еще один GET-запрос для чтения изображения, оно будет успешно прочитано.
Либо я неправильно настроил свой тест (проблема с кодом beanShell, либо проблема с данными тела HTTP-запроса), либо есть лучший способ настроить этот тест для чтения изображений из пути в файле данных и передачи изображения в виде данных формы в API PUT ресурс.
С нетерпением жду совета экспертов.