@Test public void shouldHandleServerRunnable() throws Exception { serviceUnavailableHandler.rejectedExecution(mock(ServerRunnable.class), null); verify(factory, times(1)).createFromSocket(any(Socket.class)); printWriter.flush(); assertThat(outputStream.toString(), containsString("503")); } }
public ServiceContainer(final ServerConfig serverConfig) { HeadersParser headersParser = new HeadersParser(); requestWrapperFactory = new HttpServletRequestImplFactory(headersParser, new QueryStringParser(), new RequestStatusParser(), new CookieParser(), new MultipartHeadersPartParser(headersParser), serverConfig.getTempPath() ); responseFactory = new HttpServletResponseImplFactory( new HeadersSerializer(), new CookieHeaderSerializer(new DateProvider()), new StreamHelper( new RangeHelper(), new RangePartHeaderSerializer() ) ); threadPoolExecutor = new ThreadPoolExecutor(1, serverConfig.getMaxServerThreads(), DEFAULT_TIME_UNITS, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(serverConfig.getMaxServerThreads() * MAX_THREADS_MULTIPLIER), Executors.defaultThreadFactory(), new ServiceUnavailableHandler(responseFactory) ); httpErrorHandlerResolver = new HttpErrorHandlerResolverImpl(serverConfig); pathHelper = new PathHelper(); }
@Before public void setUp() throws Exception { outputStream = new ByteArrayOutputStream(); factory = mock(HttpServletResponseImplFactory.class); HttpServletResponseImpl response = mock(HttpServletResponseImpl.class); printWriter = new PrintWriter(outputStream); when(response.getWriter()).thenReturn(printWriter); when(factory.createFromSocket(any(Socket.class))).thenReturn(response); serviceUnavailableHandler = new ServiceUnavailableHandler(factory); }
@Test public void shouldIgnoreRunnableThatIsNotServerRunnable() throws Exception { serviceUnavailableHandler.rejectedExecution(mock(Runnable.class), null); verify(factory, never()).createFromSocket(any(Socket.class)); }
/** * {@inheritDoc} */ @Override public void rejectedExecution(final Runnable r, final ThreadPoolExecutor executor) { if (r instanceof ServerRunnable) { Socket socket = ((ServerRunnable) r).getSocket(); try { (new HttpError503Handler()).serve(responseFactory.createFromSocket(socket)); } catch (IOException e) { } finally { IOUtilities.closeSilently(socket); } } } }
@Test public void shouldLogIOExceptionsSilently() throws Exception { Socket socket = mock(Socket.class); HttpServletResponseImplFactory responseFactory = mock(HttpServletResponseImplFactory.class); when(responseFactory.createFromSocket(socket)).thenThrow(new IOException()); ServerRunnable serverRunnable = new ServerRunnable(socket, mock(ServerConfig.class), mock(HttpServletRequestImplFactory.class), responseFactory, mock(HttpErrorHandlerResolver.class), new PathHelper() ); serverRunnable.run(); verify(socket, times(1)).close(); } }
response = responseFactory.createFromSocket(socket); HttpServletRequestImpl request = requestFactory.createFromSocket(socket);