You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@jmeter.apache.org by "Friedl, Justin" <JF...@cdgnow.com> on 2005/08/31 19:04:41 UTC

Foreach loops with groups

I have a regular expression that returns three groups:
.*sendRequest\((\d+),(\d+), '(\d+-\d+).*
I then have a foreach controller in which I map input var "inputVar" to
output var "outputVar" with the "add '_' before number" checked.

How can I access variables in a sample controller within the foreach loop?
I've tried:
${outputVar_g1},${outputVar_1},${outputVar1},${outputVarg1},${outputVar_g1_1
},${outputVar_1_g1}
Nothing seems to work.   The result view tree shows the sample is being
called but the params output the literals and don't seem to replace the
variables with values.

I'm using jmeter 2.1 and I see in the changes that "ForEach Controller can
now loop through sets of groups" was fixed in 2.0.3

I'm sure I'm missing something simple.

Thanks in advance,
Justin


Re: Foreach loops with groups

Posted by sebb <se...@gmail.com>.
Try 

ForEach:
Input:    RegexVar_g
Output: outputVar
Add '-':  unchecked

and refer to

${outputVar}

S.
On 31/08/05, Friedl, Justin <JF...@cdgnow.com> wrote:
> I have a regular expression that returns three groups:
> .*sendRequest\((\d+),(\d+), '(\d+-\d+).*
> I then have a foreach controller in which I map input var "inputVar" to
> output var "outputVar" with the "add '_' before number" checked.
> 
> How can I access variables in a sample controller within the foreach loop?
> I've tried:
> ${outputVar_g1},${outputVar_1},${outputVar1},${outputVarg1},${outputVar_g1_1
> },${outputVar_1_g1}
> Nothing seems to work.   The result view tree shows the sample is being
> called but the params output the literals and don't seem to replace the
> variables with values.
> 
> I'm using jmeter 2.1 and I see in the changes that "ForEach Controller can
> now loop through sets of groups" was fixed in 2.0.3
> 
> I'm sure I'm missing something simple.
> 
> Thanks in advance,
> Justin
> 
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-user-help@jakarta.apache.org


RE: Foreach loops with groups

Posted by MA <ma...@gmail.com>.
This was an old post but replying because it might be useful for anyone who
wants to use it.

The easiest way I could get all the variable values in ForEach Controller
with more than one group was

1) Since ForEach needs a regular expression with Match number negative(say
-1)
    eg. the sample html code that needs processing is as below
                  <for label="jmeter">Jmeter</label>
                   <for label="user"> User </label>
----
Use the postprocessor -> regular expression extractor
the var is inputVar
the regular expression is <for label=(.+)>(.+)</label)
Match Number is -1

Loop Controller
   set the loop variable to the number of matches returned by
${inputVar_matchNr}
  Add a pre-processor element counter with start value 1 and increment 1  -
as a child to the loop controller
 Add a ForEach Controller as  a  child to Loop Controller after the counter 
    input variable -  inputVar_{C}_g
    return variable - returnVar
    Add "_" before number - uncheck

 Now ${returnVar} returns jmeter,Jmeter,user,User  all variables in all
groups. 
 ---------------------

            


Friedl, Justin wrote:
> 
> sendRequest appears once for every row in an html table.  I want to
> exercise
> (an HTTP sample) for every link in the table.  Therefore I want to extract
> three values for each call to sendRequest and pass those into an HTTP
> request.
> 
> 
> Docs:
> "By omitting the "_" separator, the ForEach Controller can be used to loop
> through the groups by using the input variable refName_g, and can also
> loop
> through all the groups in all the matches by using an input variable of
> the
> form refName_${C}_g, where C is a counter variable."
> 
> This is confusing to me?  To access group 1 of a variable in a for each
> loop
> what do I do? ${synopticDataOut_${C}_g1}?  A variable inside a variable
> doesn't seem to work.  What is C?  Is that the name of a counter that I
> added as a child of the for each loop?  That doesn't seem to work either.
> Or maybe it's an implicit counter? Also, by omitting the "_" separator the
> for each loop is never entered, (see below).
> 
> 
> I appreciate your help,
> Justin
> 
> 
> 
> -----Original Message-----
> From: sebb [mailto:sebbaz@gmail.com] 
> Sent: Tuesday, September 06, 2005 3:34 PM
> To: JMeter Users List
> Subject: Re: Foreach loops with groups
> 
> 
> On 06/09/05, Friedl, Justin <JF...@cdgnow.com> wrote:
>> Here's what I have:
>> 
>> Regular Expression Extractor
>> 
>> reference name: synopticDataIn
>> Regex: .*sendRequest\((\d+),(\d+), '(\d+-\d+).*
> 
> You probably don't need .* before and after.
> 
>> template: $1$
>> Match No.: -1
> 
> Do you really want all matches?
> How many times does sendRequest appear?
> 
>> Default Value: fout
>> 
>> ForEach controller
>> Input variable prefix: synopticDataIn
>> Output variable name: synopticDataOut
>> Add "_" before number: checked
>> 
>> then looking at the request tab in the view Results Tree the 
>> parameters
>> become:
>> ${synopticDataIn_1_g1} becomes 11479239
>> ${synopticDataIn_1_g2} becomes 1529
> 
> OK.
> 
>> ${synopticDataOut_g1} becomes ${synopticDataOut_g1}
> 
> ForEach only sets _one_ variable, i.e. ${synopticDataOut}
> 
>> ${synopticDataOut} becomes 11479239
> 
> ForEach sets ${synopticDataOut} to ${synopticDataIn_1},
> ${synopticDataIn_2},
> etc. These are the values of $1$ for each match. Is this what you wanted?
> 
> From the doc:
> 
> "By omitting the "_" separator, the ForEach Controller can be used to loop
> through the groups by using the input variable refName_g, and can also
> loop
> through all the groups in all the matches by using an input variable of
> the
> form refName_${C}_g, where C is a counter variable."
> 
> These are wrong - ForEach only sets ${synopticDataOut} 
>> ${synopticDataOut_1_g1} becomes ${synopticDataOut_1_g1} 
>> ${synopticDataOut_g1} becomes ${synopticDataOut_g1}
> 
>> 
>> if I switch the template to $0$
>> ${synopticDataOut} becomes  # 
>> onClick="processLoading(parent.parent.searchResults);
>> sendRequest(11479239,1529, '21-00'); 
>> parent.parent.swapFrame('searchResults');">
>> ${synopticDataIn_1_g1} becomes 11479239 ${synopticDataIn_1_g2} becomes 
>> 1529
>> 
>> I cannot figure out the proper syntax.  I thought 
>> ${synopticDataOut_g1} should work.  Any ideas? Examples?
> 
> No, it won't work.
> 
> See above and the documentation for RegexExtractor and ForEach.
> 
>> 
>> Thanks in advance,
>> Justin
>> 
>> 
>> 
>> -----Original Message-----
>> From: sebb [mailto:sebbaz@gmail.com]
>> Sent: Wednesday, August 31, 2005 4:09 PM
>> To: JMeter Users List
>> Subject: Re: Foreach loops with groups
>> 
>> 
>> Yes, the foreach loop won't start if the first variable is missing.
>> 
>> What do your Regex and ForEach test elements look like now?
>> 
>> S.
>> On 31/08/05, Friedl, Justin <JF...@cdgnow.com> wrote:
>> > Thanks. I tried this.  Now it won't even go into the foreach loop. 
>> > My guess is it's because the foreach input var doesn't match the 
>> > regex reference name.
>> >
>> >
>> >
>> >
>> >
>> > -----Original Message-----
>> > From: sebb [mailto:sebbaz@gmail.com]
>> > Sent: Wednesday, August 31, 2005 10:21 AM
>> > To: JMeter Users List
>> > Subject: Re: Foreach loops with groups
>> >
>> >
>> > Try
>> >
>> > ForEach:
>> > Input:    RegexVar_g
>> > Output: outputVar
>> > Add '-':  unchecked
>> >
>> > and refer to
>> >
>> > ${outputVar}
>> >
>> > S.
>> > On 31/08/05, Friedl, Justin <JF...@cdgnow.com> wrote:
>> > > I have a regular expression that returns three groups: 
>> > > .*sendRequest\((\d+),(\d+), '(\d+-\d+).* I then have a foreach 
>> > > controller in which I map input var "inputVar" to output var 
>> > > "outputVar" with the "add '_' before number" checked.
>> > >
>> > > How can I access variables in a sample controller within the 
>> > > foreach loop? I've tried: 
>> > > ${outputVar_g1},${outputVar_1},${outputVar1},${outputVarg1},${outp
>> > > ut
>> > > Va
>> > > r_g1_1
>> > > },${outputVar_1_g1}
>> > > Nothing seems to work.   The result view tree shows the sample is
> being
>> > > called but the params output the literals and don't seem to replace
> the
>> > > variables with values.
>> > >
>> > > I'm using jmeter 2.1 and I see in the changes that "ForEach 
>> > > Controller can now loop through sets of groups" was fixed in 2.0.3
>> > >
>> > > I'm sure I'm missing something simple.
>> > >
>> > > Thanks in advance,
>> > > Justin
>> > >
>> > >
>> > >
>> >
>> > --------------------------------------------------------------------
>> > -
>> > To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
>> > For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
>> >
>> >
>> >
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
>> 
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Foreach-loops-with-groups-tp753804p14937769.html
Sent from the JMeter - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-user-help@jakarta.apache.org