Re: Question about ThrouputController
Thanks, I followed it and it worked for me. Regards On Wed, Oct 12, 2011 at 11:43 PM, Philippe Mouawad p.moua...@ubik-ingenierie.com wrote: Hello, We have a tutorial on this approach, you can find it here: - JMeter Switch Controller or How to Run a sampler with a certain Percentage http://www.ubik-ingenierie.com/ubikwiki/index.php?title=JMeter_Switch_Controller_or_How_to_Run_a_sampler_with_a_certain_Percentage Regards Philippe On Wed, Oct 12, 2011 at 10:32 PM, Philippe Bossu pbo...@gmail.com wrote: Hello, Thank you very much for all your responses, I will try it. Regards Philippe On Wed, Oct 12, 2011 at 10:22 PM, sebb seb...@gmail.com wrote: On 12 October 2011 20:43, David Parks davidpark...@yahoo.com 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:pbo...@gmail.com] 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 davidpark...@yahoo.com 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
RE: Question about ThrouputController
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:pbo...@gmail.com] Sent: Wednesday, October 12, 2011 10:13 AM To: jmeter-user@jakarta.apache.org 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: jmeter-user-unsubscr...@jakarta.apache.org For additional commands, e-mail: jmeter-user-h...@jakarta.apache.org
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 davidpark...@yahoo.com 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:pbo...@gmail.com] Sent: Wednesday, October 12, 2011 10:13 AM To: jmeter-user@jakarta.apache.org 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: jmeter-user-unsubscr...@jakarta.apache.org For additional commands, e-mail: jmeter-user-h...@jakarta.apache.org
Re: Question about ThrouputController
Random Order Controller seems to do the work. But I would like some confirmation . Thanks. On Wed, Oct 12, 2011 at 8:53 PM, Philippe Bossu pbo...@gmail.com wrote: 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 davidpark...@yahoo.comwrote: 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:pbo...@gmail.com] Sent: Wednesday, October 12, 2011 10:13 AM To: jmeter-user@jakarta.apache.org 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: jmeter-user-unsubscr...@jakarta.apache.org For additional commands, e-mail: jmeter-user-h...@jakarta.apache.org
Re: Question about ThrouputController
Unfortunately it is not either doing the job since sometimes 2 samplers inside Random Order Controller are ran and sometimes 1. On Wed, Oct 12, 2011 at 9:00 PM, Philippe Bossu pbo...@gmail.com wrote: Random Order Controller seems to do the work. But I would like some confirmation . Thanks. On Wed, Oct 12, 2011 at 8:53 PM, Philippe Bossu pbo...@gmail.com wrote: 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 davidpark...@yahoo.comwrote: 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:pbo...@gmail.com] Sent: Wednesday, October 12, 2011 10:13 AM To: jmeter-user@jakarta.apache.org 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: jmeter-user-unsubscr...@jakarta.apache.org For additional commands, e-mail: jmeter-user-h...@jakarta.apache.org
RE: Question about ThrouputController
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. 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:pbo...@gmail.com] 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 davidpark...@yahoo.com 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:pbo...@gmail.com] Sent: Wednesday, October 12, 2011 10:13 AM To: jmeter-user@jakarta.apache.org 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: jmeter-user-unsubscr...@jakarta.apache.org For additional commands, e-mail: jmeter-user-h...@jakarta.apache.org - To unsubscribe, e-mail: jmeter-user-unsubscr...@jakarta.apache.org For additional commands, e-mail: jmeter-user-h...@jakarta.apache.org
RE: Question about ThrouputController
Incidentally the Random Order controller runs *all* sub components, just in a random order, but the Random controller just picks one of the sub elements, make sure you're not mixing up the two as the difference is quite important in your case. -Original Message- From: Philippe Bossu [mailto:pbo...@gmail.com] Sent: Wednesday, October 12, 2011 12:06 PM To: JMeter Users List Subject: Re: Question about ThrouputController Unfortunately it is not either doing the job since sometimes 2 samplers inside Random Order Controller are ran and sometimes 1. On Wed, Oct 12, 2011 at 9:00 PM, Philippe Bossu pbo...@gmail.com wrote: Random Order Controller seems to do the work. But I would like some confirmation . Thanks. On Wed, Oct 12, 2011 at 8:53 PM, Philippe Bossu pbo...@gmail.com wrote: 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 davidpark...@yahoo.comwrote: 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:pbo...@gmail.com] Sent: Wednesday, October 12, 2011 10:13 AM To: jmeter-user@jakarta.apache.org 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: jmeter-user-unsubscr...@jakarta.apache.org For additional commands, e-mail: jmeter-user-h...@jakarta.apache.org - To unsubscribe, e-mail: jmeter-user-unsubscr...@jakarta.apache.org For additional commands, e-mail: jmeter-user-h...@jakarta.apache.org
Re: Question about ThrouputController
On 12 October 2011 20:43, David Parks davidpark...@yahoo.com 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:pbo...@gmail.com] 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 davidpark...@yahoo.com 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:pbo...@gmail.com] Sent: Wednesday, October 12, 2011 10:13 AM To: jmeter-user@jakarta.apache.org 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
Re: Question about ThrouputController
Hello, Thank you very much for all your responses, I will try it. Regards Philippe On Wed, Oct 12, 2011 at 10:22 PM, sebb seb...@gmail.com wrote: On 12 October 2011 20:43, David Parks davidpark...@yahoo.com 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:pbo...@gmail.com] 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 davidpark...@yahoo.com 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:pbo...@gmail.com] Sent: Wednesday, October 12, 2011 10:13 AM To: jmeter-user@jakarta.apache.org 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
Re: Question about ThrouputController
Hello, We have a tutorial on this approach, you can find it here: - JMeter Switch Controller or How to Run a sampler with a certain Percentagehttp://www.ubik-ingenierie.com/ubikwiki/index.php?title=JMeter_Switch_Controller_or_How_to_Run_a_sampler_with_a_certain_Percentage Regards Philippe On Wed, Oct 12, 2011 at 10:32 PM, Philippe Bossu pbo...@gmail.com wrote: Hello, Thank you very much for all your responses, I will try it. Regards Philippe On Wed, Oct 12, 2011 at 10:22 PM, sebb seb...@gmail.com wrote: On 12 October 2011 20:43, David Parks davidpark...@yahoo.com 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:pbo...@gmail.com] 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 davidpark...@yahoo.com 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:pbo...@gmail.com] Sent: Wednesday, October 12, 2011 10:13 AM To: jmeter-user@jakarta.apache.org Subject: Question about ThrouputController Hello, First thank's for your help and great