From 4b4d4d8a3a71f4a1dd8b0083f29d973df73a8ce5 Mon Sep 17 00:00:00 2001 From: Eric Smith Date: Mon, 22 Sep 2014 14:33:34 -0700 Subject: [PATCH 1/7] Setting up the builder --- .travis.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..dff5f3a --- /dev/null +++ b/.travis.yml @@ -0,0 +1 @@ +language: java From 354e96d99ea731cb9c5767244ab1eb2325911de3 Mon Sep 17 00:00:00 2001 From: Eric Smith Date: Mon, 22 Sep 2014 16:24:14 -0700 Subject: [PATCH 2/7] Start a Socket interface Note: I have not actually created a real socket. --- src/main/java/com/ericsmith/Server.java | 10 ++++++++++ src/main/java/com/ericsmith/Socket.java | 5 +++++ src/test/java/Mocket.java | 10 ++++++++++ src/test/java/ServerTest.java | 17 +++++++++++++++++ 4 files changed, 42 insertions(+) create mode 100644 src/main/java/com/ericsmith/Socket.java create mode 100644 src/test/java/Mocket.java create mode 100644 src/test/java/ServerTest.java diff --git a/src/main/java/com/ericsmith/Server.java b/src/main/java/com/ericsmith/Server.java index 668c4f9..e6b04d8 100644 --- a/src/main/java/com/ericsmith/Server.java +++ b/src/main/java/com/ericsmith/Server.java @@ -2,8 +2,18 @@ public class Server { + private Socket socket; + + public Server(Socket socket) { + this.socket = socket; + } + public static void main(String[] args) { } + + public void run() { + socket.start(); + } } diff --git a/src/main/java/com/ericsmith/Socket.java b/src/main/java/com/ericsmith/Socket.java new file mode 100644 index 0000000..e098521 --- /dev/null +++ b/src/main/java/com/ericsmith/Socket.java @@ -0,0 +1,5 @@ +package com.ericsmith; + +public interface Socket { + void start(); +} diff --git a/src/test/java/Mocket.java b/src/test/java/Mocket.java new file mode 100644 index 0000000..3cd2096 --- /dev/null +++ b/src/test/java/Mocket.java @@ -0,0 +1,10 @@ +import com.ericsmith.Socket; + +public class Mocket implements Socket { + public boolean Started; + + @Override + public void start() { + Started = true; + } +} diff --git a/src/test/java/ServerTest.java b/src/test/java/ServerTest.java new file mode 100644 index 0000000..9d28f90 --- /dev/null +++ b/src/test/java/ServerTest.java @@ -0,0 +1,17 @@ +import com.ericsmith.Server; +import org.junit.Test; + +import static org.junit.Assert.assertTrue; + +public class ServerTest { + + @Test + public void ItStartsASocket() { + Mocket mocket = new Mocket(); + Server server = new Server(mocket); + + server.run(); + + assertTrue(mocket.Started); + } +} From 6e9287c8fc7ec8b5f875c2d8eb5b38e3594c1df7 Mon Sep 17 00:00:00 2001 From: Eric Smith Date: Tue, 23 Sep 2014 07:57:57 -0700 Subject: [PATCH 3/7] Began main --- src/main/java/com/ericsmith/Server.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/ericsmith/Server.java b/src/main/java/com/ericsmith/Server.java index e6b04d8..86850c0 100644 --- a/src/main/java/com/ericsmith/Server.java +++ b/src/main/java/com/ericsmith/Server.java @@ -10,7 +10,8 @@ public Server(Socket socket) { public static void main(String[] args) { - + Server server = new Server(); + server.run(); } public void run() { From 90e3c47534e4f465b02a505195faca715b5391e4 Mon Sep 17 00:00:00 2001 From: Eric Smith Date: Tue, 23 Sep 2014 08:07:35 -0700 Subject: [PATCH 4/7] First passing test --- .../java/com/ericsmith/InternetSocket.java | 15 ++++++++++++++ src/main/java/com/ericsmith/Server.java | 2 +- src/test/java/InternetSocketTest.java | 20 +++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/ericsmith/InternetSocket.java create mode 100644 src/test/java/InternetSocketTest.java diff --git a/src/main/java/com/ericsmith/InternetSocket.java b/src/main/java/com/ericsmith/InternetSocket.java new file mode 100644 index 0000000..eab0b87 --- /dev/null +++ b/src/main/java/com/ericsmith/InternetSocket.java @@ -0,0 +1,15 @@ +package com.ericsmith; +import java.net.ServerSocket; + +public class InternetSocket implements Socket { + + @Override + public void start() { + try { + java.net.ServerSocket socket = new java.net.ServerSocket(5000); + } + catch (Exception e) { + + } + } +} diff --git a/src/main/java/com/ericsmith/Server.java b/src/main/java/com/ericsmith/Server.java index 86850c0..11c6491 100644 --- a/src/main/java/com/ericsmith/Server.java +++ b/src/main/java/com/ericsmith/Server.java @@ -10,7 +10,7 @@ public Server(Socket socket) { public static void main(String[] args) { - Server server = new Server(); + Server server = new Server(new InternetSocket()); server.run(); } diff --git a/src/test/java/InternetSocketTest.java b/src/test/java/InternetSocketTest.java new file mode 100644 index 0000000..e2e19df --- /dev/null +++ b/src/test/java/InternetSocketTest.java @@ -0,0 +1,20 @@ +import com.ericsmith.*; +import com.ericsmith.Socket; +import org.junit.Test; + +import java.net.*; + +public class InternetSocketTest { + + @Test + public void StartsTheSocket() throws Exception { + + Socket socket = new InternetSocket(); + + socket.start(); + + java.net.Socket client = new java.net.Socket("localhost", 5000); + + + } +} From 6f44035212a6dc8ddd9063fdc2d8a73f0329bdfa Mon Sep 17 00:00:00 2001 From: Eric Smith Date: Tue, 23 Sep 2014 08:41:25 -0700 Subject: [PATCH 5/7] Failing test - by hanging --- .../java/com/ericsmith/InternetSocket.java | 4 ++++ src/main/java/com/ericsmith/Server.java | 3 ++- .../java/com/ericsmith/SocketHandler.java | 7 ++++++ .../java/com/ericsmith/WebserviceHandler.java | 4 ++++ src/test/java/EchoHandler.java | 4 ++++ src/test/java/InternetSocketTest.java | 22 ++++++++++++++++--- 6 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/ericsmith/SocketHandler.java create mode 100644 src/main/java/com/ericsmith/WebserviceHandler.java create mode 100644 src/test/java/EchoHandler.java diff --git a/src/main/java/com/ericsmith/InternetSocket.java b/src/main/java/com/ericsmith/InternetSocket.java index eab0b87..ac56dcc 100644 --- a/src/main/java/com/ericsmith/InternetSocket.java +++ b/src/main/java/com/ericsmith/InternetSocket.java @@ -3,6 +3,10 @@ public class InternetSocket implements Socket { + public InternetSocket(SocketHandler handler) { + + } + @Override public void start() { try { diff --git a/src/main/java/com/ericsmith/Server.java b/src/main/java/com/ericsmith/Server.java index 11c6491..8a99128 100644 --- a/src/main/java/com/ericsmith/Server.java +++ b/src/main/java/com/ericsmith/Server.java @@ -10,7 +10,8 @@ public Server(Socket socket) { public static void main(String[] args) { - Server server = new Server(new InternetSocket()); + WebserviceHandler handler = new WebserviceHandler(); + Server server = new Server(new InternetSocket(handler)); server.run(); } diff --git a/src/main/java/com/ericsmith/SocketHandler.java b/src/main/java/com/ericsmith/SocketHandler.java new file mode 100644 index 0000000..7c82517 --- /dev/null +++ b/src/main/java/com/ericsmith/SocketHandler.java @@ -0,0 +1,7 @@ +package com.ericsmith; + +/** + * Created by eric on 9/23/14. + */ +public interface SocketHandler { +} diff --git a/src/main/java/com/ericsmith/WebserviceHandler.java b/src/main/java/com/ericsmith/WebserviceHandler.java new file mode 100644 index 0000000..ffbd16e --- /dev/null +++ b/src/main/java/com/ericsmith/WebserviceHandler.java @@ -0,0 +1,4 @@ +package com.ericsmith; + +public class WebserviceHandler implements SocketHandler { +} diff --git a/src/test/java/EchoHandler.java b/src/test/java/EchoHandler.java new file mode 100644 index 0000000..074cbbd --- /dev/null +++ b/src/test/java/EchoHandler.java @@ -0,0 +1,4 @@ +import com.ericsmith.SocketHandler; + +public class EchoHandler implements SocketHandler { +} diff --git a/src/test/java/InternetSocketTest.java b/src/test/java/InternetSocketTest.java index e2e19df..1e88936 100644 --- a/src/test/java/InternetSocketTest.java +++ b/src/test/java/InternetSocketTest.java @@ -2,19 +2,35 @@ import com.ericsmith.Socket; import org.junit.Test; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.PrintWriter; import java.net.*; +import static org.junit.Assert.assertEquals; + public class InternetSocketTest { @Test - public void StartsTheSocket() throws Exception { - - Socket socket = new InternetSocket(); + public void StartsTheSocket() throws Exception + { + EchoHandler handler = new EchoHandler(); + Socket socket = new InternetSocket(handler); socket.start(); java.net.Socket client = new java.net.Socket("localhost", 5000); + try { + PrintWriter out = new PrintWriter(client.getOutputStream()); + BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream())); + + out.println("Test"); + assertEquals("Test", in.readLine()); + } + finally { + client.close(); + } } } From e7caf53c120655f0f63c358af9aa930a5f008fbd Mon Sep 17 00:00:00 2001 From: Eric Smith Date: Tue, 23 Sep 2014 10:22:12 -0700 Subject: [PATCH 6/7] Crude socket connection --- .../java/com/ericsmith/InternetSocket.java | 27 ++++++++++++++++--- src/test/java/InternetSocketTest.java | 15 ++++++++--- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/ericsmith/InternetSocket.java b/src/main/java/com/ericsmith/InternetSocket.java index ac56dcc..c8e0eef 100644 --- a/src/main/java/com/ericsmith/InternetSocket.java +++ b/src/main/java/com/ericsmith/InternetSocket.java @@ -1,19 +1,38 @@ package com.ericsmith; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; import java.net.ServerSocket; public class InternetSocket implements Socket { + private SocketHandler handler; + private java.net.Socket socket; public InternetSocket(SocketHandler handler) { - + this.handler = handler; } @Override public void start() { + ServerSocket serverSocket = null; try { - java.net.ServerSocket socket = new java.net.ServerSocket(5000); + serverSocket = new ServerSocket(5000); + socket = serverSocket.accept(); + PrintWriter out = new PrintWriter(socket.getOutputStream()); + BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); + String input = in.readLine(); + out.println(input); + out.flush(); } - catch (Exception e) { - + catch (Exception e) + { + if (serverSocket != null) + try { + serverSocket.close(); + } catch (IOException e1) { + e1.printStackTrace(); + } } } } diff --git a/src/test/java/InternetSocketTest.java b/src/test/java/InternetSocketTest.java index 1e88936..7236917 100644 --- a/src/test/java/InternetSocketTest.java +++ b/src/test/java/InternetSocketTest.java @@ -14,17 +14,24 @@ public class InternetSocketTest { @Test public void StartsTheSocket() throws Exception { + InetAddress host = InetAddress.getLocalHost(); EchoHandler handler = new EchoHandler(); - Socket socket = new InternetSocket(handler); + final Socket socket = new InternetSocket(handler); - socket.start(); + new Thread() { + public void run() { + socket.start(); + } + }.start(); + + java.net.Socket client = new java.net.Socket(host.getHostName(), 5000); - java.net.Socket client = new java.net.Socket("localhost", 5000); try { PrintWriter out = new PrintWriter(client.getOutputStream()); BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream())); - out.println("Test"); + out.println("Test\n"); + out.flush(); assertEquals("Test", in.readLine()); } From 824e5d6812e813b55267aa2f880d5a045c2bc394 Mon Sep 17 00:00:00 2001 From: Tommy Stanton Date: Wed, 24 Sep 2014 13:37:02 -0700 Subject: [PATCH 7/7] Test: Interrupt the thread at the end of the test This test was passing on first run, then failing on every run thereafter with a "Connection refused" error on my machine (IntelliJ on Ubuntu). The hope is that no lingering sockets are left by interrupting the thread. --- src/test/java/InternetSocketTest.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/test/java/InternetSocketTest.java b/src/test/java/InternetSocketTest.java index 7236917..2095a69 100644 --- a/src/test/java/InternetSocketTest.java +++ b/src/test/java/InternetSocketTest.java @@ -18,11 +18,16 @@ public void StartsTheSocket() throws Exception EchoHandler handler = new EchoHandler(); final Socket socket = new InternetSocket(handler); - new Thread() { - public void run() { - socket.start(); + Thread thread = new Thread( + new Runnable() { + @Override + public void run() { + socket.start(); + } } - }.start(); + ); + + thread.start(); java.net.Socket client = new java.net.Socket(host.getHostName(), 5000); @@ -37,6 +42,7 @@ public void run() { } finally { client.close(); + thread.interrupt(); } }