mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-17 05:09:53 +01:00
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:
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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) {
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user