On 21 April 2015 at 22:07, Glenn Caccia <[email protected]> wrote: > > Hey all, > I often need to construct tests for a particular application service where I > need to test all the different API calls at a particular HPS for the server > and with the correct distribution of API calls. For example, applicationA > supports calls for call1, call2 and call3. I need to simulate 80 HPS for the > server between all three calls. call1 is 50% of the traffic, call2 is 25% of > the traffic and call3 is 25% of the traffic. In the past I have hard-coded > these distributions by using the throughput controller and setting an > appropriate percentage for each call. The problem is that production > distributions can change over time as features change, requiring the tester > to calculate new percentages and update the tests. Ultimately, I'd like our > JMeter scripts to have the ability to, at runtime, get the latest > distributions from production and use that in the test. To enable this, I > need to be able to programmatically set the throughput percentages rather > than having it hard-coded. > To this end, I thought to use properties. I have a Setup ThreadGroup that > uses a groovy script to set properties that represent each sampler target > distribution. The throughput controllers then reference their specific > distribution property. For example, the groovy script will set a property > for "call1distribution" to "100". The throughput controller that contains > the sampler for call1 would have its value set to > "${__property(call1distribution)}. However, when I run the script, it > appears that property values added after the loading of JMeter do not get > picked up by subsequent threads. That is, these property values are set in > the Setup ThreadGroup, but do not appear to be visible to the main > ThreadGroup that follows. Am I doing something wrong or is this a limitation > of JMeter? If a limitation of JMeter, is there some other way to set the > value of a throughput controller at runtime based on values calculated during > the Setup ThreadGroup?
Properties are global to the whole JVM. So if the property is correctly set, it can be read anywhere else. Try adding a Debug Sampler to show the values of the properties. > Thanks, > Glenn --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
