diff options
Diffstat (limited to 'jetty-servlets/src/test/java/org/eclipse/jetty/servlets/QoSFilterTest.java')
-rw-r--r-- | jetty-servlets/src/test/java/org/eclipse/jetty/servlets/QoSFilterTest.java | 81 |
1 files changed, 38 insertions, 43 deletions
diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/QoSFilterTest.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/QoSFilterTest.java index 391c76e63a..acf14cfb58 100644 --- a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/QoSFilterTest.java +++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/QoSFilterTest.java @@ -4,21 +4,19 @@ // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 // and Apache License v2.0 which accompanies this distribution. -// The Eclipse Public License is available at +// The Eclipse Public License is available at // http://www.eclipse.org/legal/epl-v10.html // The Apache License v2.0 is available at // http://www.opensource.org/licenses/apache2.0.php -// You may elect to redistribute this code under either of these licenses. +// You may elect to redistribute this code under either of these licenses. // ======================================================================== package org.eclipse.jetty.servlets; import java.io.IOException; -import java.io.InputStream; import java.net.URL; import java.util.EnumSet; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; - import javax.servlet.DispatcherType; import javax.servlet.Servlet; import javax.servlet.ServletException; @@ -27,16 +25,20 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import junit.framework.TestCase; - import org.eclipse.jetty.server.LocalConnector; import org.eclipse.jetty.servlet.FilterHolder; import org.eclipse.jetty.servlet.FilterMapping; import org.eclipse.jetty.testing.HttpTester; import org.eclipse.jetty.testing.ServletTester; import org.eclipse.jetty.util.log.Log; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; -public class QoSFilterTest extends TestCase +public class QoSFilterTest { private ServletTester _tester; private LocalConnector[] _connectors; @@ -44,42 +46,46 @@ public class QoSFilterTest extends TestCase private final int NUM_CONNECTIONS = 8; private final int NUM_LOOPS = 6; private final int MAX_QOS = 4; - - protected void setUp() throws Exception + + @Before + public void setUp() throws Exception { _tester = new ServletTester(); _tester.setContextPath("/context"); _tester.addServlet(TestServlet.class, "/test"); TestServlet.__maxSleepers=0; TestServlet.__sleepers=0; - + _connectors = new LocalConnector[NUM_CONNECTIONS]; for(int i = 0; i < _connectors.length; ++i) _connectors[i] = _tester.createLocalConnector(); - + _doneRequests = new CountDownLatch(NUM_CONNECTIONS*NUM_LOOPS); - + _tester.start(); } - - protected void tearDown() throws Exception + + @After + public void tearDown() throws Exception { _tester.stop(); } + @Test public void testNoFilter() throws Exception - { + { for(int i = 0; i < NUM_CONNECTIONS; ++i ) { new Thread(new Worker(i)).start(); } - + _doneRequests.await(10,TimeUnit.SECONDS); - + assertFalse("TEST WAS NOT PARALLEL ENOUGH!",TestServlet.__maxSleepers<=MAX_QOS); assertTrue(TestServlet.__maxSleepers<=NUM_CONNECTIONS); } + @Test public void testBlockingQosFilter() throws Exception { FilterHolder holder = new FilterHolder(QoSFilter2.class); @@ -97,23 +103,23 @@ public class QoSFilterTest extends TestCase assertTrue(TestServlet.__maxSleepers==MAX_QOS); } + @Test public void testQosFilter() throws Exception - { + { FilterHolder holder = new FilterHolder(QoSFilter2.class); holder.setAsyncSupported(true); holder.setInitParameter(QoSFilter.MAX_REQUESTS_INIT_PARAM, ""+MAX_QOS); _tester.getContext().getServletHandler().addFilterWithMapping(holder,"/*",EnumSet.of(DispatcherType.REQUEST,DispatcherType.ASYNC)); - for(int i = 0; i < NUM_CONNECTIONS; ++i ) { new Thread(new Worker2(i)).start(); } - + _doneRequests.await(20,TimeUnit.SECONDS); assertFalse("TEST WAS NOT PARALLEL ENOUGH!",TestServlet.__maxSleepers<MAX_QOS); assertTrue(TestServlet.__maxSleepers<=MAX_QOS); } - + class Worker implements Runnable { private int _num; public Worker(int num) @@ -126,7 +132,6 @@ public class QoSFilterTest extends TestCase for (int i=0;i<NUM_LOOPS;i++) { HttpTester request = new HttpTester(); - HttpTester response = new HttpTester(); request.setMethod("GET"); request.setHeader("host", "tester"); @@ -135,22 +140,14 @@ public class QoSFilterTest extends TestCase try { String responseString = _tester.getResponses(request.generate(), _connectors[_num]); - int index=-1; - if((index = responseString.indexOf("HTTP", index+1))!=-1) + if(responseString.indexOf("HTTP")!=-1) { - responseString = response.parse(responseString); _doneRequests.countDown(); } } - catch (IOException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } - catch (Exception e) + catch (Exception x) { - // TODO Auto-generated catch block - e.printStackTrace(); + assertTrue(false); } } } @@ -173,25 +170,24 @@ public class QoSFilterTest extends TestCase { url=new URL(addr+"/context/test?priority="+(_num%QoSFilter.__DEFAULT_MAX_PRIORITY)+"&n="+_num+"&l="+i); // System.err.println(_num+"-"+i+" Try "+url); - InputStream in = (InputStream)url.getContent(); + url.getContent(); _doneRequests.countDown(); // System.err.println(_num+"-"+i+" Got "+IO.toString(in)+" "+_doneRequests.getCount()); } } catch(Exception e) { - Log.warn(url.toString()); + Log.warn(String.valueOf(url)); Log.debug(e); } } } - + public static class TestServlet extends HttpServlet implements Servlet { - private int _count; private static int __sleepers; private static int __maxSleepers; - + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try @@ -214,25 +210,24 @@ public class QoSFilterTest extends TestCase } response.setContentType("text/plain"); - response.getWriter().println("DONE!"); + response.getWriter().println("DONE!"); } catch (InterruptedException e) { e.printStackTrace(); response.sendError(500); - } + } } } - + public static class QoSFilter2 extends QoSFilter { public int getPriority(ServletRequest request) { - String p = ((HttpServletRequest)request).getParameter("priority"); + String p = request.getParameter("priority"); if (p!=null) return Integer.parseInt(p); return 0; } } - } |