Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jmeter: Capture JDBC value in global variable

I'm very new to Jmeter and I'd like to know if there is some way to store the result of a query in a global variable to use in a different thread.

In other words, I need a set-up thread that sets a start-date and end-date (2 values) from the DB. Then, in a second thread (the main thread), I have to use the start-date and end-date as parameters for the tests.

Is this possible?

Thanks in advance!, Nahuel

like image 905
user1336321 Avatar asked Sep 04 '25 03:09

user1336321


1 Answers

Use the following elements:

  • JDBC_Connection_Configuration

  • JDBC Request

  • BeanShell Sampler

  • setUp Thread Group

Organize them as following: enter image description here

It will work as following:

  1. JDBC Connection Configuration will setup the connection to DB, name Variable name so that it matches Variable name of JDBC Request, in my case I name it conn

  2. Setup Thread Group will run query through JDBC Request and store result in variables

  3. Beanshell sampler with use the value and store it as a property so it can be shared by all threads.

Note the following:

  • The variable names of JDBC Request must match the number of columns returned by your SQL Query, note in example I have 3 columns, I put 3 variables, and will use clt_nom_1 name as I ensure there is only row returned by query

    • In Bean Shell sampler I put the following code:

      props.put("toto",vars.get("clt_nom_1"));
      
    • clt_nom_1 is named like this because it's the first row value

    • Finally in Thread Group I can use property toto through:

      ${__P(toto)}
      

JDBC Request Example

You could also replace BeanShell sampler by a debug sampler named:

${__setProperty(toto,${clt_nom_1})};

which would store variable in property

like image 76
UBIK LOAD PACK Avatar answered Sep 07 '25 20:09

UBIK LOAD PACK