Skip to content

Commit a134ac0

Browse files
committed
Update server
1 parent 0a7f270 commit a134ac0

File tree

2 files changed

+34
-13
lines changed

2 files changed

+34
-13
lines changed

src/main/java/httpserver/Server.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
import java.net.ServerSocket;
55
import java.net.Socket;
66
import java.nio.file.Path;
7-
import java.util.concurrent.Executor;
7+
import java.util.concurrent.ExecutionException;
8+
import java.util.concurrent.ExecutorService;
9+
import java.util.concurrent.Future;
810

911
public class Server {
1012
private final Path logPath;
@@ -17,9 +19,17 @@ public Server(ServerSocket serverSocket, Path root, Path logPath) {
1719
this.logPath = logPath;
1820
}
1921

20-
public void acceptConnection(Executor executor, SocketHandlerFactory socketHandlerFactory) throws IOException {
21-
Socket clientSocket = serverSocket.accept();
22-
SocketHandler socketHandler = socketHandlerFactory.newSocketHandler(root, logPath, clientSocket);
23-
executor.execute(socketHandler);
22+
public void acceptConnection(ExecutorService executorService, SocketHandlerFactory socketHandlerFactory){
23+
try (Socket clientSocket = serverSocket.accept()) {
24+
SocketHandler socketHandler = socketHandlerFactory.newSocketHandler(root, logPath, clientSocket);
25+
Future<?> future = executorService.submit(socketHandler);
26+
future.get();
27+
} catch (IOException e) {
28+
e.printStackTrace();
29+
} catch (InterruptedException e) {
30+
e.printStackTrace();
31+
} catch (ExecutionException e) {
32+
e.printStackTrace();
33+
}
2434
}
2535
}

src/test/java/httpserver/ServerTest.java

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
import java.net.Socket;
88
import java.nio.file.Path;
99
import java.nio.file.Paths;
10-
import java.util.concurrent.Executor;
10+
import java.util.concurrent.ExecutorService;
11+
import java.util.concurrent.Future;
1112

1213
import static org.mockito.Mockito.*;
1314

@@ -19,8 +20,9 @@ public class ServerTest {
1920
private final ServerSocket serverSocketMock;
2021
private final Socket socket;
2122
private Server server;
22-
private final Executor executorMock;
23+
private final ExecutorService executorServiceMock;
2324
private final SocketHandler socketHandlerMock;
25+
private final Future futureMock;
2426

2527
public ServerTest() throws IOException {
2628
socket = new Socket();
@@ -35,27 +37,36 @@ public ServerTest() throws IOException {
3537
socketHandlerFactoryMock = mock(SocketHandlerFactory.class);
3638
when(socketHandlerFactoryMock.newSocketHandler(any(), any(), any())).thenReturn(socketHandlerMock);
3739

38-
executorMock = mock(Executor.class);
40+
executorServiceMock = mock(ExecutorService.class);
41+
futureMock = mock(Future.class);
42+
when(executorServiceMock.submit(socketHandlerMock)).thenReturn(futureMock);
3943
}
4044

4145
@Test
4246
public void callsAcceptOnServerSocket() throws Exception {
43-
server.acceptConnection(executorMock, socketHandlerFactoryMock);
47+
server.acceptConnection(executorServiceMock, socketHandlerFactoryMock);
4448

4549
verify(serverSocketMock).accept();
4650
}
4751

4852
@Test
4953
public void callsNewSocketHandlerWithCorrectArgs() throws Exception {
50-
server.acceptConnection(executorMock, socketHandlerFactoryMock);
54+
server.acceptConnection(executorServiceMock, socketHandlerFactoryMock);
5155

5256
verify(socketHandlerFactoryMock).newSocketHandler(root, logPath, socket);
5357
}
5458

5559
@Test
56-
public void callsExecutorExecuteWithSocketHandler() throws Exception {
57-
server.acceptConnection(executorMock, socketHandlerFactoryMock);
60+
public void callsExecutorSubmitWithSocketHandler() throws Exception {
61+
server.acceptConnection(executorServiceMock, socketHandlerFactoryMock);
5862

59-
verify(executorMock).execute(socketHandlerMock);
63+
verify(executorServiceMock).submit(socketHandlerMock);
64+
}
65+
66+
@Test
67+
public void callsGetOnFuture() throws Exception {
68+
server.acceptConnection(executorServiceMock, socketHandlerFactoryMock);
69+
70+
verify(futureMock).get();
6071
}
6172
}

0 commit comments

Comments
 (0)