---------- Forwarded message ----------
From: praveen <[EMAIL PROTECTED]>
Date: Tue, 23 Nov 2004 18:05:02 -0600
Subject: Re: nesting constants/variables between two groups in template
To: sebb <[EMAIL PROTECTED]>


Thanks for the detailed explanation Kyle. The Match No. I use is "1",
with the expectation that the first match that is found is considered.

But I still get the result of the 1st group, the 3rd group, and only
then, the nested constant at the end like I described earlier. Here's
the structure of my XML

USER PARAMETERS
                          BASE_URL = "/g-control/gocentura.gx/"

HTTP Request
       Regex for editionURL
                          Reference name = editionURL
                          Regular Expression =
(action=")(.*\.gx)(.*changeEdition\/)([^"]+)
                          Template = $3$${EditionID}/$4$
                          Match No. = 1
                          Default Value = null
       Regex for EditionID
                          Reference name = EditionID
                          Regular Expression = (<option
value=")(\d+)("[^>\s]*>\w\w<\/option>)
                          Template = $2$
                          Match No. = 0
                          Default Value = null
If Controller
        "${VAR1}" == "null
                         Invalid HTTP Request  // so that thread stops

If Controller
        "${VAR2}" == "null
                         Invalid HTTP Request  // so that thread stops

HTTP Request
                         PATH = ${BASE_URL}/${editionURL}

The log output for jmeter.extractor.RegexExtractor and
jmeter.protocol.http.sampler.HTTPSampler is below:

2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: Pattern =
[EMAIL PROTECTED]
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: template = $2$
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: template split into 2 pieces, starts
with = true
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: RegexExtractor processing result
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: Regex = (<option
value=")(\d+)("[^>\s]*>\w\w<\/option>)
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: RegexExtractor: Match found!
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: RegexExtractor: Match found!
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: RegexExtractor: Match found!
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: RegexExtractor: Template piece #0 = 2
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: RegexExtractor: Template piece #1 =
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: RegexExtractor: Template piece #2 =
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: Regex Extractor result = 493
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: Pattern =
[EMAIL PROTECTED]
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: template = $3$493$4$
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: template split into 3 pieces, starts
with = true
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: RegexExtractor processing result
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: Regex =
(action=")(.*\.gx)(.*changeEdition\/)([^"]+)
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: RegexExtractor: Match found!
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: RegexExtractor: Template piece #0 = 3
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: RegexExtractor: Template piece #1 =
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: RegexExtractor: Template piece #2 = 4
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: RegexExtractor: Template piece #3 =
493
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: RegexExtractor: Template piece #4 =
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.extractor.RegexExtractor: Regex Extractor result =
/5133460/3542940/4719119/468/1101253233790/loot/C/changeEdition/loot493/
   <=====
2004/11/23 17:40:51 [GUO Thread Group1-1] DEBUG -
jmeter.protocol.http.sampler.HTTPSampler: Start :
samplehttp://loot:8080/g-control/gocentura.gx/5133460/3542940/4719119/468/1101253233790/loot/C/changeEdition/loot493/

There are a couple of observations that I made while fiddling around
with the logic here:

1. Under a HTTP request, consecutive regex elements are processed
bottom-top. So, in the structure above, although the regex element for
EditionID is below editionURL, EditionID is executed first. If I have
EditionID regex before the editionURL regex, when i execute the test
plan, jmeter does the editionURL regex first,  since EditionID is not
defined/declared yet, the literal "${EditionID}" is substituted in the
template.

2. In the regex for editionURL, the template is $3$${EditionID}$4$.

      $3$ has been evaluated to
"5133460/3542940/4719119/468/1101253233790/loot/C/changeEdition/"
       ${EditionID} = 493
      $4$ has been evaluated to "loot"

   But ${editionURL} ends up being:
/5133460/3542940/4719119/468/1101253233790/loot/C/changeEdition/loot493/

3. I also find that if the variable name (eg. variable_name) contains
an underscore, ${variable_name_g1} is not resolved to the variable
value (in the PATH field of a HTTP request. Not sure about the rest of
the places.)




On Tue, 23 Nov 2004 19:56:15 +0000, sebb <[EMAIL PROTECTED]> wrote:
> On Tue, 23 Nov 2004 14:28:59 -0500, Kyle McAbee <[EMAIL PROTECTED]> wrote:
> [...]
>
> > Might a "How can I trouble-shoot a regular expression in JMeter?" topic be 
> > a useful addition to the FAQ?
> >
>
> Yes, please!
>
> Anyone can update the FAQ.
>
> You just need to create an account first if necessary and login - see
> the JMeter Wiki front page for details. [Registration was introduced
> to reduce vandalism - and succeeded!]
>
> The information could be added to:
>
> http://wiki.apache.org/jakarta-jmeter/RegularExpressions
>
> either inline, or as a separate page linked to the above if that works better.
>
> S.
>


--
                                     k.p.


-- 
                                     k.p.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to