From ef8841e7123995f6f74863964ad97885dea38520 Mon Sep 17 00:00:00 2001
From: akwizgran <michael@briarproject.org>
Date: Fri, 7 Dec 2012 16:10:58 +0000
Subject: [PATCH] Non-JUnit tests for detecting when the other end hangs up.

---
 briar-tests/.classpath                        |  1 +
 .../briar/plugins/modem/HangupClientTest.java | 42 ++++++++++++++++++
 .../briar/plugins/modem/HangupServerTest.java | 43 +++++++++++++++++++
 .../briar/plugins/modem/ModemClientTest.java  |  1 -
 4 files changed, 86 insertions(+), 1 deletion(-)
 create mode 100644 briar-tests/src/net/sf/briar/plugins/modem/HangupClientTest.java
 create mode 100644 briar-tests/src/net/sf/briar/plugins/modem/HangupServerTest.java

diff --git a/briar-tests/.classpath b/briar-tests/.classpath
index b9e40f98d1..ac0eb6392c 100644
--- a/briar-tests/.classpath
+++ b/briar-tests/.classpath
@@ -13,5 +13,6 @@
 	<classpathentry kind="lib" path="/briar-core/libs/commons-io-2.0.1.jar"/>
 	<classpathentry kind="lib" path="/briar-core/libs/jnotify-0.93.jar"/>
 	<classpathentry kind="lib" path="/briar-core/libs/scprov-jdk15on-1.47.0.3-SNAPSHOT.jar"/>
+	<classpathentry kind="lib" path="/briar-core/libs/jssc-0.9-briar.jar"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/briar-tests/src/net/sf/briar/plugins/modem/HangupClientTest.java b/briar-tests/src/net/sf/briar/plugins/modem/HangupClientTest.java
new file mode 100644
index 0000000000..433ebcd726
--- /dev/null
+++ b/briar-tests/src/net/sf/briar/plugins/modem/HangupClientTest.java
@@ -0,0 +1,42 @@
+package net.sf.briar.plugins.modem;
+
+import static java.util.logging.Level.INFO;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.logging.Logger;
+
+public class HangupClientTest {
+
+	public static void main(String[] args) throws Exception {
+		if(args.length != 2) {
+			System.err.println("Please specify the server's phone number "
+					+ " and the serial port");
+			System.exit(1);
+		}
+		String number = args[0];
+		String portName = args[1];
+		Logger.getLogger("net.sf.briar").setLevel(INFO);
+		ExecutorService executor = Executors.newCachedThreadPool();
+		Modem.Callback callback = new Modem.Callback() {
+			public void incomingCallConnected() {
+				System.err.println("Unexpected incoming call");
+				System.exit(1);
+			}
+		};
+		try {
+			Modem modem = new ModemImpl(executor, callback, portName);
+			modem.start();
+			System.out.println("Dialling");
+			if(modem.dial(number)) {
+				System.out.println("Connected");
+				Thread.sleep(10 * 1000);
+			} else {
+				System.out.println("Did not connect");
+			}
+			modem.stop();
+		} finally {
+			executor.shutdown();
+		}
+	}
+}
diff --git a/briar-tests/src/net/sf/briar/plugins/modem/HangupServerTest.java b/briar-tests/src/net/sf/briar/plugins/modem/HangupServerTest.java
new file mode 100644
index 0000000000..c1ed015ccc
--- /dev/null
+++ b/briar-tests/src/net/sf/briar/plugins/modem/HangupServerTest.java
@@ -0,0 +1,43 @@
+package net.sf.briar.plugins.modem;
+
+import static java.util.concurrent.TimeUnit.SECONDS;
+import static java.util.logging.Level.INFO;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.logging.Logger;
+
+public class HangupServerTest {
+
+	public static void main(String[] args) throws Exception {
+		if(args.length != 1) {
+			System.err.println("Please specify the serial port");
+			System.exit(1);
+		}
+		String portName = args[0];
+		Logger.getLogger("net.sf.briar").setLevel(INFO);
+		ExecutorService executor = Executors.newCachedThreadPool();
+		final CountDownLatch latch = new CountDownLatch(1);
+		Modem.Callback callback = new Modem.Callback() {
+			public void incomingCallConnected() {
+				System.out.println("Connected");
+				latch.countDown();
+			}
+		};
+		try {
+			final Modem modem = new ModemImpl(executor, callback, portName);
+			modem.start();
+			System.out.println("Waiting for incoming call");
+			if(latch.await(60, SECONDS)) {
+				System.out.println("Hanging up");
+				modem.hangUp();
+			} else {
+				System.out.println("Did not connect");
+			}
+			modem.stop();
+		} finally {
+			executor.shutdown();
+		}
+	}
+}
diff --git a/briar-tests/src/net/sf/briar/plugins/modem/ModemClientTest.java b/briar-tests/src/net/sf/briar/plugins/modem/ModemClientTest.java
index 2d3bd77840..f50407936f 100644
--- a/briar-tests/src/net/sf/briar/plugins/modem/ModemClientTest.java
+++ b/briar-tests/src/net/sf/briar/plugins/modem/ModemClientTest.java
@@ -44,5 +44,4 @@ public class ModemClientTest extends DuplexClientTest {
 			executor.shutdown();
 		}
 	}
-
 }
-- 
GitLab