From bab6ec70f521e3811c22fc938d3f4a5074245911 Mon Sep 17 00:00:00 2001 From: Torsten Grote <t@grobox.de> Date: Fri, 21 Oct 2022 11:35:25 -0300 Subject: [PATCH] Factor out mailbox constants into a MailboxConfig so that we can change them for integration tests via the new ModularMailboxModule that now also includes the UrlProvider --- .../bramble/mailbox/MailboxApiCallerImpl.java | 11 +++++-- .../bramble/mailbox/MailboxConfig.java | 24 +++++++++++++++ .../bramble/mailbox/MailboxConfigImpl.java | 30 +++++++++++++++++++ ...rModule.java => ModularMailboxModule.java} | 6 +++- .../mailbox/TorReachabilityMonitorImpl.java | 5 +++- ...ntactExchangeIntegrationTestComponent.java | 4 +-- .../mailbox/MailboxApiCallerImplTest.java | 3 +- .../TorReachabilityMonitorImplTest.java | 3 +- ...emovableDriveIntegrationTestComponent.java | 4 +-- .../sync/SyncIntegrationTestComponent.java | 4 +-- .../test/BrambleIntegrationTestComponent.java | 4 +-- .../TransportKeyAgreementTestComponent.java | 4 +-- .../bramble/BrambleJavaModule.java | 4 +-- .../BrambleJavaIntegrationTestComponent.java | 4 +-- .../briar/android/BriarUiTestComponent.java | 4 +-- .../briar/android/BriarUiTestComponent.java | 4 +-- .../briar/android/AndroidComponent.java | 4 +-- .../FeedManagerIntegrationTestComponent.java | 4 +-- .../IntroductionIntegrationTestComponent.java | 4 +-- .../MessageSizeIntegrationTestComponent.java | 4 +-- ...plexMessagingIntegrationTestComponent.java | 4 +-- .../test/BriarIntegrationTestComponent.java | 4 +-- .../mailbox/MailboxIntegrationTest.java | 20 ++++++------- .../MailboxIntegrationTestComponent.java | 2 +- .../mailbox/MailboxIntegrationTestUtils.java | 2 +- .../mailbox/TestMailboxConfigImpl.java | 30 +++++++++++++++++++ ...ule.java => TestModularMailboxModule.java} | 7 ++++- 27 files changed, 152 insertions(+), 51 deletions(-) create mode 100644 bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxConfig.java create mode 100644 bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxConfigImpl.java rename bramble-core/src/main/java/org/briarproject/bramble/mailbox/{UrlConverterModule.java => ModularMailboxModule.java} (58%) create mode 100644 mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/TestMailboxConfigImpl.java rename mailbox-integration-tests/src/test/java/org/briarproject/bramble/mailbox/{TestUrlConverterModule.java => TestModularMailboxModule.java} (72%) 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 ce08b2f252..368c7ed7c6 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 0000000000..7f03dff6dd --- /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 0000000000..fa6a1f528b --- /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 cc9d446987..8ddbd78246 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 359e704605..20afebe30f 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 becb74db81..f01e365f1d 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 2612fe16ab..b625a94a8e 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 032095cd6b..547041a1f2 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 59435bdb0f..a353f6fcbe 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 d6571298e3..8a4cda6548 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 db5ef337be..9544d7e9bf 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 88a4747a21..64dfa6f2ca 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 001c44d634..d627025ab6 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 8003bb7e55..3f47a3541c 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 6216e241a2..df1d043c34 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 a12e480d23..e597363786 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 c1ec805a62..468782cd49 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 fe4afa241c..896df814ab 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 69f7bdc4d1..f054a55cb3 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 6b4083adef..c01400b820 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 e3498608dd..f929bab690 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 a2486c3470..c2010c3458 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 34cb73948b..02fa6bfc99 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 278fa75fe6..7ead8faccc 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 9fd708fcda..bcea13ea36 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 0000000000..e2744913cf --- /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 a47ac069a2..22e001bae8 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; -- GitLab