On Fri, 2008-11-28 at 13:24 +0000, sebb wrote:
> On 28/11/2008, Hiro Protagonist <[EMAIL PROTECTED]> wrote:
> >
> > On Fri, 2008-11-28 at 12:13 +0000, sebb wrote:
> > > On 28/11/2008, Hiro Protagonist <[EMAIL PROTECTED]> wrote:
> > > > Hi All,
> > > >
> > > > I am currently stuck with the following:
> > > > I have a web application that uses AJAX to display information coming
> > > > from a database in portlets (graphical representation). These portlets
> > > > each trigger a set of SQL queries in a database, and while the
> > database
> > > > is getting the query result, an animated GIF is displayed, and
> > > > Javascript causes the browser to poll every 5 seconds or so, until the
> > > > 'real' information can be displayed, at which point the polls stop.
> > > > This is an isue with JMeter, because as far as JMeter is concerned,
> > the
> > > > request that was sent has been answered, and it moves on to the next
> > > > request.
> > > > However, what I need is essentially a loop that keeps checking what
> > the
> > > > contents of the response is, and repeat the http request until the
> > word
> > > > 'Sarching' does not appear anymore (meaning in received data to be
> > > > displayed in the portlet).
> > > > There are a number of different portlets on each page, identified by a
> > > > unique string in the previous http response, which is used in the
> > > > 'polling request' that is sent back to the server.
> > > > I have managed to get this far:
> > > >
> > > > - set up a regex that extracts the unique ID for each portlet
> > > > - set up a for_each loop that goes through all of these IDs and sends
> > > > requests
> > > > - set up a regex that extracts the response from the polled request
> > > >
> > > > However, the problem I have is that the while loop, which is nested
> > > > inside the for_each loop, never moves on to the second value after the
> > > > first response has finished and found the response.
> > > >
> > > > Here is my test plan:
> > > >
> > > >
> > > > *** (various login and authentication requests)
> > > > |
> > > > @Regex called 'searching' with default value of 'NOTFINISHED'
> > > > |
> > > > *Request to move to page containing portlets (regex 'searching')
> > > > |
> > > > #For Each Controller (iterates all values for request/response above)
> > > > \
> > > > \
> > > > #While controller (loop while regex defaults to 'NOTFINISHED')
> > > > |
> > > > * Request for portlet
> > > > \
> > > > @Regex searching looking for 'searching' in response.
> > > > If not found, default value is NOTFINISHED
> > > >
> > > > Everything works, except that I get stuck in the while loop after the
> > > > first portlet comes back without 'searching' - effectively having
> > found
> > > > the information and it should then set the regex to something else.
> > > > What is wrong with this setup ?
> > >
> > > Difficult to say, as you don't show what the While Condition is.
> >
> >
> > I have set the while condition to:
> > ${__javaScript( ${SEARCHING}=="NOTFINISHED",dummy)}
>
> That is not valid Java script - it should be
>
> ${__javaScript("${SEARCHING}"=="NOTFINISHED",dummy)}
>
> > sebb, also I believe there may be a problem with variable scope here. To
> > enter the loop, the while controller needs the variable SEARCHING to
> > exist before (which it does). The regex attached to the HTTP request
> > inside the while loop re-references this name (SEARCHING), but sets a
> > default value of "FINISHED" if the string was not found. It seems that
> > this setting never actually takes place - I have placed a debug sampler
> > inside the loop and even though the value of SEARCHING is set to
> > 'FINISHED' after the regex term was not found, it keeps looping.
> >
>
> Add a Debug Sampler after the Regex to show the value.
sebb,
This is getting more bizarre by the minute: putting a 'dummy' request
into the while loop solved the issue of the for_each loop not continuing
after the value was found - now for the REALLY interesting part:
when I run the loop, the first time it runs, it includes the
fully-qualified hostname, and all headers that go with the post request.
On the second and all subsequent iterations, it a) drops the
fully-qualified hostname and only uses the machine name, and b) drops
all the headers !!
Here is what it includes on the first request (which gets a 200 OK
return code from the server):
POST
http://mymachine.mydomain.com:7777/analytics/saw.dll?ReloadDashboard&_scid=ZKTyTueGv54
POST data:
InFrameset=false&Caller=Dashboard&Embed=true&PortalPath=%2Fshared%
2FGeneral%2F_portal%2FIT
+Sales&Page=Sales&_scid=ZKTyTueGv54&ViewState=kbggovhl2p4jmsumpm601c6oc2&reloadTargets=d%3Adashboard%7Ep%3Atkgc4svqo71u0ro1%7Er%3Aev5eusng2vkmaa7k&ajaxType=iframe
Cookie Data:
nQuireID=klfj6u905h6au4pl7uumctcq74p1duqojhrscvqzOr07UFe9W00;
OHS-mymachine.mydomain.com-7777=CBA505AC82A141A993C7E0D444C563FDE53A0D7D98DFE8(etc.
etc. etc.)
Here is the second iteration:
POST
http://mymachine:7778/analytics/saw.dll?ReloadDashboard&_scid=ZKTyTueGv54
POST data:
[no cookies]
Surely it should not behave this way ?!
>
> > >
> > > Try adding Debug Sampler(s) and look at the variables in View Results
> > Tree.
> > >
> > > > Should I be using a user-defined variable instead of a regex ?
> > >
> > > I don't understand. The regex output is stored in a variable.
> > >
> > > > Thanks for your help !
> > > > hiro
> > > >
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > >
> > > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]