@Test public void shouldStartServerIfEverythingIsOk() throws IOException { ServerSocket serverSocket = mock(ServerSocket.class); ServerConfig serverConfig = getDefaultServerConfig(); WebServer webServer = new WebServer(serverSocket, serverConfig); assertThat(webServer.startServer(), is(true)); assertThat(webServer.isRunning(), is(true)); assertThat(webServer.getServerConfig(), is(serverConfig)); webServer.stopServer(); assertThat(webServer.isRunning(), is(false)); }
/** * Starts the web server. */ public boolean startServer() { listen = true; if (!(new File(serverConfig. getDocumentRootPath()) .isDirectory())) { LOGGER.log(Level.WARNING, "DocumentRoot does not exist! PATH {0}", new Object[]{ serverConfig.getDocumentRootPath() }); } if (!isNumberOfThreadsSufficient() || !isTempPathWritable() || !bindSocket()) { listen = false; return false; } LOGGER.log(Level.INFO, "Server has been started. Listening on port {0}", new Object[]{ serverConfig.getListenPort() }); FileUtilities.clearDirectory(serverConfig.getTempPath()); start(); return true; }
/** * {@inheritDoc} */ @Override public void start() throws IllegalStateException { if (webServer != null) { throw new IllegalStateException("Webserver already started!"); } ServerSocket serverSocket; try { serverSocket = serverSocketFactory.createServerSocket(); } catch (IOException e) { LOGGER.log(Level.SEVERE, "Unable to create server socket ", e); return; } webServer = new WebServer(serverSocket, serverConfigFactory.getServerConfig()); if (webServer.startServer()) { gui.start(); } else { webServer = null; } }
@Test public void shouldNotStartServerUnableToBind() throws IOException { ServerSocket serverSocket = mock(ServerSocket.class); doThrow(new IOException()).when(serverSocket).bind(any(SocketAddress.class)); ServerConfig serverConfig = getDefaultServerConfig(); WebServer webServer = new WebServer(serverSocket, serverConfig); assertThat(webServer.startServer(), is(false)); assertThat(webServer.isRunning(), is(false)); }
/** * Returns current service state. * * @return */ public ServiceStateDTO getServiceState() { String accessUrl = "Initializing"; if (controller != null && controller.getWebServer() != null) { accessUrl = "http://" + getLocalIpAddress() + getPort(controller.getWebServer().getServerConfig().getListenPort()) + '/'; } boolean isWebserverStarted = controller != null && controller.getWebServer() != null && controller.getWebServer().isRunning(); return new ServiceStateDTO(isServiceStarted, isWebserverStarted, accessUrl); }
/** * Stops the web server. */ public void stopServer() { listen = false; IOUtilities.closeSilently(serverSocket); for (ResourceProvider resourceProvider : getServerConfig().getResourceProviders()) { resourceProvider.shutdown(); } LOGGER.info("Server has been stopped."); }
@Test public void shouldGetWebServerAfterServerStart() { ControllerImpl controllerImpl = new ControllerImpl(serverConfigFactory, serverSocketFactory, serverGui); assertThat(controllerImpl.getWebServer(), is(nullValue())); controllerImpl.start(); assertThat(controllerImpl.getWebServer(), is(not(nullValue()))); assertThat(controllerImpl.getWebServer().isRunning(), is(true)); }
/** * {@inheritDoc} */ @Override public void stop() throws IllegalStateException { if (webServer == null) { throw new IllegalStateException("Webserver not started!"); } webServer.stopServer(); webServer = null; gui.stop(); }
@Test public void shouldNotStartServerOnTooLessThreadsAvailable() throws IOException { ServerSocket serverSocket = mock(ServerSocket.class); ServerConfig serverConfig = getDefaultServerConfig(); when(serverConfig.getMaxServerThreads()).thenReturn(0); WebServer webServer = new WebServer(serverSocket, serverConfig); assertThat(webServer.startServer(), is(false)); assertThat(webServer.isRunning(), is(false)); }
@BeforeClass public static void setUp() throws IOException { if (serverSocket == null) { serverSocket = new ServerSocket(); tempDirectory = FileUtils.createTempDirectory(); WebServer webServer = new WebServer(serverSocket, getPreparedConfig()); if (!webServer.startServer()) { fail("Unable to start server"); } } }
@Test public void shouldStopProperly() { ControllerImpl controllerImpl = new ControllerImpl(serverConfigFactory, serverSocketFactory, serverGui); controllerImpl.start(); assertThat(controllerImpl.getWebServer(), is(not(nullValue()))); WebServer webServer = controllerImpl.getWebServer(); controllerImpl.stop(); assertThat(controllerImpl.getWebServer(), is(nullValue())); assertThat(webServer.isRunning(), is(false)); verify(serverGui, times(1)).stop(); }
@Test public void shouldNotStartServerOnTempPathDoesNotExists() throws IOException { ServerSocket serverSocket = mock(ServerSocket.class); File file = new File("/proc/someprotectedresource"); assertThat(file.exists(), is(false)); ServerConfig serverConfig = getDefaultServerConfig(); when(serverConfig.getTempPath()).thenReturn(file.getAbsolutePath()); WebServer webServer = new WebServer(serverSocket, serverConfig); assertThat(webServer.startServer(), is(false)); assertThat(webServer.isRunning(), is(false)); }
@Test public void shouldNotStartServerOnTempPathNonWritable() throws IOException { ServerSocket serverSocket = mock(ServerSocket.class); File file = new File("/proc/"); assertThat(file.exists(), is(true)); assertThat(file.canWrite(), is(false)); ServerConfig serverConfig = getDefaultServerConfig(); when(serverConfig.getTempPath()).thenReturn(file.getAbsolutePath()); WebServer webServer = new WebServer(serverSocket, serverConfig); assertThat(webServer.startServer(), is(false)); assertThat(webServer.isRunning(), is(false)); }