diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApiCallerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApiCallerImpl.java index ce08b2f2522019587ba56132ed6e990334c9abdf..368c7ed7c67647d315ac0bbd58b1bbce72976d9d 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApiCallerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApiCallerImpl.java @@ -20,12 +20,15 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS; class MailboxApiCallerImpl implements MailboxApiCaller { private final TaskScheduler taskScheduler; + private final MailboxConfig mailboxConfig; private final Executor ioExecutor; @Inject MailboxApiCallerImpl(TaskScheduler taskScheduler, + MailboxConfig mailboxConfig, @IoExecutor Executor ioExecutor) { this.taskScheduler = taskScheduler; + this.mailboxConfig = mailboxConfig; this.ioExecutor = ioExecutor; } @@ -49,7 +52,8 @@ class MailboxApiCallerImpl implements MailboxApiCaller { private boolean cancelled = false; @GuardedBy("lock") - private long retryIntervalMs = MIN_RETRY_INTERVAL_MS; + private long retryIntervalMs = + mailboxConfig.getApiCallerMinRetryInterval(); private Task(ApiCall apiCall) { this.apiCall = apiCall; @@ -74,8 +78,9 @@ class MailboxApiCallerImpl implements MailboxApiCaller { scheduledTask = taskScheduler.schedule(this::callApi, ioExecutor, retryIntervalMs, MILLISECONDS); // Increase the retry interval each time we retry - retryIntervalMs = - min(MAX_RETRY_INTERVAL_MS, retryIntervalMs * 2); + retryIntervalMs = min( + mailboxConfig.getApiCallerMaxRetryInterval(), + retryIntervalMs * 2); } } else { synchronized (lock) { diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxConfig.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..7f03dff6dd35712799377a1243b4a4bc80b52fb3 --- /dev/null +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxConfig.java @@ -0,0 +1,24 @@ +package org.briarproject.bramble.mailbox; + +import org.briarproject.bramble.api.plugin.Plugin; + +interface MailboxConfig { + + /** + * The minimum interval between API call retries in milliseconds. + */ + long getApiCallerMinRetryInterval(); + + /** + * The maximum interval between API call retries in milliseconds. + */ + long getApiCallerMaxRetryInterval(); + + /** + * How long (in milliseconds) the Tor plugin needs to be continuously + * {@link Plugin.State#ACTIVE active} before we assume our contacts can + * reach our hidden service. + */ + long getTorReachabilityPeriod(); + +} diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxConfigImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxConfigImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..fa6a1f528b9357fd973af5cdac763af26b69f95d --- /dev/null +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxConfigImpl.java @@ -0,0 +1,30 @@ +package org.briarproject.bramble.mailbox; + +import org.briarproject.nullsafety.NotNullByDefault; + +import javax.annotation.concurrent.Immutable; +import javax.inject.Inject; + +@Immutable +@NotNullByDefault +class MailboxConfigImpl implements MailboxConfig { + + @Inject + MailboxConfigImpl() { + } + + @Override + public long getApiCallerMinRetryInterval() { + return MailboxApiCaller.MIN_RETRY_INTERVAL_MS; + } + + @Override + public long getApiCallerMaxRetryInterval() { + return MailboxApiCaller.MAX_RETRY_INTERVAL_MS; + } + + @Override + public long getTorReachabilityPeriod() { + return TorReachabilityMonitor.REACHABILITY_PERIOD_MS; + } +} diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/UrlConverterModule.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ModularMailboxModule.java similarity index 58% rename from bramble-core/src/main/java/org/briarproject/bramble/mailbox/UrlConverterModule.java rename to bramble-core/src/main/java/org/briarproject/bramble/mailbox/ModularMailboxModule.java index cc9d4469875b2674696a0f6e56dd8d3ae32be79d..8ddbd782466cb56cc60ee3edf9793ec4b40cfdab 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/UrlConverterModule.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ModularMailboxModule.java @@ -4,7 +4,11 @@ import dagger.Module; import dagger.Provides; @Module -public class UrlConverterModule { +public class ModularMailboxModule { + @Provides + MailboxConfig provideMailboxConfig(MailboxConfigImpl mailboxConfig) { + return mailboxConfig; + } @Provides UrlConverter provideUrlConverter(UrlConverterImpl urlConverter) { diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/TorReachabilityMonitorImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/TorReachabilityMonitorImpl.java index 359e70460538cc8eb0fb29ad8bad8d439ed7feea..20afebe30f2862b230d66c3bc7e175b81f5e7dc2 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/TorReachabilityMonitorImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/TorReachabilityMonitorImpl.java @@ -32,6 +32,7 @@ class TorReachabilityMonitorImpl private final Executor ioExecutor; private final TaskScheduler taskScheduler; + private final MailboxConfig mailboxConfig; private final PluginManager pluginManager; private final EventBus eventBus; private final Object lock = new Object(); @@ -50,10 +51,12 @@ class TorReachabilityMonitorImpl TorReachabilityMonitorImpl( @IoExecutor Executor ioExecutor, TaskScheduler taskScheduler, + MailboxConfig mailboxConfig, PluginManager pluginManager, EventBus eventBus) { this.ioExecutor = ioExecutor; this.taskScheduler = taskScheduler; + this.mailboxConfig = mailboxConfig; this.pluginManager = pluginManager; this.eventBus = eventBus; } @@ -110,7 +113,7 @@ class TorReachabilityMonitorImpl synchronized (lock) { if (destroyed || task != null) return; task = taskScheduler.schedule(this::onTorReachable, ioExecutor, - REACHABILITY_PERIOD_MS, MILLISECONDS); + mailboxConfig.getTorReachabilityPeriod(), MILLISECONDS); } } diff --git a/bramble-core/src/test/java/org/briarproject/bramble/contact/ContactExchangeIntegrationTestComponent.java b/bramble-core/src/test/java/org/briarproject/bramble/contact/ContactExchangeIntegrationTestComponent.java index becb74db811a8b8cf2b57b0b656bf7fecb85c0ed..f01e365f1dda5f503d0a9ab8ffcf239c0888a08b 100644 --- a/bramble-core/src/test/java/org/briarproject/bramble/contact/ContactExchangeIntegrationTestComponent.java +++ b/bramble-core/src/test/java/org/briarproject/bramble/contact/ContactExchangeIntegrationTestComponent.java @@ -9,7 +9,7 @@ import org.briarproject.bramble.api.event.EventBus; import org.briarproject.bramble.api.identity.IdentityManager; import org.briarproject.bramble.api.lifecycle.IoExecutor; import org.briarproject.bramble.api.lifecycle.LifecycleManager; -import org.briarproject.bramble.mailbox.UrlConverterModule; +import org.briarproject.bramble.mailbox.ModularMailboxModule; import org.briarproject.bramble.test.BrambleCoreIntegrationTestModule; import org.briarproject.bramble.test.TestDnsModule; import org.briarproject.bramble.test.TestPluginConfigModule; @@ -25,7 +25,7 @@ import dagger.Component; @Component(modules = { BrambleCoreIntegrationTestModule.class, BrambleCoreModule.class, - UrlConverterModule.class, + ModularMailboxModule.class, TestDnsModule.class, TestSocksModule.class, TestPluginConfigModule.class, diff --git a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxApiCallerImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxApiCallerImplTest.java index 2612fe16abcbc21aaf8beddf19bdf5f411d77f64..b625a94a8e65e95ced4e593da5f63e5ac754af1e 100644 --- a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxApiCallerImplTest.java +++ b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxApiCallerImplTest.java @@ -21,12 +21,13 @@ public class MailboxApiCallerImplTest extends BrambleMockTestCase { private final TaskScheduler taskScheduler = context.mock(TaskScheduler.class); + private final MailboxConfig mailboxConfig = new MailboxConfigImpl(); private final Executor ioExecutor = context.mock(Executor.class); private final ApiCall apiCall = context.mock(ApiCall.class); private final Cancellable scheduledTask = context.mock(Cancellable.class); private final MailboxApiCallerImpl caller = - new MailboxApiCallerImpl(taskScheduler, ioExecutor); + new MailboxApiCallerImpl(taskScheduler, mailboxConfig, ioExecutor); @Test public void testSubmitsTaskImmediately() { diff --git a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/TorReachabilityMonitorImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/TorReachabilityMonitorImplTest.java index 032095cd6bd798ab4246bf7df48fe94de5bb5b51..547041a1f2538a22c13ce040f46c3aa62bb9e163 100644 --- a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/TorReachabilityMonitorImplTest.java +++ b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/TorReachabilityMonitorImplTest.java @@ -29,6 +29,7 @@ public class TorReachabilityMonitorImplTest extends BrambleMockTestCase { private final Executor ioExecutor = context.mock(Executor.class); private final TaskScheduler taskScheduler = context.mock(TaskScheduler.class); + private final MailboxConfig mailboxConfig = new MailboxConfigImpl(); private final PluginManager pluginManager = context.mock(PluginManager.class); private final EventBus eventBus = context.mock(EventBus.class); @@ -39,7 +40,7 @@ public class TorReachabilityMonitorImplTest extends BrambleMockTestCase { private final TorReachabilityMonitorImpl monitor = new TorReachabilityMonitorImpl(ioExecutor, taskScheduler, - pluginManager, eventBus); + mailboxConfig, pluginManager, eventBus); @Test public void testSchedulesTaskWhenStartedIfTorIsActive() { diff --git a/bramble-core/src/test/java/org/briarproject/bramble/plugin/file/RemovableDriveIntegrationTestComponent.java b/bramble-core/src/test/java/org/briarproject/bramble/plugin/file/RemovableDriveIntegrationTestComponent.java index 59435bdb0fe248beb76a0acf6c77868aa8e0ea0a..a353f6fcbe73d57627ec7edc5e13e36b19569bfb 100644 --- a/bramble-core/src/test/java/org/briarproject/bramble/plugin/file/RemovableDriveIntegrationTestComponent.java +++ b/bramble-core/src/test/java/org/briarproject/bramble/plugin/file/RemovableDriveIntegrationTestComponent.java @@ -9,7 +9,7 @@ import org.briarproject.bramble.api.lifecycle.LifecycleManager; import org.briarproject.bramble.api.plugin.file.RemovableDriveManager; import org.briarproject.bramble.battery.DefaultBatteryManagerModule; import org.briarproject.bramble.event.DefaultEventExecutorModule; -import org.briarproject.bramble.mailbox.UrlConverterModule; +import org.briarproject.bramble.mailbox.ModularMailboxModule; import org.briarproject.bramble.system.DefaultWakefulIoExecutorModule; import org.briarproject.bramble.system.TimeTravelModule; import org.briarproject.bramble.test.TestDatabaseConfigModule; @@ -35,7 +35,7 @@ import dagger.Component; TestMailboxDirectoryModule.class, RemovableDriveIntegrationTestModule.class, RemovableDriveModule.class, - UrlConverterModule.class, + ModularMailboxModule.class, TestSecureRandomModule.class, TimeTravelModule.class, TestSocksModule.class, diff --git a/bramble-core/src/test/java/org/briarproject/bramble/sync/SyncIntegrationTestComponent.java b/bramble-core/src/test/java/org/briarproject/bramble/sync/SyncIntegrationTestComponent.java index d6571298e3af75d67320e4bed974a848d14216a4..8a4cda6548753b2020e210c6885e986ae0d87539 100644 --- a/bramble-core/src/test/java/org/briarproject/bramble/sync/SyncIntegrationTestComponent.java +++ b/bramble-core/src/test/java/org/briarproject/bramble/sync/SyncIntegrationTestComponent.java @@ -2,7 +2,7 @@ package org.briarproject.bramble.sync; import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons; import org.briarproject.bramble.BrambleCoreModule; -import org.briarproject.bramble.mailbox.UrlConverterModule; +import org.briarproject.bramble.mailbox.ModularMailboxModule; import org.briarproject.bramble.test.BrambleCoreIntegrationTestModule; import org.briarproject.bramble.test.TestDnsModule; import org.briarproject.bramble.test.TestPluginConfigModule; @@ -16,7 +16,7 @@ import dagger.Component; @Component(modules = { BrambleCoreIntegrationTestModule.class, BrambleCoreModule.class, - UrlConverterModule.class, + ModularMailboxModule.class, TestDnsModule.class, TestSocksModule.class, TestPluginConfigModule.class, diff --git a/bramble-core/src/test/java/org/briarproject/bramble/test/BrambleIntegrationTestComponent.java b/bramble-core/src/test/java/org/briarproject/bramble/test/BrambleIntegrationTestComponent.java index db5ef337be3c0d30d1bf5a109aec60cfc4082acc..9544d7e9bfc732405c9d447737cb5cf5d7d88f0e 100644 --- a/bramble-core/src/test/java/org/briarproject/bramble/test/BrambleIntegrationTestComponent.java +++ b/bramble-core/src/test/java/org/briarproject/bramble/test/BrambleIntegrationTestComponent.java @@ -6,7 +6,7 @@ import org.briarproject.bramble.api.client.ClientHelper; import org.briarproject.bramble.api.connection.ConnectionManager; import org.briarproject.bramble.api.event.EventBus; import org.briarproject.bramble.api.identity.IdentityManager; -import org.briarproject.bramble.mailbox.UrlConverterModule; +import org.briarproject.bramble.mailbox.ModularMailboxModule; import javax.inject.Singleton; @@ -16,7 +16,7 @@ import dagger.Component; @Component(modules = { BrambleCoreIntegrationTestModule.class, BrambleCoreModule.class, - UrlConverterModule.class, + ModularMailboxModule.class, TestDnsModule.class, TestSocksModule.class, TestPluginConfigModule.class, diff --git a/bramble-core/src/test/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementTestComponent.java b/bramble-core/src/test/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementTestComponent.java index 88a4747a2137d4479eb904e905c9a5e8fd835452..64dfa6f2caa542555a820f90c750337437b5efa9 100644 --- a/bramble-core/src/test/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementTestComponent.java +++ b/bramble-core/src/test/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementTestComponent.java @@ -7,7 +7,7 @@ import org.briarproject.bramble.api.db.DatabaseComponent; import org.briarproject.bramble.api.lifecycle.LifecycleManager; import org.briarproject.bramble.api.properties.TransportPropertyManager; import org.briarproject.bramble.api.transport.KeyManager; -import org.briarproject.bramble.mailbox.UrlConverterModule; +import org.briarproject.bramble.mailbox.ModularMailboxModule; import org.briarproject.bramble.test.BrambleCoreIntegrationTestModule; import org.briarproject.bramble.test.BrambleIntegrationTestComponent; import org.briarproject.bramble.test.TestDnsModule; @@ -22,7 +22,7 @@ import dagger.Component; @Component(modules = { BrambleCoreIntegrationTestModule.class, BrambleCoreModule.class, - UrlConverterModule.class, + ModularMailboxModule.class, TestDnsModule.class, TestSocksModule.class, TestPluginConfigModule.class, diff --git a/bramble-java/src/main/java/org/briarproject/bramble/BrambleJavaModule.java b/bramble-java/src/main/java/org/briarproject/bramble/BrambleJavaModule.java index 001c44d634f367ec42a3b0dd13abf417a39d24b0..d627025ab616d509d852161c06c880bf27d26a77 100644 --- a/bramble-java/src/main/java/org/briarproject/bramble/BrambleJavaModule.java +++ b/bramble-java/src/main/java/org/briarproject/bramble/BrambleJavaModule.java @@ -1,7 +1,7 @@ package org.briarproject.bramble; import org.briarproject.bramble.io.DnsModule; -import org.briarproject.bramble.mailbox.UrlConverterModule; +import org.briarproject.bramble.mailbox.ModularMailboxModule; import org.briarproject.bramble.network.JavaNetworkModule; import org.briarproject.bramble.plugin.tor.CircumventionModule; import org.briarproject.bramble.socks.SocksModule; @@ -14,7 +14,7 @@ import dagger.Module; DnsModule.class, JavaNetworkModule.class, JavaSystemModule.class, - UrlConverterModule.class, + ModularMailboxModule.class, SocksModule.class }) public class BrambleJavaModule { diff --git a/bramble-java/src/test/java/org/briarproject/bramble/test/BrambleJavaIntegrationTestComponent.java b/bramble-java/src/test/java/org/briarproject/bramble/test/BrambleJavaIntegrationTestComponent.java index 8003bb7e55dae1743be26e4b2bedf518b6395855..3f47a3541cf8bfab23440048b13777db29bf860b 100644 --- a/bramble-java/src/test/java/org/briarproject/bramble/test/BrambleJavaIntegrationTestComponent.java +++ b/bramble-java/src/test/java/org/briarproject/bramble/test/BrambleJavaIntegrationTestComponent.java @@ -3,7 +3,7 @@ package org.briarproject.bramble.test; import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons; import org.briarproject.bramble.BrambleCoreModule; import org.briarproject.bramble.BrambleJavaModule; -import org.briarproject.bramble.mailbox.UrlConverterModule; +import org.briarproject.bramble.mailbox.ModularMailboxModule; import org.briarproject.bramble.plugin.tor.BridgeTest; import org.briarproject.bramble.plugin.tor.CircumventionProvider; @@ -16,7 +16,7 @@ import dagger.Component; BrambleCoreIntegrationTestModule.class, BrambleCoreModule.class, BrambleJavaModule.class, - UrlConverterModule.class, + ModularMailboxModule.class, TestTorPortsModule.class, TestPluginConfigModule.class, }) diff --git a/briar-android/src/androidTestOfficial/java/org/briarproject/briar/android/BriarUiTestComponent.java b/briar-android/src/androidTestOfficial/java/org/briarproject/briar/android/BriarUiTestComponent.java index 6216e241a2a846ebbff311eac68ab30b4d073336..df1d043c34d4e285861a5119239f365130969f70 100644 --- a/briar-android/src/androidTestOfficial/java/org/briarproject/briar/android/BriarUiTestComponent.java +++ b/briar-android/src/androidTestOfficial/java/org/briarproject/briar/android/BriarUiTestComponent.java @@ -3,7 +3,7 @@ package org.briarproject.briar.android; import org.briarproject.bramble.BrambleAndroidModule; import org.briarproject.bramble.BrambleCoreModule; import org.briarproject.bramble.account.BriarAccountModule; -import org.briarproject.bramble.mailbox.UrlConverterModule; +import org.briarproject.bramble.mailbox.ModularMailboxModule; import org.briarproject.bramble.plugin.file.RemovableDriveModule; import org.briarproject.bramble.system.ClockModule; import org.briarproject.briar.BriarCoreModule; @@ -28,7 +28,7 @@ import dagger.Component; BrambleAndroidModule.class, BriarAccountModule.class, BrambleCoreModule.class, - UrlConverterModule.class + ModularMailboxModule.class }) public interface BriarUiTestComponent extends AndroidComponent { diff --git a/briar-android/src/androidTestScreenshot/java/org/briarproject/briar/android/BriarUiTestComponent.java b/briar-android/src/androidTestScreenshot/java/org/briarproject/briar/android/BriarUiTestComponent.java index a12e480d23d59457201b785aa2b95339fc093b12..e597363786151ffb0485c668b077f088d83b2242 100644 --- a/briar-android/src/androidTestScreenshot/java/org/briarproject/briar/android/BriarUiTestComponent.java +++ b/briar-android/src/androidTestScreenshot/java/org/briarproject/briar/android/BriarUiTestComponent.java @@ -3,7 +3,7 @@ package org.briarproject.briar.android; import org.briarproject.bramble.BrambleAndroidModule; import org.briarproject.bramble.BrambleCoreModule; import org.briarproject.bramble.account.BriarAccountModule; -import org.briarproject.bramble.mailbox.UrlConverterModule; +import org.briarproject.bramble.mailbox.ModularMailboxModule; import org.briarproject.bramble.plugin.file.RemovableDriveModule; import org.briarproject.bramble.system.ClockModule; import org.briarproject.briar.BriarCoreModule; @@ -27,7 +27,7 @@ import dagger.Component; BrambleAndroidModule.class, BriarAccountModule.class, BrambleCoreModule.class, - UrlConverterModule.class + ModularMailboxModule.class }) public interface BriarUiTestComponent extends AndroidComponent { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java b/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java index c1ec805a6220505c598174473449b3c3034f4d3f..468782cd495bd79397cb3e080033664c1bd0fbd2 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java @@ -28,7 +28,7 @@ import org.briarproject.bramble.api.system.AndroidExecutor; import org.briarproject.bramble.api.system.AndroidWakeLockManager; import org.briarproject.bramble.api.system.Clock; import org.briarproject.bramble.api.system.LocationUtils; -import org.briarproject.bramble.mailbox.UrlConverterModule; +import org.briarproject.bramble.mailbox.ModularMailboxModule; import org.briarproject.bramble.plugin.file.RemovableDriveModule; import org.briarproject.bramble.plugin.tor.CircumventionProvider; import org.briarproject.bramble.system.ClockModule; @@ -102,7 +102,7 @@ import dagger.Component; AttachmentModule.class, ClockModule.class, MediaModule.class, - UrlConverterModule.class, + ModularMailboxModule.class, RemovableDriveModule.class }) public interface AndroidComponent diff --git a/briar-core/src/test/java/org/briarproject/briar/feed/FeedManagerIntegrationTestComponent.java b/briar-core/src/test/java/org/briarproject/briar/feed/FeedManagerIntegrationTestComponent.java index fe4afa241cfac6197354ce131680a0d4a4127cbd..896df814abc2d6acf79e635a560f9981e3b7eca6 100644 --- a/briar-core/src/test/java/org/briarproject/briar/feed/FeedManagerIntegrationTestComponent.java +++ b/briar-core/src/test/java/org/briarproject/briar/feed/FeedManagerIntegrationTestComponent.java @@ -4,7 +4,7 @@ import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons; import org.briarproject.bramble.BrambleCoreModule; import org.briarproject.bramble.api.identity.IdentityManager; import org.briarproject.bramble.api.lifecycle.LifecycleManager; -import org.briarproject.bramble.mailbox.UrlConverterModule; +import org.briarproject.bramble.mailbox.ModularMailboxModule; import org.briarproject.bramble.test.BrambleCoreIntegrationTestModule; import org.briarproject.bramble.test.TestDnsModule; import org.briarproject.bramble.test.TestPluginConfigModule; @@ -29,7 +29,7 @@ import dagger.Component; BriarClientModule.class, FeedModule.class, IdentityModule.class, - UrlConverterModule.class, + ModularMailboxModule.class, TestDnsModule.class, TestSocksModule.class, TestPluginConfigModule.class, diff --git a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTestComponent.java b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTestComponent.java index 69f7bdc4d1a253453bee24725a9b61d40ef3b364..f054a55cb3c7605279f0fcf69caba0bbb08929ab 100644 --- a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTestComponent.java +++ b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTestComponent.java @@ -1,7 +1,7 @@ package org.briarproject.briar.introduction; import org.briarproject.bramble.BrambleCoreModule; -import org.briarproject.bramble.mailbox.UrlConverterModule; +import org.briarproject.bramble.mailbox.ModularMailboxModule; import org.briarproject.bramble.test.BrambleCoreIntegrationTestModule; import org.briarproject.bramble.test.TestDnsModule; import org.briarproject.bramble.test.TestPluginConfigModule; @@ -41,7 +41,7 @@ import dagger.Component; MessagingModule.class, PrivateGroupModule.class, SharingModule.class, - UrlConverterModule.class, + ModularMailboxModule.class, TestDnsModule.class, TestSocksModule.class, TestPluginConfigModule.class, diff --git a/briar-core/src/test/java/org/briarproject/briar/messaging/MessageSizeIntegrationTestComponent.java b/briar-core/src/test/java/org/briarproject/briar/messaging/MessageSizeIntegrationTestComponent.java index 6b4083adef945972385f5f658da36410c5a40bd1..c01400b8206e041713a4d315ee4be1f3a4da0d99 100644 --- a/briar-core/src/test/java/org/briarproject/briar/messaging/MessageSizeIntegrationTestComponent.java +++ b/briar-core/src/test/java/org/briarproject/briar/messaging/MessageSizeIntegrationTestComponent.java @@ -2,7 +2,7 @@ package org.briarproject.briar.messaging; import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons; import org.briarproject.bramble.BrambleCoreModule; -import org.briarproject.bramble.mailbox.UrlConverterModule; +import org.briarproject.bramble.mailbox.ModularMailboxModule; import org.briarproject.bramble.test.BrambleCoreIntegrationTestModule; import org.briarproject.bramble.test.TestDnsModule; import org.briarproject.bramble.test.TestPluginConfigModule; @@ -29,7 +29,7 @@ import dagger.Component; ForumModule.class, IdentityModule.class, MessagingModule.class, - UrlConverterModule.class, + ModularMailboxModule.class, TestDnsModule.class, TestSocksModule.class, TestPluginConfigModule.class, diff --git a/briar-core/src/test/java/org/briarproject/briar/messaging/SimplexMessagingIntegrationTestComponent.java b/briar-core/src/test/java/org/briarproject/briar/messaging/SimplexMessagingIntegrationTestComponent.java index e3498608dd18b0127640266f772ffb68d4fb26a0..f929bab690aa355c811665caa16d11f4b88a83a2 100644 --- a/briar-core/src/test/java/org/briarproject/briar/messaging/SimplexMessagingIntegrationTestComponent.java +++ b/briar-core/src/test/java/org/briarproject/briar/messaging/SimplexMessagingIntegrationTestComponent.java @@ -7,7 +7,7 @@ import org.briarproject.bramble.api.contact.ContactManager; import org.briarproject.bramble.api.event.EventBus; import org.briarproject.bramble.api.identity.IdentityManager; import org.briarproject.bramble.api.lifecycle.LifecycleManager; -import org.briarproject.bramble.mailbox.UrlConverterModule; +import org.briarproject.bramble.mailbox.ModularMailboxModule; import org.briarproject.bramble.test.BrambleCoreIntegrationTestModule; import org.briarproject.bramble.test.TestDnsModule; import org.briarproject.bramble.test.TestPluginConfigModule; @@ -30,7 +30,7 @@ import dagger.Component; BriarClientModule.class, ConversationModule.class, MessagingModule.class, - UrlConverterModule.class, + ModularMailboxModule.class, TestDnsModule.class, TestSocksModule.class, TestPluginConfigModule.class, diff --git a/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java b/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java index a2486c3470255e8f2b7993f69912e990f47932e0..c2010c345894c5e3c903b9dc98225e5b183dce83 100644 --- a/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java +++ b/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java @@ -8,7 +8,7 @@ import org.briarproject.bramble.api.identity.AuthorFactory; import org.briarproject.bramble.api.lifecycle.LifecycleManager; import org.briarproject.bramble.api.properties.TransportPropertyManager; import org.briarproject.bramble.api.system.Clock; -import org.briarproject.bramble.mailbox.UrlConverterModule; +import org.briarproject.bramble.mailbox.ModularMailboxModule; import org.briarproject.bramble.test.BrambleCoreIntegrationTestModule; import org.briarproject.bramble.test.BrambleIntegrationTestComponent; import org.briarproject.bramble.test.TestDnsModule; @@ -66,7 +66,7 @@ import dagger.Component; MessagingModule.class, PrivateGroupModule.class, SharingModule.class, - UrlConverterModule.class, + ModularMailboxModule.class, TestDnsModule.class, TestSocksModule.class, TestPluginConfigModule.class, diff --git a/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/MailboxIntegrationTest.java b/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/MailboxIntegrationTest.java index 34cb73948b60c9e725da16c9133a72eeea79c70d..02fa6bfc9934d542f7d3263d10b574209ba1c5ce 100644 --- a/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/MailboxIntegrationTest.java +++ b/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/MailboxIntegrationTest.java @@ -21,7 +21,8 @@ public class MailboxIntegrationTest extends AbstractMailboxIntegrationTest { // c1 one pairs the mailbox MailboxProperties props1 = pair(c1, mailbox); - // Check for number of contacts on mailbox via API every 100ms + // Check for number of contacts on mailbox via API every 100ms. + // This should be quick and will succeed with first call. retryUntilSuccessOrTimeout(1_000, 100, () -> { Collection<ContactId> contacts = api.getContacts(props1); return contacts.size() == 1; @@ -39,20 +40,17 @@ public class MailboxIntegrationTest extends AbstractMailboxIntegrationTest { // send message and wait for it to arrive via mailbox sendMessage(c1, contact2From1.getId(), "test"); - // restart Tor for c1 to cause an immediate upload - // and wait until file arrived on mailbox - restartTor(c1); - retryUntilSuccessOrTimeout(5_000, 100, () -> { + // wait until file arrived on mailbox + retryUntilSuccessOrTimeout(5_000, 500, () -> { List<MailboxFile> files = api.getFiles(props2, props2.getInboxId()); - return files.size() > 0; + return files.size() > 1; }); - // restart Tor for c2 to cause an immediate download - // and wait for message to arrive - restartTor(c2); - awaitPendingMessageDelivery(1, 5_000); + // wait for message to arrive + // this might require 2nd download cycle after Tor reachability period + awaitPendingMessageDelivery(1); - // private message arrived for c2 + // assert that private message arrived for c2 int size = getFromDb(c2, txn -> c2.getMessagingManager() .getMessageHeaders(txn, contact1From2.getId()).size()); assertEquals(1, size); diff --git a/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/MailboxIntegrationTestComponent.java b/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/MailboxIntegrationTestComponent.java index 278fa75fe6e0f32f7d904f52923359ee9e46aae4..7ead8faccc221c7b53886e1324505a33de8f01a0 100644 --- a/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/MailboxIntegrationTestComponent.java +++ b/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/MailboxIntegrationTestComponent.java @@ -24,7 +24,7 @@ import dagger.Component; BrambleCoreIntegrationTestModule.class, BrambleCoreModule.class, BriarCoreModule.class, - TestUrlConverterModule.class, + TestModularMailboxModule.class, MailboxTestPluginConfigModule.class, TestSocksModule.class, TestDnsModule.class, diff --git a/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/MailboxIntegrationTestUtils.java b/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/MailboxIntegrationTestUtils.java index 9fd708fcda03d73cbd123a477a8e6d53c1be645b..bcea13ea363ddc4c4830879724ab455f842bd056 100644 --- a/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/MailboxIntegrationTestUtils.java +++ b/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/MailboxIntegrationTestUtils.java @@ -4,7 +4,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import static java.lang.System.currentTimeMillis; import static org.briarproject.bramble.mailbox.MailboxTestUtils.createHttpClientProvider; -import static org.briarproject.bramble.mailbox.TestUrlConverterModule.urlConverter; +import static org.briarproject.bramble.mailbox.TestModularMailboxModule.urlConverter; import static org.junit.Assert.fail; class MailboxIntegrationTestUtils { diff --git a/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/TestMailboxConfigImpl.java b/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/TestMailboxConfigImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..e2744913cfd6321e081cdca2ac764478f72099de --- /dev/null +++ b/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/TestMailboxConfigImpl.java @@ -0,0 +1,30 @@ +package org.briarproject.bramble.mailbox; + +import org.briarproject.nullsafety.NotNullByDefault; + +import javax.annotation.concurrent.Immutable; +import javax.inject.Inject; + +@Immutable +@NotNullByDefault +class TestMailboxConfigImpl implements MailboxConfig { + + @Inject + TestMailboxConfigImpl() { + } + + @Override + public long getApiCallerMinRetryInterval() { + return 1000; // MailboxApiCaller.MIN_RETRY_INTERVAL_MS; + } + + @Override + public long getApiCallerMaxRetryInterval() { + return 2000; // MailboxApiCaller.MAX_RETRY_INTERVAL_MS; + } + + @Override + public long getTorReachabilityPeriod() { + return 5000; // TorReachabilityMonitor.REACHABILITY_PERIOD_MS; + } +} diff --git a/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/TestUrlConverterModule.java b/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/TestModularMailboxModule.java similarity index 72% rename from mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/TestUrlConverterModule.java rename to mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/TestModularMailboxModule.java index a47ac069a2b53da5f7364f208cd860390e479b97..22e001bae8d17375c2eeedc7f573e26b207c92f4 100644 --- a/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/TestUrlConverterModule.java +++ b/mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/TestModularMailboxModule.java @@ -9,7 +9,12 @@ import static org.briarproject.bramble.mailbox.AbstractMailboxIntegrationTest.UR @Module @NotNullByDefault -class TestUrlConverterModule { +class TestModularMailboxModule { + + @Provides + MailboxConfig provideMailboxConfig(TestMailboxConfigImpl mailboxConfig) { + return mailboxConfig; + } static UrlConverter urlConverter = onion -> URL_BASE;