-----Original Message-----
From: sebb [mailto:[email protected]] 
Sent: Thursday, June 25, 2009 2:08 PM
To: JMeter Users List
Subject: Re: ForEach and BeanShell question

On 25/06/2009, Stromas, Aaron (NIH/OD) [C] <[email protected]> wrote:
> Greetings!
>
>  I have a test plan that uses a RE Extractor to convert the values of the 
> HTML select element to the input values of the ForEach controller. These 
> values are of the form X,M,N~Y,A,B~...~Z,C,D, and I can see from the log that 
> they are properly generated. The reference name for these values is tuple. 
> The ForEach controller Input variable prefix is tuple, and the Output 
> variable name is threetuple.
>
>  I am emulating Javascript which breaks up the value of selected option and 
> submits an HTTP request with the values of each of thre-tuple as parameter. 
> To that end, I have another ForEach controller as a child of the first one 
> with the BeanShell preprocessor:
>
>  String[] tuples = vars.get("threetuple_1").split("~");
>
>  List list = new ArrayList();
>
>  for (int i = 0; i < tuples.length; i++) {
>     list.add(tuples[i].split(","));
>  }
>
>  vars.put("params", list);
>
>  The inner ForEach controller has a HTTP Request sampler with a BeanShell 
> preprocessor whose job is to break up the three-tuple into individual 
> parameters.
>
>  In short, no HTTP sampler ever executes, and the log shows that the inner 
> ForEach controller receives null input.
>
>  I can see in the log, what I presume to be invocation of the outer ForEach:
>
>  ... jmeter.control.ForEach resultstring isDone=SAR,713,0~RCC,988,343...
>
>
>  and the inner ForEach:
>
>  ... jmeter.control.ForeachController: No entries found - null first entry: 
> params_1
>
>  The questions are: is there any way of knowing why the BeanShell 
> preprocessor did not execute?
>
>  Once that problem resolved, I need to tackle the business of the ForEach 
> output variable which gets loop index appended to it, so how can the 
> BeanShell "know" which variable to use?
>
>  Any suggestions?

The ForEach Controller needs multiple variables, not a list:

http://jakarta.apache.org/jmeter/usermanual/component_reference.html#ForEach_Controller


It still isn't working for me. This is the schematic of my test:

ForEach controller 
   Input var prefix: tuple
   Output var name: threetuple
   |
   |
   ForEach controller
      Input var prefix: params
      Output var prefix: reqparams
      |
      |
      BeanShell preprocessor
      |   String packed = vars.get("threetuple") 
      |   String[] tuples =packed.split("~");
      |   for (int i = i; i <= tuples.length; i++) {
      |       vars.put("params" + "_" + i, tuples[i-1]);
      |
      |
      HTTP request
      |
      BeanShell preprocessor
           String packed = vars.get("params");
           String[] names = new String[]{"type", "p1", "p2", "p3"};
           for (int i = 0; i < names.length; i++) {
               vars.put(names[i], p[i]);
           }


I have also tried vars.get("threetuple_1") in the first BeanShell. No matter 
what I try, in the log I see "jmeter.control.ForeachController: No entries 
found - null first entry: params_1".
Sorry for badgering, but I must be missing something basic. TIA,

-a
    

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to