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 a4643820766e61ac95c137cf1ae2d181e883e572..5404a106f4749db200966f8b5f12fad90e17453c 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 3afdde1d2a24e81693817846e5eb3adeb1fb6b83..7b845fd801031bd34d0518dd328081b9e80a2ab9 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 26bf721c3a2c6cb4930db998aec9733aeae5ab1c..3de474d35cbe8fafa66773492f706a38ba1437a4 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);