Itzik Gili
Itzik Gili

Reputation: 324

Benchmarking Solr indexing with Jmeter

I want to use Jmeter to update a document on solr using http post. I want it to take a different file to update in every iteration, create a proper http post request and monitor the responses from the server.

Can someone guide me of how this can be done:

  1. Taking a different file every time.
  2. Creating a http post from it.

Upvotes: 0

Views: 581

Answers (1)

user2862211
user2862211

Reputation:

Your use case can be split into 2 parts:

  1. Get list of files to send
  2. Send them to server

In regards to point 1, I would suggest to obtain file list via scripting.

Assuming following Test Plan Structure:

Add a Thread Group (all defaults) Add a JSR223 Sampler as a child of Thread Group Select "beanshell" as language In "Script" area add following code:

File folder = new File("PATH TO FOLDER WITH YOUR FILES");
File [] files2send = folder.listFiles();

int counter = 1;

for (File file : files2send)

{

    vars.put("FILE_" + counter, file.getPath());

 counter++;

}

This will save files, you will be sending as JMeter Variables like:

FILE_1=d:\2solr\sometxtfile.txt
FILE_2=d:\2solr\somewordfile.docx
FILE_3=d:\2solr\someexcelfile.xlsx

After that you can use For Each Controller to iterate through files and add them to your request

Add For Each Controller as a child of Thread Group (same level as JSR223 Sampler)

Make sure that For Each Controller has following configuration:

  1. Input variable prefix: FILE
  2. Output variable name: CURRENTFILE
  3. Add _ before number is checked

Add HTTP Request as a child of For Each Controller

Access file you want to send as ${CURRENTFILE} in "Send Files With The Request" stanza of the HTTP Request

It's just one of the approaches, if you are not very comfortable with JSR233 or Beanshell you may wish to use CSV Data Set Config instead.

Upvotes: 2

Related Questions