/** * {@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)); }
@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)); }
@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)); }
@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 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)); }
@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)); }