Lokesh Singh
Lokesh Singh

Reputation: 33

Random String using while loop in Jmeter

Trying to generate random string using while loop, however, it generate the same number each time the loop iterates. Is there any other way to generate random string using while loop?

Code:

int x=0;
while(x<10){
log.info("generated-------${__RandomString(6,1234567890,)}---");
x++;
}

Response in logs:
INFO  - jmeter.util.BeanShellTestElement: generated-------908410--- 
INFO  - jmeter.util.BeanShellTestElement: generated-------908410--- 
INFO  - jmeter.util.BeanShellTestElement: generated-------908410--- 
INFO  - jmeter.util.BeanShellTestElement: generated-------908410--- 
INFO  - jmeter.util.BeanShellTestElement: generated-------908410--- 
INFO  - jmeter.util.BeanShellTestElement: generated-------908410--- 
INFO  - jmeter.util.BeanShellTestElement: generated-------908410--- 
INFO  - jmeter.util.BeanShellTestElement: generated-------908410--- 
INFO  - jmeter.util.BeanShellTestElement: generated-------908410--- 
INFO  - jmeter.util.BeanShellTestElement: generated-------908410--- 

Upvotes: 1

Views: 5991

Answers (2)

Lokesh Singh
Lokesh Singh

Reputation: 33

    String y;
    String extcode1;

    log.info("------------connecting---------");

    public class GenerateRandomString {

     public static final String DATA = "ABCDEFGHIJKLMNOabcdefghijklmno1234567890";
     public static Random RANDOM = new Random();

     public static String randomString(int len) {
       StringBuilder sb = new StringBuilder(len);

       for (int i = 0; i < len; i++) {
         sb.append(DATA.charAt(RANDOM.nextInt(DATA.length())));
       }
      y =sb.toString();

       log.info(""+y);
       return sb.toString(); 

     }

    }
    int i=0;
    while(i<10){

    extcode1=GenerateRandomString.randomString(6);

    i++;
    }




OUTPUT:
=========
2017/03/06 11:59:26 INFO  - jmeter.util.BeanShellTestElement: 7BHc2d 
2017/03/06 11:59:26 INFO  - jmeter.util.BeanShellTestElement: IDo7oN 
2017/03/06 11:59:26 INFO  - jmeter.util.BeanShellTestElement: Gj3mgK 
2017/03/06 11:59:26 INFO  - jmeter.util.BeanShellTestElement: iFcDOi 
2017/03/06 11:59:26 INFO  - jmeter.util.BeanShellTestElement: ka3gEO 
2017/03/06 11:59:26 INFO  - jmeter.util.BeanShellTestElement: KMC9En 
2017/03/06 11:59:26 INFO  - jmeter.util.BeanShellTestElement: lFocjE 
2017/03/06 11:59:26 INFO  - jmeter.util.BeanShellTestElement: 4kK2dj 
2017/03/06 11:59:26 INFO  - jmeter.util.BeanShellTestElement: I3c9an 
2017/03/06 11:59:26 INFO  - jmeter.util.BeanShellTestElement: HDAG7k 

Upvotes: 2

Dmitri T
Dmitri T

Reputation: 168132

  1. I would not recommend inlining functions into scripts, you may run into an unexpected behaviour, it is better to use "Parameters" section instead
  2. __RandomString() function doesn't seem to be designed to support your use case
  3. It is better to use JSR223 Test Elements and Groovy language rather than Beanshell, this way you will get more performance, more Java compatibility and more language features. Here is an example Groovy code:

    import org.apache.commons.lang.RandomStringUtils;
    
    1.upto(10, {
       log.info(RandomStringUtils.randomNumeric(6))
    })
    

    Groovy random string JMeter

See Groovy Is the New Black article for more information and examples

Upvotes: 2

Related Questions