Test Server Mockup neu aufgenommen
authorfelix <felix@a944a559-bf0e-0410-8ddc-85264b264b6c>
Sun, 20 May 2007 13:51:28 +0000 (13:51 +0000)
committerfelix <felix@a944a559-bf0e-0410-8ddc-85264b264b6c>
Sun, 20 May 2007 13:51:28 +0000 (13:51 +0000)
git-svn-id: https://www.internetallee.de/svn/bytewurf@47 a944a559-bf0e-0410-8ddc-85264b264b6c

projekte/netzschalter/test/de/bytewurf/projekte/netzschalter/AllTests.java
projekte/netzschalter/test/de/bytewurf/projekte/netzschalter/NetzdosenServerHandler.java [new file with mode: 0644]
projekte/netzschalter/test/de/bytewurf/projekte/netzschalter/NetzdosenServerMockup.java [new file with mode: 0644]
projekte/netzschalter/test/de/bytewurf/projekte/netzschalter/NetzdosenServerMockupTest.java [new file with mode: 0644]
projekte/netzschalter/test/de/bytewurf/projekte/netzschalter/SimpleEchoHandler.java [new file with mode: 0644]

index 972dfa4..c011f6c 100644 (file)
@@ -21,6 +21,7 @@ public class AllTests {
                suite.addTestSuite(NetzdosenMockupTest.class);
                suite.addTestSuite(CommandTest.class);
                suite.addTestSuite(HostConfigTest.class);
+               suite.addTestSuite(NetzdosenServerMockup.class);
                //$JUnit-END$
                return suite;
        }
diff --git a/projekte/netzschalter/test/de/bytewurf/projekte/netzschalter/NetzdosenServerHandler.java b/projekte/netzschalter/test/de/bytewurf/projekte/netzschalter/NetzdosenServerHandler.java
new file mode 100644 (file)
index 0000000..f16047c
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Created on 20.05.2007
+ *
+ * To change this generated comment go to 
+ * Window>Preferences>Java>Code Generation>Code Template
+ */
+package de.bytewurf.projekte.netzschalter;
+
+import java.io.IOException;
+import java.net.Socket;
+
+/**
+ * @author felix
+ */
+public interface NetzdosenServerHandler {
+       
+       public void handleSocket(Socket socket) throws IOException;
+
+}
diff --git a/projekte/netzschalter/test/de/bytewurf/projekte/netzschalter/NetzdosenServerMockup.java b/projekte/netzschalter/test/de/bytewurf/projekte/netzschalter/NetzdosenServerMockup.java
new file mode 100644 (file)
index 0000000..0aad58b
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Created on 18.05.2007
+ *
+ * To change this generated comment go to 
+ * Window>Preferences>Java>Code Generation>Code Template
+ */
+package de.bytewurf.projekte.netzschalter;
+
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+/**
+ * @author felix
+ */
+public class NetzdosenServerMockup {
+       private ServerSocket serverSocket;
+
+       private NetzdosenServerHandler handler;
+       
+       private ServerThread serverThread;
+
+       private boolean stop = false;
+
+       public void stopServer() {
+               stop = false;
+               serverThread.notify();
+       }
+
+       public NetzdosenServerMockup(int portNumber, NetzdosenServerHandler handler)
+                       throws IOException {
+               serverSocket = new ServerSocket(portNumber);
+               this.handler = handler;
+               serverThread = new ServerThread();
+               serverThread.start();
+               
+       }
+
+       class ServerThread extends Thread {
+
+               public void run() {
+                       try {
+                               Socket socket;
+                               while (!stop) {
+                                       socket = serverSocket.accept();
+                                       if (socket != null)
+                                               handler.handleSocket(socket);
+                                       else
+                                               stop = true;
+                               }
+                       } catch (IOException e) {
+                               LogMediator.getInstance(this.getClass()).log(e.toString());
+                       }
+               }
+       }
+}
diff --git a/projekte/netzschalter/test/de/bytewurf/projekte/netzschalter/NetzdosenServerMockupTest.java b/projekte/netzschalter/test/de/bytewurf/projekte/netzschalter/NetzdosenServerMockupTest.java
new file mode 100644 (file)
index 0000000..384d4b7
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Created on 20.05.2007
+ *
+ * To change this generated comment go to 
+ * Window>Preferences>Java>Code Generation>Code Template
+ */
+package de.bytewurf.projekte.netzschalter;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.InetAddress;
+import java.net.Socket;
+import java.net.UnknownHostException;
+
+import junit.framework.TestCase;
+
+/**
+ * @author felix
+ */
+public class NetzdosenServerMockupTest extends TestCase {
+
+       private NetzdosenServerMockup echoServer;
+
+       protected void setUp() throws Exception {
+               echoServer = new NetzdosenServerMockup(NetzdoseKonstanten.XPORT_PORT,
+                               new SimpleEchoHandler());
+       }
+
+       public void testEchoServer() throws UnknownHostException, IOException,
+                       InterruptedException {
+               Socket client = new Socket(InetAddress.getLocalHost(),
+                               NetzdoseKonstanten.XPORT_PORT);
+               assertNotNull(client);
+               InputStream input = client.getInputStream();
+               OutputStream output = client.getOutputStream();
+               assertNotNull(input);
+               assertNotNull(output);
+               byte[] testData = new byte[] { 10, 20, 30 };
+               output.write(testData);
+               int counter = 0;
+               while ((input.available() <= 0) && (counter++ < 100))
+                       Thread.sleep(20);
+               byte[] checkData = new byte[3];
+               assertEquals(3, input.available());
+               input.read(checkData);
+               for (int i=0;i<testData.length; i++)
+                       assertEquals(testData[i], checkData[i]);
+               input.close();
+               output.close();
+               client.close();
+       }
+
+}
diff --git a/projekte/netzschalter/test/de/bytewurf/projekte/netzschalter/SimpleEchoHandler.java b/projekte/netzschalter/test/de/bytewurf/projekte/netzschalter/SimpleEchoHandler.java
new file mode 100644 (file)
index 0000000..2e32bf7
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Created on 20.05.2007
+ *
+ * To change this generated comment go to 
+ * Window>Preferences>Java>Code Generation>Code Template
+ */
+package de.bytewurf.projekte.netzschalter;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.Socket;
+
+/**
+ * @author felix
+ */
+public class SimpleEchoHandler implements NetzdosenServerHandler {
+
+       public void handleSocket(Socket socket) throws IOException {
+               InputStream input = null;
+               OutputStream output = null;
+               try {
+                       input = socket.getInputStream();
+                       output = socket.getOutputStream();
+                       int data;
+                       while ((data = input.available()) > 0) {
+                               byte[] dataBytes = new byte[data];
+                               input.read(dataBytes);
+                               output.write(dataBytes);
+                               System.out.println("Wrote " + data + " bytes ");
+                       }
+               } catch (IOException e) {
+                       LogMediator.getInstance(this.getClass()).log(e.toString());
+               } finally {
+                       if (input != null) {
+                               input.close();
+                       }
+                       if (output != null) {
+                               output.close();
+                       }
+               }
+       }
+
+}