diff options
Diffstat (limited to 'jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java')
-rw-r--r-- | jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java b/jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java index 0ecebb68dc..488116df56 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java @@ -246,7 +246,7 @@ public abstract class HttpServerTestBase extends HttpServerTestFixture } @Test - public void testExceptionThrownInHandler() throws Exception + public void testExceptionThrownInHandlerLoop() throws Exception { configureServer(new AbstractHandler() { @@ -271,7 +271,41 @@ public abstract class HttpServerTestBase extends HttpServerTestFixture os.flush(); String response = readResponse(client); - assertThat("response code is 500", response.contains("500"), is(true)); + assertThat(response,Matchers.containsString(" 500 ")); + } + finally + { + ((StdErrLog)Log.getLogger(HttpChannel.class)).setHideStacks(false); + } + } + + @Test + public void testExceptionThrownInHandler() throws Exception + { + configureServer(new AbstractHandler() + { + @Override + public void doHandle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException + { + throw new QuietServletException("TEST handler exception"); + } + }); + + StringBuffer request = new StringBuffer("GET / HTTP/1.0\r\n"); + request.append("Host: localhost\r\n\r\n"); + + Socket client = newSocket(_serverURI.getHost(), _serverURI.getPort()); + OutputStream os = client.getOutputStream(); + + try + { + ((StdErrLog)Log.getLogger(HttpChannel.class)).setHideStacks(true); + Log.getLogger(HttpChannel.class).info("Expecting ServletException: TEST handler exception..."); + os.write(request.toString().getBytes()); + os.flush(); + + String response = readResponse(client); + assertThat(response,Matchers.containsString(" 500 ")); } finally { @@ -287,7 +321,7 @@ public abstract class HttpServerTestBase extends HttpServerTestFixture configureServer(new AbstractHandler() { @Override - public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException + public void doHandle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { baseRequest.setHandled(true); int contentLength = request.getContentLength(); @@ -301,7 +335,7 @@ public abstract class HttpServerTestBase extends HttpServerTestFixture catch (EofException e) { earlyEOFException.set(true); - throw e; + throw new QuietServletException(e); } if (i == 3) fourBytesRead.set(true); |