KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > codehaus > spice > netserve > connection > handlers > ThreadPerRequestHandlerTestCase


1 /*
2  * Copyright (C) The Spice Group. All rights reserved.
3  *
4  * This software is published under the terms of the Spice
5  * Software License version 1.1, a copy of which has been included
6  * with this distribution in the LICENSE.txt file.
7  */

8 package org.codehaus.spice.netserve.connection.handlers;
9
10 import junit.framework.TestCase;
11 import com.mockobjects.dynamic.Mock;
12 import com.mockobjects.dynamic.C;
13 import org.codehaus.spice.netserve.connection.RequestHandler;
14 import org.codehaus.spice.threadpool.ThreadPool;
15 import org.codehaus.spice.threadpool.ThreadControl;
16 import java.net.Socket JavaDoc;
17
18 /**
19  *
20  * @author Peter Donald
21  * @version $Revision: 1.2 $ $Date: 2004/03/21 23:42:59 $
22  */

23 public class ThreadPerRequestHandlerTestCase
24     extends TestCase
25 {
26     public void testNullThreadPoolPassedToCtor()
27         throws Exception JavaDoc
28     {
29         final Mock mockHandler = new Mock( RequestHandler.class );
30         final RequestHandler handler = (RequestHandler)mockHandler.proxy();
31         try
32         {
33             new ThreadPerRequestHandler( handler, null );
34         }
35         catch( final NullPointerException JavaDoc npe )
36         {
37             assertEquals( "npe.getMessage()", "threadPool", npe.getMessage() );
38             return;
39         }
40         fail( "Expected to fail due to null ThreadPool passed into Ctor" );
41     }
42
43     public void testThreadPoolInvoked()
44         throws Exception JavaDoc
45     {
46         final Mock mockControl = new Mock( ThreadControl.class );
47         final ThreadControl control = (ThreadControl)mockControl.proxy();
48
49         final Mock mockHandler = new Mock( RequestHandler.class );
50         final RequestHandler handler = (RequestHandler)mockHandler.proxy();
51
52         final Mock mockPool = new Mock( ThreadPool.class );
53         mockPool.expectAndReturn( "execute", C.args( C.isA( Runnable JavaDoc.class ) ), control );
54         final ThreadPool threadPool = (ThreadPool)mockPool.proxy();
55
56         final ThreadPerRequestHandler requestHandler =
57             new ThreadPerRequestHandler( handler, threadPool );
58         requestHandler.handleConnection( new Socket JavaDoc() );
59
60         mockHandler.verify();
61         mockPool.verify();
62         mockControl.verify();
63     }
64
65     public void testShutdownWhileThreadStillGoingButInteruptible()
66         throws Exception JavaDoc
67     {
68         final DelayingRequestHandler handler =
69             new DelayingRequestHandler( 2000, true );
70
71         final ThreadPerRequestHandler requestHandler =
72             new ThreadPerRequestHandler( handler, new MockThreadPool() );
73         requestHandler.handleConnection( new Socket JavaDoc() );
74         Thread.sleep( 50 );
75
76         requestHandler.shutdown( 50 );
77         assertEquals( "isShutdown", true, handler.isShutdown() );
78         assertEquals( "isExited", true, handler.isExited() );
79         assertEquals( "isExitDueToInterrupt", true, handler.isExitDueToInterrupt() );
80     }
81
82     public void testShutdownWhileThreadStillGoingAndNotInteruptible()
83         throws Exception JavaDoc
84     {
85         final DelayingRequestHandler handler =
86             new DelayingRequestHandler( 2000, false );
87
88         final ThreadPerRequestHandler requestHandler =
89             new ThreadPerRequestHandler( handler, new MockThreadPool() );
90         requestHandler.handleConnection( new Socket JavaDoc() );
91         Thread.sleep( 50 );
92
93         requestHandler.shutdown( 50 );
94         assertEquals( "isShutdown", true, handler.isShutdown() );
95         assertEquals( "isExited", false, handler.isExited() );
96         assertEquals( "isExitDueToInterrupt", false, handler.isExitDueToInterrupt() );
97     }
98
99     public void testShutdownWhileThreadStillGoingAndWaitIndefinetly()
100         throws Exception JavaDoc
101     {
102         final DelayingRequestHandler handler =
103             new DelayingRequestHandler( 200, false );
104
105         final ThreadPerRequestHandler requestHandler =
106             new ThreadPerRequestHandler( handler, new MockThreadPool() );
107         requestHandler.handleConnection( new Socket JavaDoc() );
108         Thread.sleep( 50 );
109
110         requestHandler.shutdown( 0 );
111         assertEquals( "isShutdown", true, handler.isShutdown() );
112         assertEquals( "isExited", true, handler.isExited() );
113         assertEquals( "isExitDueToInterrupt", false, handler.isExitDueToInterrupt() );
114     }
115 }
116
Popular Tags