On 12 October 2011 20:43, David Parks <[email protected]> wrote:
> This is as expected in this scenario, I was using it with an infinite loop,
> so in the end the percentages are roughly correct (but still randomly
> distributed, which accounts for the error you are noting). But note how the
> logic works here, each iteration it will pick one controller, and that
> controller may or may not run in that iteration (depending on its percentage
> probability that it will run). This will randomly distribute load.
>
> If you want to control executions precisely and not just distribute load in
> percentages then we need to consider another approach. And now I notice a
> few details of your original email that I didn't take into account.
>
> Here are a few other ideas you can play with:
>
> Random Controller
>  * Module Controller A [20%]
>  * Module Controller A [20%]
>  * Module Controller B [20%]
>  * Module Controller C [20%]
>  * Module Controller C [20%]
>
> In this scenario A & C will run 40% of the time and B will run 20% of the
> time, but one of them is always selected by the Random Controller. You can
> use the module controller to allow you to define A, B, and C elsewhere and
> duplicate their use in this sense.
>
> Another idea is the If Controller - I haven't used it so I'm just going off
> the top of my head here, but I would experiment with creating a random
> variable (0-1.0) using the [Random Variable Configuration Element] to
> determine which IF controller to run, and each IF controller only runs if
> the random variable defined at the beginning of the loop is say: (0-0.3 =
> 30%, A), (0.3-0.4 = 10%, B), etc. This would guarantee 1 and only 1 of the
> controllers run in a probabilistic pattern.

Or generate a number in the range 0-9, and use the switch controller
with 10 child samples in the appropriate percentages.

If you convert the random number 0-9 into 0-3 in the appropriate
percentages, you can use just 4 samples.

This can be done using a BSF/JSR223/BeanShell Pre-Processor to create
a variable in the appropriate range.

Pseudo-code:
r=random[0-9]
n={0,1,1,1,1,2,2,2,3,3}[r] // index the array

Switch Controller ${n}

Or you can create a CSV file with a suitable random mix of numbers and
use that to define the Switch variable

> I'll bet you could come up with a couple more ways of tackling it if you
> really tried, but hopefully these give you enough ideas to get by.
>
>
>
> -----Original Message-----
> From: Philippe Bossu [mailto:[email protected]]
> Sent: Wednesday, October 12, 2011 11:53 AM
> To: JMeter Users List
> Subject: Re: Question about ThrouputController
>
> Hello,
> Thanks for this I tried it but I doesn't work .
> I set 1 threads running 50 LOOP Count => I get 24 executions
>
> That's not what I want, I want 50 executions with the repartition, because
> in this case If I have a sampler waiting for RandomController run result,
> it will fail since it may not execute.
> is it something possible ?
>
> By the  way, percentages are not well respected.
> 7 / 24 => 30 % => I get 7 executions => OK
> 4 / 24 => 10% => I get 4 executions => KO
> 8/ 24 => I get 8 executions => 33% KO
> 5 / 24 => I get 5 executions => 20% OK
>
>
> Regards
> Philippe
>
>
> On Wed, Oct 12, 2011 at 7:31 PM, David Parks <[email protected]> wrote:
>
>> I did this as follows:
>>
>> * Thread group (define how many requests should be going through at one
>> time)
>>  * Random Controller (pick any of the sub controllers at random each
>> iteration)
>>    * Throughput Controller A [10%, By Percent]
>>    * Throughput Controller B [40%, By Percent]
>>    * Throughput Controller C [30%, By Percent]
>>    * Throughput Controller D [20%, By Percent]
>>
>> This generates randomly distributed load over Controllers A-D according to
>> the percentages defined.
>>
>> I also threw in a timer at the Random Controller level to limit the
>> requests
>> to once every X seconds, this way I could define the number of threads as
>> representative of an real-world active user.
>>
>> Hope that gives some food for thought.
>>
>>
>> -----Original Message-----
>> From: Philippe Bossu [mailto:[email protected]]
>> Sent: Wednesday, October 12, 2011 10:13 AM
>> To: [email protected]
>> Subject: Question about ThrouputController
>>
>> Hello,
>> First thank's for your help and great JMeter product.
>>
>> I have the following requirement.
>> I would like to execute 4 different samples at the following frequence:
>>
>>    - 10% for A
>>   - 40% for B
>>   - 30% for C
>>   - 20% for D
>>
>> A,B,C and D do search on different criterions.
>> At least one of them must be executed because next sampler will use the
>> search result.
>>
>>
>> I tried to use ThroughputCOntroller but when I ran it once, none of the 4
>> is
>> executed.
>> Random Controller does not do the job.
>> InterleaveController as parent of TPC may be an option but I don't
>> understand how to use it with others
>> SwitchController might also be an option based on a question sebb answered
>> to on the mailing list but how to randomize ?
>>
>>
>> Thank you for your help.
>> Regards
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to