user2388556
user2388556

Reputation: 299

java.io.FileNotFoundException with Jmeter - Using beanshell pre processor

I'm having issue with Jmeter using BeanShell PreProcessor to encode input file then include the encoded file in "Send file with request".

Jmeter Setup


BeanShell PreProcessor

import org.apache.commons.io.FileUtils;
import org.apache.commons.codec.binary.Base64;
String file1 = FileUtils.readFileToString(new File("D:/File/test.txt"),"UTF-8");
vars.put("file1",new String(Base64.encodeBase64(file.getBytes("UTF-8"))));

Error Message

java.io.FileNotFoundException: ${file1} (The system cannot find the file specified)

Upvotes: 0

Views: 2262

Answers (1)

Dmitri T
Dmitri T

Reputation: 168157

If you're trying to do the following:

  1. Read file into a string
  2. Encode content to Base64
  3. Save encoded content to another file
  4. Save new file path into a JMeter Variable

your Beanshell code should look like:

String file1 = FileUtils.readFileToString(new File("D:/File/test.txt"), "UTF-8");
FileUtils.write(new File("D:/File/testbase64.txt"),new String(Base64.encodeBase64(file1.getBytes("UTF-8"))));
vars.put("file1","D:/File/testbase64.txt");

Your code snippet was

  1. Trying to put encoded file content into file JMeter variable
  2. Having a typo in the last line file.getBytes() should be changed to file1.getBytes()

See How to use BeanShell: JMeter's favorite built-in component guide for more information on bsh scripting in Apache JMeter.

Upvotes: 1

Related Questions