You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2018/07/19 19:17:36 UTC
svn commit: r1836293 - in /jmeter/trunk:
src/components/org/apache/jmeter/config/RandomVariableConfig.java
xdocs/changes.xml xdocs/usermanual/component_reference.xml
Author: pmouawad
Date: Thu Jul 19 19:17:36 2018
New Revision: 1836293
URL: http://svn.apache.org/viewvc?rev=1836293&view=rev
Log:
Bug 62553 - Random element might return same value even if property "Per thread user (User)" is set to TRUE
Bugzilla Id: 62553
Modified:
jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java
jmeter/trunk/xdocs/changes.xml
jmeter/trunk/xdocs/usermanual/component_reference.xml
Modified: jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java?rev=1836293&r1=1836292&r2=1836293&view=diff
==============================================================================
--- jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java (original)
+++ jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java Thu Jul 19 19:17:36 2018
@@ -72,7 +72,7 @@ public class RandomVariableConfig extend
@Override
protected Random initialValue() {
init();
- return new Random(getRandomSeedAsLong());
+ return createRandom();
}};
}
@@ -113,7 +113,7 @@ public class RandomVariableConfig extend
synchronized(this){
if (globalRandom == null){
init();
- globalRandom = new Random(getRandomSeedAsLong());
+ globalRandom = createRandom();
}
randGen=globalRandom;
}
@@ -189,20 +189,27 @@ public class RandomVariableConfig extend
public synchronized String getRandomSeed() {
return randomSeed;
}
+
+ private Random createRandom() {
+ if (randomSeed.length()>0){
+ Long seed = getRandomSeedAsLong();
+ if(seed != null) {
+ return new Random(seed.longValue());
+ }
+ }
+ return new Random();
+ }
/**
* @return the randomSeed as a long
*/
- private synchronized long getRandomSeedAsLong() {
- long seed;
- if (randomSeed.length()==0){
- seed = System.currentTimeMillis();
- } else {
- try {
- seed = Long.parseLong(randomSeed);
- } catch (NumberFormatException e) {
- seed = System.currentTimeMillis();
- log.warn("Cannot parse random seed: '{}'", randomSeed);
+ private synchronized Long getRandomSeedAsLong() {
+ Long seed = null;
+ try {
+ seed = Long.parseLong(randomSeed);
+ } catch (NumberFormatException e) {
+ if(log.isWarnEnabled()) {
+ log.warn("Cannot parse random seed: '{}' in element {}", randomSeed, getName());
}
}
return seed;
Modified: jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1836293&r1=1836292&r2=1836293&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml [utf-8] (original)
+++ jmeter/trunk/xdocs/changes.xml [utf-8] Thu Jul 19 19:17:36 2018
@@ -227,6 +227,7 @@ this behaviour, set <code>httpclient.res
<li><bug>61664</bug>HTTP Authorization Manager : Digest works only with legacy <rfc link="2069" />, <rfc link="2617" /> is not implemented. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
<li><bug>62252</bug>HTTP header merging logic does not correspond to the documentation</li>
<li><bug>62554</bug>BoundaryExtractor : Field to check is not reset</li>
+ <li><bug>62553</bug>Random element might return same value even if property "Per thread user (User)" is set to TRUE</li>
</ul>
<h3>Functions</h3>
Modified: jmeter/trunk/xdocs/usermanual/component_reference.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=1836293&r1=1836292&r2=1836293&view=diff
==============================================================================
--- jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
+++ jmeter/trunk/xdocs/usermanual/component_reference.xml Thu Jul 19 19:17:36 2018
@@ -4216,9 +4216,10 @@ to use a variable other than a property
If not specified, the default is to generate the number using <code>Long.toString()</code></property>
<property name="Minimum Value" required="Yes">The minimum value (<code>long</code>) of the generated random number.</property>
<property name="Maximum Value" required="Yes">The maximum value (<code>long</code>) of the generated random number.</property>
- <property name="Random Seed" required="No">The seed for the random number generator. Default is the current time in milliseconds.
+ <property name="Random Seed" required="No">The seed for the random number generator.
If you use the same seed value with Per Thread set to <code>true</code>, you will get the same value for each Thread as per
<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Random.html" >Random</a> class.
+ If no see is set, Default constructor of Random will be used.
</property>
<property name="Per Thread(User)?" required="Yes">If <code>False</code>, the generator is shared between all threads in the thread group.
If <code>True</code>, then each thread has its own random generator.</property>
Re: svn commit: r1836293 - in /jmeter/trunk:
src/components/org/apache/jmeter/config/RandomVariableConfig.java
xdocs/changes.xml xdocs/usermanual/component_reference.xml
Posted by Felix Schumacher <fe...@internetallee.de>.
One minor point almost at the end.
Am 19.07.2018 um 21:17 schrieb pmouawad@apache.org:
> Author: pmouawad
> Date: Thu Jul 19 19:17:36 2018
> New Revision: 1836293
>
> URL: http://svn.apache.org/viewvc?rev=1836293&view=rev
> Log:
> Bug 62553 - Random element might return same value even if property "Per thread user (User)" is set to TRUE
> Bugzilla Id: 62553
>
> Modified:
> jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java
> jmeter/trunk/xdocs/changes.xml
> jmeter/trunk/xdocs/usermanual/component_reference.xml
>
> Modified: jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java
> URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java?rev=1836293&r1=1836292&r2=1836293&view=diff
> ==============================================================================
> --- jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java (original)
> +++ jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java Thu Jul 19 19:17:36 2018
> @@ -72,7 +72,7 @@ public class RandomVariableConfig extend
> @Override
> protected Random initialValue() {
> init();
> - return new Random(getRandomSeedAsLong());
> + return createRandom();
> }};
> }
>
> @@ -113,7 +113,7 @@ public class RandomVariableConfig extend
> synchronized(this){
> if (globalRandom == null){
> init();
> - globalRandom = new Random(getRandomSeedAsLong());
> + globalRandom = createRandom();
> }
> randGen=globalRandom;
> }
> @@ -189,20 +189,27 @@ public class RandomVariableConfig extend
> public synchronized String getRandomSeed() {
> return randomSeed;
> }
> +
> + private Random createRandom() {
> + if (randomSeed.length()>0){
> + Long seed = getRandomSeedAsLong();
> + if(seed != null) {
> + return new Random(seed.longValue());
> + }
> + }
> + return new Random();
> + }
>
> /**
> * @return the randomSeed as a long
> */
> - private synchronized long getRandomSeedAsLong() {
> - long seed;
> - if (randomSeed.length()==0){
> - seed = System.currentTimeMillis();
> - } else {
> - try {
> - seed = Long.parseLong(randomSeed);
> - } catch (NumberFormatException e) {
> - seed = System.currentTimeMillis();
> - log.warn("Cannot parse random seed: '{}'", randomSeed);
> + private synchronized Long getRandomSeedAsLong() {
> + Long seed = null;
> + try {
> + seed = Long.parseLong(randomSeed);
> + } catch (NumberFormatException e) {
> + if(log.isWarnEnabled()) {
> + log.warn("Cannot parse random seed: '{}' in element {}", randomSeed, getName());
> }
> }
> return seed;
>
> Modified: jmeter/trunk/xdocs/changes.xml
> URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1836293&r1=1836292&r2=1836293&view=diff
> ==============================================================================
> --- jmeter/trunk/xdocs/changes.xml [utf-8] (original)
> +++ jmeter/trunk/xdocs/changes.xml [utf-8] Thu Jul 19 19:17:36 2018
> @@ -227,6 +227,7 @@ this behaviour, set <code>httpclient.res
> <li><bug>61664</bug>HTTP Authorization Manager : Digest works only with legacy <rfc link="2069" />, <rfc link="2617" /> is not implemented. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
> <li><bug>62252</bug>HTTP header merging logic does not correspond to the documentation</li>
> <li><bug>62554</bug>BoundaryExtractor : Field to check is not reset</li>
> + <li><bug>62553</bug>Random element might return same value even if property "Per thread user (User)" is set to TRUE</li>
> </ul>
>
> <h3>Functions</h3>
>
> Modified: jmeter/trunk/xdocs/usermanual/component_reference.xml
> URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=1836293&r1=1836292&r2=1836293&view=diff
> ==============================================================================
> --- jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
> +++ jmeter/trunk/xdocs/usermanual/component_reference.xml Thu Jul 19 19:17:36 2018
> @@ -4216,9 +4216,10 @@ to use a variable other than a property
> If not specified, the default is to generate the number using <code>Long.toString()</code></property>
> <property name="Minimum Value" required="Yes">The minimum value (<code>long</code>) of the generated random number.</property>
> <property name="Maximum Value" required="Yes">The maximum value (<code>long</code>) of the generated random number.</property>
> - <property name="Random Seed" required="No">The seed for the random number generator. Default is the current time in milliseconds.
> + <property name="Random Seed" required="No">The seed for the random number generator.
> If you use the same seed value with Per Thread set to <code>true</code>, you will get the same value for each Thread as per
> <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Random.html" >Random</a> class.
> + If no see is set, Default constructor of Random will be used.
Seems like a 'd' is missing :)
Felix
> </property>
> <property name="Per Thread(User)?" required="Yes">If <code>False</code>, the generator is shared between all threads in the thread group.
> If <code>True</code>, then each thread has its own random generator.</property>
>
>