On 09/02/2010, Alexander Fisher <[email protected]> wrote:
> On 8 February 2010 15:01, sebb <[email protected]> wrote:
>  > On 04/02/2010, Alexander Fisher <[email protected]> wrote:
>  >> On 4 February 2010 22:07, sebb <[email protected]> wrote:
>  >>  > On 04/02/2010, Alexander Fisher <[email protected]> wrote:
>  >>  >> On 4 February 2010 16:29, sebb <[email protected]> wrote:
>  >>  >>  > On 04/02/2010, Alexander Fisher <[email protected]> wrote:
>  >>  >>  >> Hi
>  >>  >>  >>
>  >>  >>  >>  I'm trying to test a wicket application using JMeter.
>  >>  >>  >>
>  >>  >>  >>  JMeter doesn't seem to be following certain redirects in the 
> same way
>  >>  >>  >>  browsers do. Specifically, I was testing logging out of the
>  >>  >>  >>  application.
>  >>  >>  >>
>  >>  >>  >>  The wicket code for this looks a bit like.
>  >>  >>  >>
>  >>  >>  >>  public class SignOutLink extends Link {
>  >>  >>  >>  -SNIP-
>  >>  >>  >>   @Override
>  >>  >>  >>    public final void onClick() {
>  >>  >>  >>        WicketAppSession.get().invalidate();
>  >>  >>  >>        getRequestCycle().setRedirect(true);
>  >>  >>  >>        setResponsePage(SignInPage.class);
>  >>  >>  >>    }
>  >>  >>  >>  }
>  >>  >>  >>
>  >>  >>  >>  The logout link is to a wicket encrypted URL which then 
> redirects to ./
>  >>  >>  >>
>  >>  >>  >>  If I get a redirect to http://host/wicket-app/./ I get either a 
> 404 or
>  >>  >>  >>  a web server directory listing (if listings are enabled).
>  >>  >>  >>  Entering the same URL into firefox I get the application's sign 
> in
>  >>  >>  >>  page (http://host/wicket-app/) as expected.
>  >>  >>  >>
>  >>  >>  >>  Is this a known issue, or something I can work around?
>  >>  >>  >
>  >>  >>  > What redirect options are you using?
>  >>  >>  >
>  >>  >>  > If you are using redirect automatically, then JMeter does not see 
> any
>  >>  >>  > redirects, and thus won't be able to process any cookies that 
> might be
>  >>  >>  > set during the process.
>  >>  >>  > This is documented here:
>  >>  >>  >
>  >>  >>  > 
> http://jakarta.apache.org/jmeter/usermanual/component_reference.html#HTTP_Request
>  >>  >>  >
>  >>  >>  > Try "Follow redirects"; if that fails, you will have to add the 
> URLs manually.
>  >>  >>
>  >>  >>
>  >>  >> I've tried both 'follow redirects' and 'redirect automatically'.
>  >>  >>  I think it's just that the url returned in the 302 returns a 
> different
>  >>  >>  result when fetched using firefox, compared to JMeter.
>  >>  >>
>  >>  >>  Could it be that firefox automatically removes all dot-slashes
>  >>  >>  ('./''s) from URLs before forming the request?
>  >>  >>  Should JMeter mimic this behaviour?
>  >>  >
>  >>  > No idea.
>  >>  >
>  >>  > Please provide more details of what you expected to happen and what
>  >>  > actually happened.
>  >>
>  >>
>  >> Firstly, thank you for taking the time to help me.
>  >>  Whilst writing this rather long winded post (concise emails not a
>  >>  forte!), I think I've found the answer.
>  >>  Somebody searching the archives might benefit, so I'll continue :)
>  >>
>  >>  I was trying to login to a wicket based webapp and then signout again.
>  >>  It's my first use of JMeter, so I thought I'd start with this really
>  >>  simple testcase.
>  >>  The webapp uses wicket, so things are made a bit more complicated by
>  >>  the dynamically generated urls,
>  >>  but I think I've got that figured out using the regex extractor feature.
>  >>
>  >>  These are the rough steps.
>  >>
>  >>  1. Navigate to website. Assert that I'm actually there. Use the regex
>  >>  extractor to find the URL for the sign in form.
>  >>  2. Sign in, run another assertion then perform another regex extract
>  >>  to get the sign out link url.
>  >>  3. 'Click' signout link with url extracted from previous step and
>  >>  assert that I'm back on the sign in page.
>  >>
>  >>  Everything works as expected when using a browser, but when using
>  >>  jmeter the sign out 'click' lands on a 404 page.
>  >>
>  >>  The sign out link is to a URL such as
>  >>  
> "?x=YwbAGQPpvT9MHF2-6S6FwvocqYPuA0B8WNUAt2TlZ9pH*NSINgi53u5hmLOyTe6xOBKzTV*kN0M",
>  >>  wicket invalidates the session then returns a 302 with the new url set
>  >>  to "./"
>  >>
>  >>  JMeter doesn't handle the "./" in the same way firefox does.
>  >>  However, it turns out that it's not just JMeter.
>  >>
>  >>  http://issues.apache.org/jira/browse/WICKET-2600
>  >>
>  >
>  > The Wicket fix is wrong - Location URLs are supposed to be absolute:
>  >
>  > http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30
>  >
>  > I've raised WICKET-2728.
>  >
>  > However many sites incorrectly return relative URLs for redirections
>  > within the site, so many browsers allow for this broken behaviour.
>  >
>  > JMeter also assumes that Location: references can be relative, and
>  > uses java.net.URL(URL urlBase, String spec) to convert them, so I
>  > don't know why you are seeing a difference from the browser.
>  >
>  > Note that you can specify URLs ending in "." or "./" in the HTTP
>  > samplers in which case the URL is not converted - only redirects are
>  > converted.
>
>
> I don't think the location is being converted, hence the 404.
>  The Location in the 302 is of the form ...
>
>  Location: http://host/wicket-app/.  (this is with the WICKET-2600
>  'fix' which doesn't fix the issue for me)

Yuk!

>  and my apache, (apache is being used as a loadbalancer for glassfish),
>  access logs show the URL having not been converted.
>
>  192.168.24.2 - - [09/Feb/2010:10:06:39 +0000] "GET
>  /wicket-app/?x=ALxUK81PW-4dxeAVOUmqAxDJ2H8DvDqhJxpmT1dW0*7TF1ApuMic6w
>  HTTP/1.1" 302 - "-" "Jakarta Commons-HttpClient/3.1"
>  192.168.24.2 - - [09/Feb/2010:10:06:39 +0000] "GET /wicket-app/.
>  HTTP/1.1" 404 1022 "-" "Jakarta Commons-HttpClient/3.1"
>
>  My guess is that the problem is that wicket isn't returning a relative
>  URL, but an absolute URL with relative bits in (if that makes any
>  sense).

Yes, that now makes sense - unlike the Wicket fix!

JMeter will only convert relative URLs if they really are relative. It
doesn't fix up absolute URLs, unlike some browsers (and some servers).

I suggest you re-open the Wicket bug (or open a new one) and quote the
broken Location: response to them.

>  Kind Regards,
>  Alex
>
>  ---------------------------------------------------------------------
>  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]

Reply via email to