suite.addTestSuite(NetzdosenMockupTest.class);
suite.addTestSuite(CommandTest.class);
suite.addTestSuite(HostConfigTest.class);
+ suite.addTestSuite(NetzdosenServerMockup.class);
//$JUnit-END$
return suite;
}
--- /dev/null
+/*
+ * 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;
+
+}
--- /dev/null
+/*
+ * 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());
+ }
+ }
+ }
+}
--- /dev/null
+/*
+ * 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();
+ }
+
+}
--- /dev/null
+/*
+ * 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();
+ }
+ }
+ }
+
+}