jmeter-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sebb <seb...@gmail.com>
Subject Re: Sharing Variables Between Thread-Group
Date Mon, 16 Jul 2012 19:11:20 GMT
On 16 July 2012 19:42, unjc email <unjc.email@gmail.com> wrote:
> Guys, thanks for your replies.
>
> I don't know if anyone have this experience.  I found that
> ${__setProperty}/${__P} pair would work between thread groups IF I use
> constant value ("abc" like below example) or system variables (like
> $__time(HMS). When I use a local variable ("tmp" as like in my
> example) in the $__setProperty call, it doesn't work.
>
>               tmp = "abc";
>               ${__setProperty(key,tmp)};                           //
> THAT DOES NOT WORK!!
>               ${__setProperty(key,"abc")};
> // THAT WORKS!!
>
>
> I also found that it is NOT the variable value that is shared between
> the thread group, it's the reference.  When I put ${__time(HMS)} in
> the __setProperty call and run the test, the "key" values are
> different between the two thread group.  Does anyone know how to pass
> a local-defined variable value using setProperty call?
>
>
> Test Plan (with 2 thread groups)
>
> Thread-Group1 (with 1 thread)
>> Dubug Sampler
>> BeanShell PreProcessor
>    Script:
>               ${__setProperty(key,${__time(HMS)})};
>        // USING TIMESTAMP
>               log.info("Group 1 key = " + ${__P(key)});
>         //2012/07/16 18:31:36 INFO  -
> jmeter.util.BeanShellTestElement: Group 1 key = 183136
>
>
> Thread-Group2 (with 2 threads)
>> HTTP Sampler
>> BeanShell PreProcessor
>    Script:
>               log.info("Group 2 key = " + ${__P(key)});
>          //2012/07/16 18:31:36 INFO  -
> jmeter.util.BeanShellTestElement: Group 2 key = 183119
>
> Note that it is not the same value being logged.

Sorry, I saw that you were using function references within the
script, but did not realise the implications.

Such references are processed *before* the script is passed to
BeanShell, so won't have access to the values set up by BeanShell.

It's best not to mix function references with script elements such as
BeanShell, as the behaviour is harder to follow.

To set a property using BeanShell, use:

props.put("propname", "value");

or using variables:

key="propname";
val="value";
props.put(key, value);

Property setting is documented at:

http://jmeter.apache.org/usermanual/component_reference.html#BeanShell_Sampler

>
>
> Regards,
> Jacky
>
> On Mon, Jul 16, 2012 at 12:48 PM, Jomebrew <aielloster@gmail.com> wrote:
>> I documented how I do in a blog post a while back.  I still use this 100%
>> of the time.  I run several instances on a machine in GUI mode and each
>> instance has 250 users per thread group (two thread groups, same users for
>> each group) for a total 500 threads/connections per instance.
>>
>> I think this was problem #2 for me in this post.
>>
>> http://www.jomebrew.com/2011/10/jmeter-random-transactions-and-sharing.html
>>
>> /Joe
>>
>> On Mon, Jul 16, 2012 at 8:50 AM, unjc email <unjc.email@gmail.com> wrote:
>>
>>> Hello,
>>>
>>> I have two thread groups set up in my test plan.  The first test group
>>> is for initializing variables for the test plan at start; it is
>>> configured with a dummy debug sampler.  The second group is where the
>>> actual test samplers are placed.  I try to pass the variables from
>>> thread-group 1  via __setProperty to thread-group 2, but I always have
>>> "void" value from __P calls.   Could someone please advise the proper
>>> way to pass variables from one group to another?
>>>
>>>
>>> Test Plan (with 2 thread groups)
>>>
>>> Thread-Group1 (with 1 thread)
>>> > Dubug Sampler
>>> > BeanShell PreProcessor
>>>    Script:
>>>               tmp = "abc";
>>>               ${__setProperty(key,tmp)};
>>>               log.info("Group 1 key = " + ${__P(key)});
>>>
>>>
>>> Thread-Group2 (with 2 threads)
>>> > HTTP Sampler
>>> > BeanShell PreProcessor
>>>    Script:
>>>               log.info("Group 2 key = " + ${__P(key)});
>>>
>>>
>>> 2012/07/16 15:47:32 INFO  - jmeter.threads.JMeterThread: Thread
>>> started: Thread Group 1-1
>>> 2012/07/16 15:47:32 INFO  - jmeter.threads.JMeterThread: Thread
>>> started: Thread Group 2-1
>>> 2012/07/16 15:47:32 INFO  - jmeter.util.BeanShellTestElement: Group 1 key
>>> = abc
>>> 2012/07/16 15:47:32 INFO  - jmeter.threads.JMeterThread: Thread
>>> finished: Thread Group 1-1
>>> 2012/07/16 15:47:32 INFO  - jmeter.engine.StandardJMeterEngine: Ending
>>> thread Thread Group 1-1
>>> 2012/07/16 15:47:32 INFO  - jmeter.engine.StandardJMeterEngine: All
>>> threads have been started
>>> 2012/07/16 15:47:32 INFO  - jmeter.threads.JMeterThread: Thread
>>> started: Thread Group 2-2
>>> 2012/07/16 15:47:32 INFO  - jmeter.util.BeanShellTestElement: Group 2
>>> key = void
>>> 2012/07/16 15:47:32 INFO  - jmeter.threads.JMeterThread: Thread
>>> finished: Thread Group 2-1
>>> 2012/07/16 15:47:32 INFO  - jmeter.engine.StandardJMeterEngine: Ending
>>> thread Thread Group 2-1
>>> 2012/07/16 15:47:32 INFO  - jmeter.util.BeanShellTestElement: Group 2
>>> key = void
>>> 2012/07/16 15:47:32 INFO  - jmeter.threads.JMeterThread: Thread
>>> finished: Thread Group 2-2
>>> 2012/07/16 15:47:32 INFO  - jmeter.engine.StandardJMeterEngine: Ending
>>> thread Thread Group 2-2
>>>
>>>
>>>
>>>
>>> Thanks,
>>> Jacky
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
>>> For additional commands, e-mail: user-help@jmeter.apache.org
>>>
>>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
> For additional commands, e-mail: user-help@jmeter.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
For additional commands, e-mail: user-help@jmeter.apache.org


Mime
View raw message