package VASSAL.chat.peer2peer; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.Properties; import org.litesoft.p2pchat.ActivePeerManager; import org.litesoft.p2pchat.MyInfo; import org.litesoft.p2pchat.PeerInfo; import org.litesoft.p2pchat.PeerReader; import org.litesoft.p2pchat.PeerWriter; import org.litesoft.p2pchat.PendingPeerManager; import org.litesoft.p2pchat.UserDialog; public class UnitTest implements UserDialog { private String id; public UnitTest(String id) { this.id = id; } public static void main(String[] args) throws Exception { final Properties p = new Properties(); if ("true".equals(p.getProperty("reader"))) { //$NON-NLS-1$ //$NON-NLS-2$ //testReadWrite(); testPeer(); } if ("true".equals(p.getProperty("manager"))) { //$NON-NLS-1$ //$NON-NLS-2$ testPeerManager(); } if ("true".equals(p.getProperty("managers"))) { //$NON-NLS-1$ //$NON-NLS-2$ testPeerManagers(); } } private static void testPeerManager() throws InterruptedException, IOException { startSocketReader(5555); final UserDialog d = new UnitTest("Client"); //$NON-NLS-1$ final PendingPeerManager ppm = new PendingPeerManager(d); final ActivePeerManager apm = new ActivePeerManager(new MyInfo("TestClient",5556),d,ppm); //$NON-NLS-1$ final PeerInfo info = new PeerInfo("SocketReader","localhost",5555); //$NON-NLS-1$ //$NON-NLS-2$ info.setID("SocketReader"); //$NON-NLS-1$ ppm.addNewPeer(info); Thread.sleep(10000); apm.sendToAllCHAT("A message"); //$NON-NLS-1$ apm.getPeerListenerByID("1").close(); //$NON-NLS-1$ // apm.clear(); System.err.println("Closed peer"); //$NON-NLS-1$ } private static void testPeerManagers() throws InterruptedException, IOException { UserDialog serverDialog = new UnitTest("Server"); //$NON-NLS-1$ PendingPeerManager serverPpm = new PendingPeerManager(serverDialog); new AcceptPeerThread(5555,serverPpm).start(); UserDialog d = new UnitTest("Client"); //$NON-NLS-1$ PendingPeerManager ppm = new PendingPeerManager(d); ActivePeerManager apm = new ActivePeerManager(new MyInfo("Client",5556),d,ppm); //$NON-NLS-1$ PeerInfo info = new PeerInfo("Server","localhost",5555); //$NON-NLS-1$ //$NON-NLS-2$ info.setID("Server"); //$NON-NLS-1$ ppm.addNewPeer(info); Thread.sleep(5000); apm.sendToAllCHAT("A message"); //$NON-NLS-1$ apm.clear(); } private static void testPeer() throws InterruptedException, IOException { startSocketReader(5555); /* UserDialog d = new UnitTest("Client"); PendingPeerManager ppm = new PendingPeerManager(d); MyInfo myInfo = new MyInfo("TestClient",5556); ActivePeerManager apm = new ActivePeerManager(myInfo,d,ppm); PeerInfo info = new PeerInfo("Server","localhost",5555); */ final Socket s = new Socket("localhost",5555); //$NON-NLS-1$ final PeerReader reader = new PeerReader(s.getInputStream()); System.err.println("Created reader " + reader); //$NON-NLS-1$ try { final PeerWriter writer = new PeerWriter(s.getOutputStream()); System.err.println("Created writer"+writer); //$NON-NLS-1$ // ActivePeer peer = new ActivePeer(myInfo,d, apm, ppm, info, reader, writer); // peer.sendCHAT("A message"); try { writer.writeLine("A message"); //$NON-NLS-1$ Thread.sleep(2000); } finally { writer.close(); } } finally { reader.close(); } } private static void startSocketReader(final int port) throws InterruptedException { final Object lock = new Object(); final Runnable runnable = new Runnable() { public void run() { try { ServerSocket server; synchronized (lock) { server = new ServerSocket(port); lock.notifyAll(); } final Socket s = server.accept(); PeerReader reader = null; try { reader = new PeerReader(s.getInputStream()); while (true) { final String msg = reader.readLine(); System.err.println(msg == null ? "" : msg); //$NON-NLS-1$ if (msg == null) { break; } } System.err.println("Done"); //$NON-NLS-1$ reader.close(); } finally { if (reader != null) reader.close(); } } catch (IOException e) { e.printStackTrace(); } } }; synchronized (lock) { new Thread(runnable).start(); lock.wait(); } } public void setActivePeerManager(ActivePeerManager pActivePeerManager) { } public void setPendingPeerManager(PendingPeerManager pPendingPeerManager) { } public void showUnrecognized(PeerInfo pPeerInfo, String pBadMessage) { System.err.println(this+"Unrecognized "+pPeerInfo); //$NON-NLS-1$ } public void showStreamsFailed(PeerInfo pPeerInfo) { System.err.println(this+"Streams Failed "+pPeerInfo); //$NON-NLS-1$ } public void showConnectFailed(PeerInfo pPeerInfo) { System.err.println(this+"Connect Failed "+pPeerInfo); //$NON-NLS-1$ } public void showConnect(PeerInfo pPeerInfo) { System.err.println(this+"Connect "+pPeerInfo); //$NON-NLS-1$ } public void showDisconnect(PeerInfo pPeerInfo) { System.err.println(this+"Disconnect "+pPeerInfo); //$NON-NLS-1$ } public void showCHAT(PeerInfo pPeerInfo, String pMessage) { System.err.println(this+"Chat "+pPeerInfo); //$NON-NLS-1$ } public void showPMSG(PeerInfo pPeerInfo, String pMessage) { System.err.println(this+"Private Chat "+pPeerInfo); //$NON-NLS-1$ } public void showNAME(PeerInfo pPeerInfo) { System.err.println(this+"Name "+pPeerInfo); //$NON-NLS-1$ } public void showHELO(PeerInfo pPeerInfo) { System.err.println(this+"Hello "+pPeerInfo); //$NON-NLS-1$ } public String toString() { return id+": "; //$NON-NLS-1$ } }