You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@jmeter.apache.org by Tech Newbie <te...@yahoo.com> on 2009/12/01 23:30:03 UTC
BeanShell's the only way to vary load?
Looking for "best practice" to vary load in non-gui mode.
I have a test plan that has a Constant Throughput Timer. It is defined as a JMeter property and a simple shell script passes in the property value on JMeter's startup.
I'd like to vary this load (bell-curve) over time (1 day). I've read about the approach using BeanShell server. Is this the best way? I'm hesitating about this because it's another process to manage, in parallel with JMeter itself.
Other solutions I've comtemplated:
- Extend the simple shell script to invoke mutiple instances of JMeter, serially, with different values for the Constant Throughput Timer.
- Create a test plan with multiple thread groups with different values for the Constant Throughput Timer and have JMeter execute the thread group serially.
Please enlight me on the pros and cons.
Thanks.
Re: BeanShell's the only way to vary load?
Posted by Deepak Shetty <sh...@gmail.com>.
hi
Its custom code in beanshell you can write anything you want. The only real
bit you need to know is (from the manual
http://jakarta.apache.org/jmeter/usermanual/component_reference.html#Constant_Throughput_Timer)
* N.B. although the Timer is called the Constant Throughput timer, the
throughput value does not need to be constant. It can be defined in terms of
a variable or function call, and the value can be changed during a test. The
value can be changed in various ways: *
- * using a counter variable *
- * using a JavaScript or BeanShell function to provide a changing value
*
- * using the remote BeanShell server to change a JMeter property *
Say you have written a java function that given a current time (say in 30
minute granularity) returns you the value of the throughput (how you
implement this is upto you , it may be as simple as maintaining a property
file keyed with HH_MM for every 30 minute interval and the function merely
converting the current time into HH_MM and reading the value , to as
complicated as writing the equation for the Gaussian Bell curve and
substituting values of times for it).
Then in BeanShell or java Samplers or javascript functions, invoke this ,
set the return value into a variable and use that variable in the timer (I
believe you can directly set the value into the timer as well), if the value
has changed.
regards
deepak
On Wed, Dec 2, 2009 at 11:44 AM, Tech Newbie <te...@yahoo.com> wrote:
> Can you expand on how to "vary Constant Throughput Timer using
> a function of say time or any other variable by writing custom code"? I'm
> not aware of this capability. This will be most suitable for my use case.
> Can you point me to some documentation or example?
>
> Thanks in advance.
>
> --- On Tue, 12/1/09, Deepak Shetty <sh...@gmail.com> wrote:
>
> From: Deepak Shetty <sh...@gmail.com>
> Subject: Re: BeanShell's the only way to vary load?
> To: "JMeter Users List" <jm...@jakarta.apache.org>
> Date: Tuesday, December 1, 2009, 11:10 PM
>
> hi
> Ill make an attempt to answer , though bear in mind that I dont have any
> particular expertise in the topic you raise.
>
> Since the Constant throughput timer can be varied within the test itself
> (as
> a function of say time or any other variable by writing custom code) then I
> would prefer that approach to doing it externally (however this is much
> less
> flexible). Do you also need to distribute the tests to generate the load
> you
> need (irrespective of the mechanism used to vary the load)? if so having a
> self contained test is probably better.
>
> What are you trying to model? A system can show different characteristics
> for the same throughput. A user sending 100 requests in say 10 minutes may
> not be the same as 10 users each sending 10 requests in 10 minutes. In the
> latter case you are also looking to vary the number of active sessions
> instead of just the throughput and probably having multiple thread groups
> may be better.
>
> And lastly you cant have a 'best' way unless you determine what parameters
> are important to you. Is flexibility most important? runtime changes needed
> depending on how the system behaves? is maintaining/managing the test more
> important?
> regards
> deepak
>
> On Tue, Dec 1, 2009 at 2:30 PM, Tech Newbie <te...@yahoo.com> wrote:
>
> > Looking for "best practice" to vary load in non-gui mode.
> >
> > I have a test plan that has a Constant Throughput Timer. It is defined
> as
> > a JMeter property and a simple shell script passes in the property value
> on
> > JMeter's startup.
> >
> > I'd like to vary this load (bell-curve) over time (1 day). I've read
> about
> > the approach using BeanShell server. Is this the best way? I'm
> hesitating
> > about this because it's another process to manage, in parallel with
> JMeter
> > itself.
> >
> > Other solutions I've comtemplated:
> >
> > - Extend the simple shell script to invoke mutiple instances of JMeter,
> > serially, with different values for the Constant Throughput Timer.
> >
> > - Create a test plan with multiple thread groups with different values
> for
> > the Constant Throughput Timer and have JMeter execute the thread group
> > serially.
> >
> > Please enlight me on the pros and cons.
> >
> > Thanks.
> >
> >
> >
> >
>
>
>
>
>
Re: BeanShell's the only way to vary load?
Posted by Tech Newbie <te...@yahoo.com>.
Can you expand on how to "vary Constant Throughput Timer using
a function of say time or any other variable by writing custom code"? I'm not aware of this capability. This will be most suitable for my use case. Can you point me to some documentation or example?
Thanks in advance.
--- On Tue, 12/1/09, Deepak Shetty <sh...@gmail.com> wrote:
From: Deepak Shetty <sh...@gmail.com>
Subject: Re: BeanShell's the only way to vary load?
To: "JMeter Users List" <jm...@jakarta.apache.org>
Date: Tuesday, December 1, 2009, 11:10 PM
hi
Ill make an attempt to answer , though bear in mind that I dont have any
particular expertise in the topic you raise.
Since the Constant throughput timer can be varied within the test itself (as
a function of say time or any other variable by writing custom code) then I
would prefer that approach to doing it externally (however this is much less
flexible). Do you also need to distribute the tests to generate the load you
need (irrespective of the mechanism used to vary the load)? if so having a
self contained test is probably better.
What are you trying to model? A system can show different characteristics
for the same throughput. A user sending 100 requests in say 10 minutes may
not be the same as 10 users each sending 10 requests in 10 minutes. In the
latter case you are also looking to vary the number of active sessions
instead of just the throughput and probably having multiple thread groups
may be better.
And lastly you cant have a 'best' way unless you determine what parameters
are important to you. Is flexibility most important? runtime changes needed
depending on how the system behaves? is maintaining/managing the test more
important?
regards
deepak
On Tue, Dec 1, 2009 at 2:30 PM, Tech Newbie <te...@yahoo.com> wrote:
> Looking for "best practice" to vary load in non-gui mode.
>
> I have a test plan that has a Constant Throughput Timer. It is defined as
> a JMeter property and a simple shell script passes in the property value on
> JMeter's startup.
>
> I'd like to vary this load (bell-curve) over time (1 day). I've read about
> the approach using BeanShell server. Is this the best way? I'm hesitating
> about this because it's another process to manage, in parallel with JMeter
> itself.
>
> Other solutions I've comtemplated:
>
> - Extend the simple shell script to invoke mutiple instances of JMeter,
> serially, with different values for the Constant Throughput Timer.
>
> - Create a test plan with multiple thread groups with different values for
> the Constant Throughput Timer and have JMeter execute the thread group
> serially.
>
> Please enlight me on the pros and cons.
>
> Thanks.
>
>
>
>
Re: BeanShell's the only way to vary load?
Posted by Deepak Shetty <sh...@gmail.com>.
hi
Ill make an attempt to answer , though bear in mind that I dont have any
particular expertise in the topic you raise.
Since the Constant throughput timer can be varied within the test itself (as
a function of say time or any other variable by writing custom code) then I
would prefer that approach to doing it externally (however this is much less
flexible). Do you also need to distribute the tests to generate the load you
need (irrespective of the mechanism used to vary the load)? if so having a
self contained test is probably better.
What are you trying to model? A system can show different characteristics
for the same throughput. A user sending 100 requests in say 10 minutes may
not be the same as 10 users each sending 10 requests in 10 minutes. In the
latter case you are also looking to vary the number of active sessions
instead of just the throughput and probably having multiple thread groups
may be better.
And lastly you cant have a 'best' way unless you determine what parameters
are important to you. Is flexibility most important? runtime changes needed
depending on how the system behaves? is maintaining/managing the test more
important?
regards
deepak
On Tue, Dec 1, 2009 at 2:30 PM, Tech Newbie <te...@yahoo.com> wrote:
> Looking for "best practice" to vary load in non-gui mode.
>
> I have a test plan that has a Constant Throughput Timer. It is defined as
> a JMeter property and a simple shell script passes in the property value on
> JMeter's startup.
>
> I'd like to vary this load (bell-curve) over time (1 day). I've read about
> the approach using BeanShell server. Is this the best way? I'm hesitating
> about this because it's another process to manage, in parallel with JMeter
> itself.
>
> Other solutions I've comtemplated:
>
> - Extend the simple shell script to invoke mutiple instances of JMeter,
> serially, with different values for the Constant Throughput Timer.
>
> - Create a test plan with multiple thread groups with different values for
> the Constant Throughput Timer and have JMeter execute the thread group
> serially.
>
> Please enlight me on the pros and cons.
>
> Thanks.
>
>
>
>