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 diff --git a/src/main/java/com/ericsmith/InternetSocket.java b/src/main/java/com/ericsmith/InternetSocket.java new file mode 100644 index 0000000..c8e0eef --- /dev/null +++ b/src/main/java/com/ericsmith/InternetSocket.java @@ -0,0 +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 { + 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) + { + if (serverSocket != null) + try { + serverSocket.close(); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + } +} diff --git a/src/main/java/com/ericsmith/Server.java b/src/main/java/com/ericsmith/Server.java index 668c4f9..8a99128 100644 --- a/src/main/java/com/ericsmith/Server.java +++ b/src/main/java/com/ericsmith/Server.java @@ -2,8 +2,20 @@ public class Server { + private Socket socket; + + public Server(Socket socket) { + this.socket = socket; + } + public static void main(String[] args) { + WebserviceHandler handler = new WebserviceHandler(); + Server server = new Server(new InternetSocket(handler)); + server.run(); + } + 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/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 new file mode 100644 index 0000000..2095a69 --- /dev/null +++ b/src/test/java/InternetSocketTest.java @@ -0,0 +1,49 @@ +import com.ericsmith.*; +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 + { + InetAddress host = InetAddress.getLocalHost(); + EchoHandler handler = new EchoHandler(); + final Socket socket = new InternetSocket(handler); + + Thread thread = new Thread( + new Runnable() { + @Override + public void run() { + socket.start(); + } + } + ); + + thread.start(); + + java.net.Socket client = new java.net.Socket(host.getHostName(), 5000); + + try { + PrintWriter out = new PrintWriter(client.getOutputStream()); + BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream())); + + out.println("Test\n"); + out.flush(); + + assertEquals("Test", in.readLine()); + } + finally { + client.close(); + thread.interrupt(); + } + + } +} 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); + } +}