From 5b02fe96d14b22b1c8ad8e617bc2c96312d8b6be Mon Sep 17 00:00:00 2001
From: akwizgran <michael@briarproject.org>
Date: Thu, 3 Jan 2013 21:47:16 +0000
Subject: [PATCH] Disable shuffling of contacts when unit testing the modem
 plugin.

---
 .../src/net/sf/briar/plugins/modem/ModemPlugin.java   |  7 +++++--
 .../sf/briar/plugins/modem/ModemPluginFactory.java    |  2 +-
 .../net/sf/briar/plugins/modem/ModemPluginTest.java   | 11 ++++++-----
 3 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/briar-core/src/net/sf/briar/plugins/modem/ModemPlugin.java b/briar-core/src/net/sf/briar/plugins/modem/ModemPlugin.java
index a464382076..5404a106f4 100644
--- a/briar-core/src/net/sf/briar/plugins/modem/ModemPlugin.java
+++ b/briar-core/src/net/sf/briar/plugins/modem/ModemPlugin.java
@@ -42,18 +42,21 @@ class ModemPlugin implements DuplexPlugin, Modem.Callback {
 	private final SerialPortList serialPortList;
 	private final DuplexPluginCallback callback;
 	private final long pollingInterval;
+	private final boolean shuffle; // Used to disable shuffling for testing
 
 	private volatile boolean running = false;
 	private volatile Modem modem = null;
 
 	ModemPlugin(@PluginExecutor Executor pluginExecutor,
 			ModemFactory modemFactory, SerialPortList serialPortList,
-			DuplexPluginCallback callback, long pollingInterval) {
+			DuplexPluginCallback callback, long pollingInterval,
+			boolean shuffle) {
 		this.pluginExecutor = pluginExecutor;
 		this.modemFactory = modemFactory;
 		this.serialPortList = serialPortList;
 		this.callback = callback;
 		this.pollingInterval = pollingInterval;
+		this.shuffle = shuffle;
 	}
 
 	public TransportId getId() {
@@ -138,7 +141,7 @@ class ModemPlugin implements DuplexPlugin, Modem.Callback {
 		Map<ContactId, TransportProperties> remote =
 				callback.getRemoteProperties();
 		List<ContactId> contacts = new ArrayList<ContactId>(remote.keySet());
-		Collections.shuffle(contacts);
+		if(shuffle) Collections.shuffle(contacts);
 		Iterator<ContactId> it = contacts.iterator();
 		while(it.hasNext() && running) {
 			ContactId c = it.next();
diff --git a/briar-core/src/net/sf/briar/plugins/modem/ModemPluginFactory.java b/briar-core/src/net/sf/briar/plugins/modem/ModemPluginFactory.java
index 3afdde1d2a..7b845fd801 100644
--- a/briar-core/src/net/sf/briar/plugins/modem/ModemPluginFactory.java
+++ b/briar-core/src/net/sf/briar/plugins/modem/ModemPluginFactory.java
@@ -34,6 +34,6 @@ public class ModemPluginFactory implements DuplexPluginFactory {
 		String enabled = callback.getConfig().get("enabled");
 		if(StringUtils.isNullOrEmpty(enabled)) return null;
 		return new ModemPlugin(pluginExecutor, modemFactory, serialPortList,
-				callback, POLLING_INTERVAL);
+				callback, POLLING_INTERVAL, true);
 	}
 }
diff --git a/briar-tests/src/net/sf/briar/plugins/modem/ModemPluginTest.java b/briar-tests/src/net/sf/briar/plugins/modem/ModemPluginTest.java
index 26bf721c3a..3de474d35c 100644
--- a/briar-tests/src/net/sf/briar/plugins/modem/ModemPluginTest.java
+++ b/briar-tests/src/net/sf/briar/plugins/modem/ModemPluginTest.java
@@ -37,7 +37,7 @@ public class ModemPluginTest extends BriarTestCase {
 		final SerialPortList serialPortList =
 				context.mock(SerialPortList.class);
 		final ModemPlugin plugin = new ModemPlugin(null, modemFactory,
-				serialPortList, null, 0L);
+				serialPortList, null, 0L, true);
 		final Modem modem = context.mock(Modem.class);
 		context.checking(new Expectations() {{
 			oneOf(serialPortList).getPortNames();
@@ -71,7 +71,7 @@ public class ModemPluginTest extends BriarTestCase {
 		final DuplexPluginCallback callback =
 				context.mock(DuplexPluginCallback.class);
 		final ModemPlugin plugin = new ModemPlugin(null, modemFactory,
-				serialPortList, callback, 0L);
+				serialPortList, callback, 0L, true);
 		final Modem modem = context.mock(Modem.class);
 		final TransportProperties local = new TransportProperties();
 		local.put("iso3166", ISO_1336);
@@ -112,7 +112,7 @@ public class ModemPluginTest extends BriarTestCase {
 		final DuplexPluginCallback callback =
 				context.mock(DuplexPluginCallback.class);
 		final ModemPlugin plugin = new ModemPlugin(null, modemFactory,
-				serialPortList, callback, 0L);
+				serialPortList, callback, 0L, true);
 		final Modem modem = context.mock(Modem.class);
 		final TransportProperties local = new TransportProperties();
 		local.put("iso3166", ISO_1336);
@@ -153,7 +153,7 @@ public class ModemPluginTest extends BriarTestCase {
 		final DuplexPluginCallback callback =
 				context.mock(DuplexPluginCallback.class);
 		final ModemPlugin plugin = new ModemPlugin(null, modemFactory,
-				serialPortList, callback, 0L);
+				serialPortList, callback, 0L, true);
 		final Modem modem = context.mock(Modem.class);
 		final TransportProperties local = new TransportProperties();
 		local.put("iso3166", ISO_1336);
@@ -202,8 +202,9 @@ public class ModemPluginTest extends BriarTestCase {
 				context.mock(SerialPortList.class);
 		final DuplexPluginCallback callback =
 				context.mock(DuplexPluginCallback.class);
+		// Disable shuffling for this test, it confuses jMock
 		final ModemPlugin plugin = new ModemPlugin(pluginExecutor, modemFactory,
-				serialPortList, callback, 0L);
+				serialPortList, callback, 0L, false);
 		final Modem modem = context.mock(Modem.class);
 		final TransportProperties local = new TransportProperties();
 		local.put("iso3166", ISO_1336);
-- 
GitLab