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.

The behaviour of sites varies.

e.g. google.co.uk returns 404 for both, whereas www.apache.org returns
the home page.

>  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