You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by JE...@thoughtworks.com on 2002/08/15 21:07:13 UTC
Testing session time-out behaviour
Hi,
I have a web app with some specific requirements for session timeout. I
would like to write automated acceptance tests to verify these
requirements, and am faced with some options:
- set web.xml to time-out in 1 minute, have my tests wait for just over a
minute to force time-out
- talk to my server (tomcat during testing) from the test client code
(junit tests using httpunit) to somehow request it to time out
- execute the shutdown / startup commands from the client code (session
information for tomcat 4.0 goes away when i do this). I have a small app,
so startup shutdown are both relatively quick (seconds).
Waiting a minute is a pain, because I have to change web.xml and reset it,
also because I have a lot of screens and behaviours to test (hence the
desire to automate), so even setting down to a minute I expect it would
take my automated test suite from what is now about 5 minutes to run to
about 30 minutes.
As far as communicating with tomcat goes, I tried doing a get on the
manager urls to reload the app, also to stop followed by start - but this
does not appear to cause it to lose the session information.
As far as executing startup / shutdown batch files, the rub is waiting on
the shutdown and startup to complete before proceeding with the test. It
is proving to be extremely tricky to do.
So, from a java test client, is there a supported and relatively easy way
for me to get tomcat to drop a session in the middle of a test?
Suggestions?
j
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: Testing session time-out behaviour
Posted by Ben Walding <be...@walding.com>.
Although it isn't session timeout specifically, couldn't you just
invalidate (invalidate() method on session object) the session by going
to a specific url - eg servlet
Would that emulate the behaviour you are trying to achieve?
Craig R. McClanahan wrote:
>On Thu, 15 Aug 2002 JEWeaver@thoughtworks.com wrote:
>
>
>
>>Date: Thu, 15 Aug 2002 14:07:13 -0500
>>From: JEWeaver@thoughtworks.com
>>Reply-To: Tomcat Users List <to...@jakarta.apache.org>
>>To: Tomcat Users List <to...@jakarta.apache.org>
>>Subject: Testing session time-out behaviour
>>
>>
>>Hi,
>>
>>I have a web app with some specific requirements for session timeout. I
>>would like to write automated acceptance tests to verify these
>>requirements, and am faced with some options:
>>
>>- set web.xml to time-out in 1 minute, have my tests wait for just over a
>>minute to force time-out
>>- talk to my server (tomcat during testing) from the test client code
>>(junit tests using httpunit) to somehow request it to time out
>>- execute the shutdown / startup commands from the client code (session
>>information for tomcat 4.0 goes away when i do this). I have a small app,
>>so startup shutdown are both relatively quick (seconds).
>>
>>
>
>Waiting "just over a minute" is not guaranteed to work the way you think.
>The reason for this is that session timeouts are performed in a background
>thread that only runs periodically (typically every 15 seconds).
>
>
>
>>Waiting a minute is a pain, because I have to change web.xml and reset it,
>>also because I have a lot of screens and behaviours to test (hence the
>>desire to automate), so even setting down to a minute I expect it would
>>take my automated test suite from what is now about 5 minutes to run to
>>about 30 minutes.
>>
>>
>>
>
>One thing to consider is that you can call
>session.setMaxInactiveInterval() on a session instance itself, at a
>granularity of seconds. You still need to deal with the 15 second time
>though (unless you want to just simulate a timeout by forcibly
>invalidating a session) -- you could add a special URL to your webapp to
>do this in a test environment.
>
>
>
>>As far as communicating with tomcat goes, I tried doing a get on the
>>manager urls to reload the app, also to stop followed by start - but this
>>does not appear to cause it to lose the session information.
>>
>>
>>
>
>That's true ... Tomcat saves and reloads sessions across a restart.
>
>
>
>>As far as executing startup / shutdown batch files, the rub is waiting on
>>the shutdown and startup to complete before proceeding with the test. It
>>is proving to be extremely tricky to do.
>>
>>
>>
>
>You can forcibly eliminate any sessions saved by the previous shutdown by
>deleting the "SESSIONS.ser" file in the work directory for your webapp.
>
>
>
>>So, from a java test client, is there a supported and relatively easy way
>>for me to get tomcat to drop a session in the middle of a test?
>>Suggestions?
>>
>>j
>>
>>
>
>Craig
>
>
>--
>To unsubscribe, e-mail: <ma...@jakarta.apache.org>
>For additional commands, e-mail: <ma...@jakarta.apache.org>
>
>
>
>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: Testing session time-out behaviour
Posted by "Craig R. McClanahan" <cr...@apache.org>.
On Thu, 15 Aug 2002 JEWeaver@thoughtworks.com wrote:
> Date: Thu, 15 Aug 2002 14:07:13 -0500
> From: JEWeaver@thoughtworks.com
> Reply-To: Tomcat Users List <to...@jakarta.apache.org>
> To: Tomcat Users List <to...@jakarta.apache.org>
> Subject: Testing session time-out behaviour
>
>
> Hi,
>
> I have a web app with some specific requirements for session timeout. I
> would like to write automated acceptance tests to verify these
> requirements, and am faced with some options:
>
> - set web.xml to time-out in 1 minute, have my tests wait for just over a
> minute to force time-out
> - talk to my server (tomcat during testing) from the test client code
> (junit tests using httpunit) to somehow request it to time out
> - execute the shutdown / startup commands from the client code (session
> information for tomcat 4.0 goes away when i do this). I have a small app,
> so startup shutdown are both relatively quick (seconds).
Waiting "just over a minute" is not guaranteed to work the way you think.
The reason for this is that session timeouts are performed in a background
thread that only runs periodically (typically every 15 seconds).
>
> Waiting a minute is a pain, because I have to change web.xml and reset it,
> also because I have a lot of screens and behaviours to test (hence the
> desire to automate), so even setting down to a minute I expect it would
> take my automated test suite from what is now about 5 minutes to run to
> about 30 minutes.
>
One thing to consider is that you can call
session.setMaxInactiveInterval() on a session instance itself, at a
granularity of seconds. You still need to deal with the 15 second time
though (unless you want to just simulate a timeout by forcibly
invalidating a session) -- you could add a special URL to your webapp to
do this in a test environment.
> As far as communicating with tomcat goes, I tried doing a get on the
> manager urls to reload the app, also to stop followed by start - but this
> does not appear to cause it to lose the session information.
>
That's true ... Tomcat saves and reloads sessions across a restart.
> As far as executing startup / shutdown batch files, the rub is waiting on
> the shutdown and startup to complete before proceeding with the test. It
> is proving to be extremely tricky to do.
>
You can forcibly eliminate any sessions saved by the previous shutdown by
deleting the "SESSIONS.ser" file in the work directory for your webapp.
> So, from a java test client, is there a supported and relatively easy way
> for me to get tomcat to drop a session in the middle of a test?
> Suggestions?
>
> j
Craig
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>