Search code examples
jmeterbeanshell

Multiple unique random values in a single request in JMeter


I am trying to make an HTTP request in JMeter that contains multiple random numbers within a fixed range (specifically 0-50). With each request, I need to send out about 45 different integers, so on any given request, there are six integers within said range that are not included. Obviously {__Random()} doesn't work, as it will inevitably generate some equal values. My idea, and please bear with me because I am very new to this, was to create an array with the integers, such as:

String line = "0, 1, 2, 3, 4, 5....."; String[] numbers = line.split(",");

and then assign them fixed variable names to include in the request. I can do this with counter with CSV data, but I'm unsure about how to do this with an array.

vars.put("VAR_" + counter, line); VAR_1 = 1 VAR_2 = 2 and so on...

then shuffle the array (which I do not know how to do in Beanshell) and generate something like:

VAR_1 = 16 VAR_2 = 27 ...

to send with the next request.

If anyone could help me with this, or suggest a simpler way, I would great appreciate it. Thanks.


Solution

  • I figured it out. It's kind of ugly and cumbersome, but fairly simple and does exactly what I needed it to do. In JSR223 PreProcessor, my code is

    def list = [0,1,2,3,4,5,.....];
    Collections.shuffle(list);
    String VAR_1 = Integer.toString(list.getAt(0));
    vars.put("VAR_1", VAR_1);
    String VAR_2 = Integer.toString(list.getAt(1));
    vars.put("VAR_2", VAR_2);
    String VAR_3 = Integer.toString(list.getAt(2));
    and so on.....
    

    I had to input the 50 variables manually. I'm sure there was a simpler way, but I'm quite satisfied. Thanks for the suggestions.