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
This commit is contained in:
Torsten Grote
2022-10-21 11:35:25 -03:00
parent 28f770df89
commit bab6ec70f5
27 changed files with 152 additions and 51 deletions

View File

@@ -20,12 +20,15 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS;
class MailboxApiCallerImpl implements MailboxApiCaller { class MailboxApiCallerImpl implements MailboxApiCaller {
private final TaskScheduler taskScheduler; private final TaskScheduler taskScheduler;
private final MailboxConfig mailboxConfig;
private final Executor ioExecutor; private final Executor ioExecutor;
@Inject @Inject
MailboxApiCallerImpl(TaskScheduler taskScheduler, MailboxApiCallerImpl(TaskScheduler taskScheduler,
MailboxConfig mailboxConfig,
@IoExecutor Executor ioExecutor) { @IoExecutor Executor ioExecutor) {
this.taskScheduler = taskScheduler; this.taskScheduler = taskScheduler;
this.mailboxConfig = mailboxConfig;
this.ioExecutor = ioExecutor; this.ioExecutor = ioExecutor;
} }
@@ -49,7 +52,8 @@ class MailboxApiCallerImpl implements MailboxApiCaller {
private boolean cancelled = false; private boolean cancelled = false;
@GuardedBy("lock") @GuardedBy("lock")
private long retryIntervalMs = MIN_RETRY_INTERVAL_MS; private long retryIntervalMs =
mailboxConfig.getApiCallerMinRetryInterval();
private Task(ApiCall apiCall) { private Task(ApiCall apiCall) {
this.apiCall = apiCall; this.apiCall = apiCall;
@@ -74,8 +78,9 @@ class MailboxApiCallerImpl implements MailboxApiCaller {
scheduledTask = taskScheduler.schedule(this::callApi, scheduledTask = taskScheduler.schedule(this::callApi,
ioExecutor, retryIntervalMs, MILLISECONDS); ioExecutor, retryIntervalMs, MILLISECONDS);
// Increase the retry interval each time we retry // Increase the retry interval each time we retry
retryIntervalMs = retryIntervalMs = min(
min(MAX_RETRY_INTERVAL_MS, retryIntervalMs * 2); mailboxConfig.getApiCallerMaxRetryInterval(),
retryIntervalMs * 2);
} }
} else { } else {
synchronized (lock) { synchronized (lock) {

View File

@@ -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();
}

View File

@@ -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;
}
}

View File

@@ -4,7 +4,11 @@ import dagger.Module;
import dagger.Provides; import dagger.Provides;
@Module @Module
public class UrlConverterModule { public class ModularMailboxModule {
@Provides
MailboxConfig provideMailboxConfig(MailboxConfigImpl mailboxConfig) {
return mailboxConfig;
}
@Provides @Provides
UrlConverter provideUrlConverter(UrlConverterImpl urlConverter) { UrlConverter provideUrlConverter(UrlConverterImpl urlConverter) {

View File

@@ -32,6 +32,7 @@ class TorReachabilityMonitorImpl
private final Executor ioExecutor; private final Executor ioExecutor;
private final TaskScheduler taskScheduler; private final TaskScheduler taskScheduler;
private final MailboxConfig mailboxConfig;
private final PluginManager pluginManager; private final PluginManager pluginManager;
private final EventBus eventBus; private final EventBus eventBus;
private final Object lock = new Object(); private final Object lock = new Object();
@@ -50,10 +51,12 @@ class TorReachabilityMonitorImpl
TorReachabilityMonitorImpl( TorReachabilityMonitorImpl(
@IoExecutor Executor ioExecutor, @IoExecutor Executor ioExecutor,
TaskScheduler taskScheduler, TaskScheduler taskScheduler,
MailboxConfig mailboxConfig,
PluginManager pluginManager, PluginManager pluginManager,
EventBus eventBus) { EventBus eventBus) {
this.ioExecutor = ioExecutor; this.ioExecutor = ioExecutor;
this.taskScheduler = taskScheduler; this.taskScheduler = taskScheduler;
this.mailboxConfig = mailboxConfig;
this.pluginManager = pluginManager; this.pluginManager = pluginManager;
this.eventBus = eventBus; this.eventBus = eventBus;
} }
@@ -110,7 +113,7 @@ class TorReachabilityMonitorImpl
synchronized (lock) { synchronized (lock) {
if (destroyed || task != null) return; if (destroyed || task != null) return;
task = taskScheduler.schedule(this::onTorReachable, ioExecutor, task = taskScheduler.schedule(this::onTorReachable, ioExecutor,
REACHABILITY_PERIOD_MS, MILLISECONDS); mailboxConfig.getTorReachabilityPeriod(), MILLISECONDS);
} }
} }

View File

@@ -9,7 +9,7 @@ import org.briarproject.bramble.api.event.EventBus;
import org.briarproject.bramble.api.identity.IdentityManager; import org.briarproject.bramble.api.identity.IdentityManager;
import org.briarproject.bramble.api.lifecycle.IoExecutor; import org.briarproject.bramble.api.lifecycle.IoExecutor;
import org.briarproject.bramble.api.lifecycle.LifecycleManager; 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.BrambleCoreIntegrationTestModule;
import org.briarproject.bramble.test.TestDnsModule; import org.briarproject.bramble.test.TestDnsModule;
import org.briarproject.bramble.test.TestPluginConfigModule; import org.briarproject.bramble.test.TestPluginConfigModule;
@@ -25,7 +25,7 @@ import dagger.Component;
@Component(modules = { @Component(modules = {
BrambleCoreIntegrationTestModule.class, BrambleCoreIntegrationTestModule.class,
BrambleCoreModule.class, BrambleCoreModule.class,
UrlConverterModule.class, ModularMailboxModule.class,
TestDnsModule.class, TestDnsModule.class,
TestSocksModule.class, TestSocksModule.class,
TestPluginConfigModule.class, TestPluginConfigModule.class,

View File

@@ -21,12 +21,13 @@ public class MailboxApiCallerImplTest extends BrambleMockTestCase {
private final TaskScheduler taskScheduler = private final TaskScheduler taskScheduler =
context.mock(TaskScheduler.class); context.mock(TaskScheduler.class);
private final MailboxConfig mailboxConfig = new MailboxConfigImpl();
private final Executor ioExecutor = context.mock(Executor.class); private final Executor ioExecutor = context.mock(Executor.class);
private final ApiCall apiCall = context.mock(ApiCall.class); private final ApiCall apiCall = context.mock(ApiCall.class);
private final Cancellable scheduledTask = context.mock(Cancellable.class); private final Cancellable scheduledTask = context.mock(Cancellable.class);
private final MailboxApiCallerImpl caller = private final MailboxApiCallerImpl caller =
new MailboxApiCallerImpl(taskScheduler, ioExecutor); new MailboxApiCallerImpl(taskScheduler, mailboxConfig, ioExecutor);
@Test @Test
public void testSubmitsTaskImmediately() { public void testSubmitsTaskImmediately() {

View File

@@ -29,6 +29,7 @@ public class TorReachabilityMonitorImplTest extends BrambleMockTestCase {
private final Executor ioExecutor = context.mock(Executor.class); private final Executor ioExecutor = context.mock(Executor.class);
private final TaskScheduler taskScheduler = private final TaskScheduler taskScheduler =
context.mock(TaskScheduler.class); context.mock(TaskScheduler.class);
private final MailboxConfig mailboxConfig = new MailboxConfigImpl();
private final PluginManager pluginManager = private final PluginManager pluginManager =
context.mock(PluginManager.class); context.mock(PluginManager.class);
private final EventBus eventBus = context.mock(EventBus.class); private final EventBus eventBus = context.mock(EventBus.class);
@@ -39,7 +40,7 @@ public class TorReachabilityMonitorImplTest extends BrambleMockTestCase {
private final TorReachabilityMonitorImpl monitor = private final TorReachabilityMonitorImpl monitor =
new TorReachabilityMonitorImpl(ioExecutor, taskScheduler, new TorReachabilityMonitorImpl(ioExecutor, taskScheduler,
pluginManager, eventBus); mailboxConfig, pluginManager, eventBus);
@Test @Test
public void testSchedulesTaskWhenStartedIfTorIsActive() { public void testSchedulesTaskWhenStartedIfTorIsActive() {

View File

@@ -9,7 +9,7 @@ import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.plugin.file.RemovableDriveManager; import org.briarproject.bramble.api.plugin.file.RemovableDriveManager;
import org.briarproject.bramble.battery.DefaultBatteryManagerModule; import org.briarproject.bramble.battery.DefaultBatteryManagerModule;
import org.briarproject.bramble.event.DefaultEventExecutorModule; 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.DefaultWakefulIoExecutorModule;
import org.briarproject.bramble.system.TimeTravelModule; import org.briarproject.bramble.system.TimeTravelModule;
import org.briarproject.bramble.test.TestDatabaseConfigModule; import org.briarproject.bramble.test.TestDatabaseConfigModule;
@@ -35,7 +35,7 @@ import dagger.Component;
TestMailboxDirectoryModule.class, TestMailboxDirectoryModule.class,
RemovableDriveIntegrationTestModule.class, RemovableDriveIntegrationTestModule.class,
RemovableDriveModule.class, RemovableDriveModule.class,
UrlConverterModule.class, ModularMailboxModule.class,
TestSecureRandomModule.class, TestSecureRandomModule.class,
TimeTravelModule.class, TimeTravelModule.class,
TestSocksModule.class, TestSocksModule.class,

View File

@@ -2,7 +2,7 @@ package org.briarproject.bramble.sync;
import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons; import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons;
import org.briarproject.bramble.BrambleCoreModule; 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.BrambleCoreIntegrationTestModule;
import org.briarproject.bramble.test.TestDnsModule; import org.briarproject.bramble.test.TestDnsModule;
import org.briarproject.bramble.test.TestPluginConfigModule; import org.briarproject.bramble.test.TestPluginConfigModule;
@@ -16,7 +16,7 @@ import dagger.Component;
@Component(modules = { @Component(modules = {
BrambleCoreIntegrationTestModule.class, BrambleCoreIntegrationTestModule.class,
BrambleCoreModule.class, BrambleCoreModule.class,
UrlConverterModule.class, ModularMailboxModule.class,
TestDnsModule.class, TestDnsModule.class,
TestSocksModule.class, TestSocksModule.class,
TestPluginConfigModule.class, TestPluginConfigModule.class,

View File

@@ -6,7 +6,7 @@ import org.briarproject.bramble.api.client.ClientHelper;
import org.briarproject.bramble.api.connection.ConnectionManager; import org.briarproject.bramble.api.connection.ConnectionManager;
import org.briarproject.bramble.api.event.EventBus; import org.briarproject.bramble.api.event.EventBus;
import org.briarproject.bramble.api.identity.IdentityManager; import org.briarproject.bramble.api.identity.IdentityManager;
import org.briarproject.bramble.mailbox.UrlConverterModule; import org.briarproject.bramble.mailbox.ModularMailboxModule;
import javax.inject.Singleton; import javax.inject.Singleton;
@@ -16,7 +16,7 @@ import dagger.Component;
@Component(modules = { @Component(modules = {
BrambleCoreIntegrationTestModule.class, BrambleCoreIntegrationTestModule.class,
BrambleCoreModule.class, BrambleCoreModule.class,
UrlConverterModule.class, ModularMailboxModule.class,
TestDnsModule.class, TestDnsModule.class,
TestSocksModule.class, TestSocksModule.class,
TestPluginConfigModule.class, TestPluginConfigModule.class,

View File

@@ -7,7 +7,7 @@ import org.briarproject.bramble.api.db.DatabaseComponent;
import org.briarproject.bramble.api.lifecycle.LifecycleManager; import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.properties.TransportPropertyManager; import org.briarproject.bramble.api.properties.TransportPropertyManager;
import org.briarproject.bramble.api.transport.KeyManager; 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.BrambleCoreIntegrationTestModule;
import org.briarproject.bramble.test.BrambleIntegrationTestComponent; import org.briarproject.bramble.test.BrambleIntegrationTestComponent;
import org.briarproject.bramble.test.TestDnsModule; import org.briarproject.bramble.test.TestDnsModule;
@@ -22,7 +22,7 @@ import dagger.Component;
@Component(modules = { @Component(modules = {
BrambleCoreIntegrationTestModule.class, BrambleCoreIntegrationTestModule.class,
BrambleCoreModule.class, BrambleCoreModule.class,
UrlConverterModule.class, ModularMailboxModule.class,
TestDnsModule.class, TestDnsModule.class,
TestSocksModule.class, TestSocksModule.class,
TestPluginConfigModule.class, TestPluginConfigModule.class,

View File

@@ -1,7 +1,7 @@
package org.briarproject.bramble; package org.briarproject.bramble;
import org.briarproject.bramble.io.DnsModule; 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.network.JavaNetworkModule;
import org.briarproject.bramble.plugin.tor.CircumventionModule; import org.briarproject.bramble.plugin.tor.CircumventionModule;
import org.briarproject.bramble.socks.SocksModule; import org.briarproject.bramble.socks.SocksModule;
@@ -14,7 +14,7 @@ import dagger.Module;
DnsModule.class, DnsModule.class,
JavaNetworkModule.class, JavaNetworkModule.class,
JavaSystemModule.class, JavaSystemModule.class,
UrlConverterModule.class, ModularMailboxModule.class,
SocksModule.class SocksModule.class
}) })
public class BrambleJavaModule { public class BrambleJavaModule {

View File

@@ -3,7 +3,7 @@ package org.briarproject.bramble.test;
import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons; import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons;
import org.briarproject.bramble.BrambleCoreModule; import org.briarproject.bramble.BrambleCoreModule;
import org.briarproject.bramble.BrambleJavaModule; 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.BridgeTest;
import org.briarproject.bramble.plugin.tor.CircumventionProvider; import org.briarproject.bramble.plugin.tor.CircumventionProvider;
@@ -16,7 +16,7 @@ import dagger.Component;
BrambleCoreIntegrationTestModule.class, BrambleCoreIntegrationTestModule.class,
BrambleCoreModule.class, BrambleCoreModule.class,
BrambleJavaModule.class, BrambleJavaModule.class,
UrlConverterModule.class, ModularMailboxModule.class,
TestTorPortsModule.class, TestTorPortsModule.class,
TestPluginConfigModule.class, TestPluginConfigModule.class,
}) })

View File

@@ -3,7 +3,7 @@ package org.briarproject.briar.android;
import org.briarproject.bramble.BrambleAndroidModule; import org.briarproject.bramble.BrambleAndroidModule;
import org.briarproject.bramble.BrambleCoreModule; import org.briarproject.bramble.BrambleCoreModule;
import org.briarproject.bramble.account.BriarAccountModule; 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.plugin.file.RemovableDriveModule;
import org.briarproject.bramble.system.ClockModule; import org.briarproject.bramble.system.ClockModule;
import org.briarproject.briar.BriarCoreModule; import org.briarproject.briar.BriarCoreModule;
@@ -28,7 +28,7 @@ import dagger.Component;
BrambleAndroidModule.class, BrambleAndroidModule.class,
BriarAccountModule.class, BriarAccountModule.class,
BrambleCoreModule.class, BrambleCoreModule.class,
UrlConverterModule.class ModularMailboxModule.class
}) })
public interface BriarUiTestComponent extends AndroidComponent { public interface BriarUiTestComponent extends AndroidComponent {

View File

@@ -3,7 +3,7 @@ package org.briarproject.briar.android;
import org.briarproject.bramble.BrambleAndroidModule; import org.briarproject.bramble.BrambleAndroidModule;
import org.briarproject.bramble.BrambleCoreModule; import org.briarproject.bramble.BrambleCoreModule;
import org.briarproject.bramble.account.BriarAccountModule; 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.plugin.file.RemovableDriveModule;
import org.briarproject.bramble.system.ClockModule; import org.briarproject.bramble.system.ClockModule;
import org.briarproject.briar.BriarCoreModule; import org.briarproject.briar.BriarCoreModule;
@@ -27,7 +27,7 @@ import dagger.Component;
BrambleAndroidModule.class, BrambleAndroidModule.class,
BriarAccountModule.class, BriarAccountModule.class,
BrambleCoreModule.class, BrambleCoreModule.class,
UrlConverterModule.class ModularMailboxModule.class
}) })
public interface BriarUiTestComponent extends AndroidComponent { public interface BriarUiTestComponent extends AndroidComponent {

View File

@@ -28,7 +28,7 @@ import org.briarproject.bramble.api.system.AndroidExecutor;
import org.briarproject.bramble.api.system.AndroidWakeLockManager; import org.briarproject.bramble.api.system.AndroidWakeLockManager;
import org.briarproject.bramble.api.system.Clock; import org.briarproject.bramble.api.system.Clock;
import org.briarproject.bramble.api.system.LocationUtils; 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.file.RemovableDriveModule;
import org.briarproject.bramble.plugin.tor.CircumventionProvider; import org.briarproject.bramble.plugin.tor.CircumventionProvider;
import org.briarproject.bramble.system.ClockModule; import org.briarproject.bramble.system.ClockModule;
@@ -102,7 +102,7 @@ import dagger.Component;
AttachmentModule.class, AttachmentModule.class,
ClockModule.class, ClockModule.class,
MediaModule.class, MediaModule.class,
UrlConverterModule.class, ModularMailboxModule.class,
RemovableDriveModule.class RemovableDriveModule.class
}) })
public interface AndroidComponent public interface AndroidComponent

View File

@@ -4,7 +4,7 @@ import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons;
import org.briarproject.bramble.BrambleCoreModule; import org.briarproject.bramble.BrambleCoreModule;
import org.briarproject.bramble.api.identity.IdentityManager; import org.briarproject.bramble.api.identity.IdentityManager;
import org.briarproject.bramble.api.lifecycle.LifecycleManager; 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.BrambleCoreIntegrationTestModule;
import org.briarproject.bramble.test.TestDnsModule; import org.briarproject.bramble.test.TestDnsModule;
import org.briarproject.bramble.test.TestPluginConfigModule; import org.briarproject.bramble.test.TestPluginConfigModule;
@@ -29,7 +29,7 @@ import dagger.Component;
BriarClientModule.class, BriarClientModule.class,
FeedModule.class, FeedModule.class,
IdentityModule.class, IdentityModule.class,
UrlConverterModule.class, ModularMailboxModule.class,
TestDnsModule.class, TestDnsModule.class,
TestSocksModule.class, TestSocksModule.class,
TestPluginConfigModule.class, TestPluginConfigModule.class,

View File

@@ -1,7 +1,7 @@
package org.briarproject.briar.introduction; package org.briarproject.briar.introduction;
import org.briarproject.bramble.BrambleCoreModule; 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.BrambleCoreIntegrationTestModule;
import org.briarproject.bramble.test.TestDnsModule; import org.briarproject.bramble.test.TestDnsModule;
import org.briarproject.bramble.test.TestPluginConfigModule; import org.briarproject.bramble.test.TestPluginConfigModule;
@@ -41,7 +41,7 @@ import dagger.Component;
MessagingModule.class, MessagingModule.class,
PrivateGroupModule.class, PrivateGroupModule.class,
SharingModule.class, SharingModule.class,
UrlConverterModule.class, ModularMailboxModule.class,
TestDnsModule.class, TestDnsModule.class,
TestSocksModule.class, TestSocksModule.class,
TestPluginConfigModule.class, TestPluginConfigModule.class,

View File

@@ -2,7 +2,7 @@ package org.briarproject.briar.messaging;
import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons; import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons;
import org.briarproject.bramble.BrambleCoreModule; 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.BrambleCoreIntegrationTestModule;
import org.briarproject.bramble.test.TestDnsModule; import org.briarproject.bramble.test.TestDnsModule;
import org.briarproject.bramble.test.TestPluginConfigModule; import org.briarproject.bramble.test.TestPluginConfigModule;
@@ -29,7 +29,7 @@ import dagger.Component;
ForumModule.class, ForumModule.class,
IdentityModule.class, IdentityModule.class,
MessagingModule.class, MessagingModule.class,
UrlConverterModule.class, ModularMailboxModule.class,
TestDnsModule.class, TestDnsModule.class,
TestSocksModule.class, TestSocksModule.class,
TestPluginConfigModule.class, TestPluginConfigModule.class,

View File

@@ -7,7 +7,7 @@ import org.briarproject.bramble.api.contact.ContactManager;
import org.briarproject.bramble.api.event.EventBus; import org.briarproject.bramble.api.event.EventBus;
import org.briarproject.bramble.api.identity.IdentityManager; import org.briarproject.bramble.api.identity.IdentityManager;
import org.briarproject.bramble.api.lifecycle.LifecycleManager; 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.BrambleCoreIntegrationTestModule;
import org.briarproject.bramble.test.TestDnsModule; import org.briarproject.bramble.test.TestDnsModule;
import org.briarproject.bramble.test.TestPluginConfigModule; import org.briarproject.bramble.test.TestPluginConfigModule;
@@ -30,7 +30,7 @@ import dagger.Component;
BriarClientModule.class, BriarClientModule.class,
ConversationModule.class, ConversationModule.class,
MessagingModule.class, MessagingModule.class,
UrlConverterModule.class, ModularMailboxModule.class,
TestDnsModule.class, TestDnsModule.class,
TestSocksModule.class, TestSocksModule.class,
TestPluginConfigModule.class, TestPluginConfigModule.class,

View File

@@ -8,7 +8,7 @@ import org.briarproject.bramble.api.identity.AuthorFactory;
import org.briarproject.bramble.api.lifecycle.LifecycleManager; import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.properties.TransportPropertyManager; import org.briarproject.bramble.api.properties.TransportPropertyManager;
import org.briarproject.bramble.api.system.Clock; 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.BrambleCoreIntegrationTestModule;
import org.briarproject.bramble.test.BrambleIntegrationTestComponent; import org.briarproject.bramble.test.BrambleIntegrationTestComponent;
import org.briarproject.bramble.test.TestDnsModule; import org.briarproject.bramble.test.TestDnsModule;
@@ -66,7 +66,7 @@ import dagger.Component;
MessagingModule.class, MessagingModule.class,
PrivateGroupModule.class, PrivateGroupModule.class,
SharingModule.class, SharingModule.class,
UrlConverterModule.class, ModularMailboxModule.class,
TestDnsModule.class, TestDnsModule.class,
TestSocksModule.class, TestSocksModule.class,
TestPluginConfigModule.class, TestPluginConfigModule.class,

View File

@@ -21,7 +21,8 @@ public class MailboxIntegrationTest extends AbstractMailboxIntegrationTest {
// c1 one pairs the mailbox // c1 one pairs the mailbox
MailboxProperties props1 = pair(c1, 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, () -> { retryUntilSuccessOrTimeout(1_000, 100, () -> {
Collection<ContactId> contacts = api.getContacts(props1); Collection<ContactId> contacts = api.getContacts(props1);
return contacts.size() == 1; return contacts.size() == 1;
@@ -39,20 +40,17 @@ public class MailboxIntegrationTest extends AbstractMailboxIntegrationTest {
// send message and wait for it to arrive via mailbox // send message and wait for it to arrive via mailbox
sendMessage(c1, contact2From1.getId(), "test"); sendMessage(c1, contact2From1.getId(), "test");
// restart Tor for c1 to cause an immediate upload // wait until file arrived on mailbox
// and wait until file arrived on mailbox retryUntilSuccessOrTimeout(5_000, 500, () -> {
restartTor(c1);
retryUntilSuccessOrTimeout(5_000, 100, () -> {
List<MailboxFile> files = api.getFiles(props2, props2.getInboxId()); 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 // wait for message to arrive
// and wait for message to arrive // this might require 2nd download cycle after Tor reachability period
restartTor(c2); awaitPendingMessageDelivery(1);
awaitPendingMessageDelivery(1, 5_000);
// private message arrived for c2 // assert that private message arrived for c2
int size = getFromDb(c2, txn -> c2.getMessagingManager() int size = getFromDb(c2, txn -> c2.getMessagingManager()
.getMessageHeaders(txn, contact1From2.getId()).size()); .getMessageHeaders(txn, contact1From2.getId()).size());
assertEquals(1, size); assertEquals(1, size);

View File

@@ -24,7 +24,7 @@ import dagger.Component;
BrambleCoreIntegrationTestModule.class, BrambleCoreIntegrationTestModule.class,
BrambleCoreModule.class, BrambleCoreModule.class,
BriarCoreModule.class, BriarCoreModule.class,
TestUrlConverterModule.class, TestModularMailboxModule.class,
MailboxTestPluginConfigModule.class, MailboxTestPluginConfigModule.class,
TestSocksModule.class, TestSocksModule.class,
TestDnsModule.class, TestDnsModule.class,

View File

@@ -4,7 +4,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
import static java.lang.System.currentTimeMillis; import static java.lang.System.currentTimeMillis;
import static org.briarproject.bramble.mailbox.MailboxTestUtils.createHttpClientProvider; 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; import static org.junit.Assert.fail;
class MailboxIntegrationTestUtils { class MailboxIntegrationTestUtils {

View File

@@ -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;
}
}

View File

@@ -9,7 +9,12 @@ import static org.briarproject.bramble.mailbox.AbstractMailboxIntegrationTest.UR
@Module @Module
@NotNullByDefault @NotNullByDefault
class TestUrlConverterModule { class TestModularMailboxModule {
@Provides
MailboxConfig provideMailboxConfig(TestMailboxConfigImpl mailboxConfig) {
return mailboxConfig;
}
static UrlConverter urlConverter = onion -> URL_BASE; static UrlConverter urlConverter = onion -> URL_BASE;