Allow Android and headless to use different task schedulers.

This commit is contained in:
akwizgran
2020-07-30 17:09:44 +01:00
parent 86641741a0
commit dfefb88b32
21 changed files with 95 additions and 54 deletions

View File

@@ -6,6 +6,7 @@ import org.briarproject.bramble.plugin.tor.CircumventionModule;
import org.briarproject.bramble.reporting.ReportingModule;
import org.briarproject.bramble.socks.SocksModule;
import org.briarproject.bramble.system.AndroidSystemModule;
import org.briarproject.bramble.system.DefaultTaskSchedulerModule;
import dagger.Module;
@@ -14,6 +15,7 @@ import dagger.Module;
AndroidNetworkModule.class,
AndroidSystemModule.class,
CircumventionModule.class,
DefaultTaskSchedulerModule.class,
ReportingModule.class,
SocksModule.class
})

View File

@@ -9,7 +9,6 @@ import org.briarproject.bramble.plugin.PluginModule;
import org.briarproject.bramble.properties.PropertiesModule;
import org.briarproject.bramble.rendezvous.RendezvousModule;
import org.briarproject.bramble.sync.validation.ValidationModule;
import org.briarproject.bramble.system.SystemModule;
import org.briarproject.bramble.transport.TransportModule;
import org.briarproject.bramble.versioning.VersioningModule;
@@ -31,8 +30,6 @@ public interface BrambleCoreEagerSingletons {
void inject(RendezvousModule.EagerSingletons init);
void inject(SystemModule.EagerSingletons init);
void inject(TransportModule.EagerSingletons init);
void inject(ValidationModule.EagerSingletons init);
@@ -50,7 +47,6 @@ public interface BrambleCoreEagerSingletons {
c.inject(new RendezvousModule.EagerSingletons());
c.inject(new PluginModule.EagerSingletons());
c.inject(new PropertiesModule.EagerSingletons());
c.inject(new SystemModule.EagerSingletons());
c.inject(new TransportModule.EagerSingletons());
c.inject(new ValidationModule.EagerSingletons());
c.inject(new VersioningModule.EagerSingletons());

View File

@@ -21,7 +21,7 @@ import org.briarproject.bramble.rendezvous.RendezvousModule;
import org.briarproject.bramble.settings.SettingsModule;
import org.briarproject.bramble.sync.SyncModule;
import org.briarproject.bramble.sync.validation.ValidationModule;
import org.briarproject.bramble.system.SystemModule;
import org.briarproject.bramble.system.ClockModule;
import org.briarproject.bramble.transport.TransportModule;
import org.briarproject.bramble.versioning.VersioningModule;
@@ -29,6 +29,7 @@ import dagger.Module;
@Module(includes = {
ClientModule.class,
ClockModule.class,
ConnectionModule.class,
ContactModule.class,
CryptoModule.class,
@@ -48,7 +49,6 @@ import dagger.Module;
RendezvousModule.class,
SettingsModule.class,
SyncModule.class,
SystemModule.class,
TransportModule.class,
ValidationModule.class,
VersioningModule.class

View File

@@ -0,0 +1,15 @@
package org.briarproject.bramble.system;
import org.briarproject.bramble.api.system.Clock;
import dagger.Module;
import dagger.Provides;
@Module
public class ClockModule {
@Provides
Clock provideClock() {
return new SystemClock();
}
}

View File

@@ -1,7 +1,6 @@
package org.briarproject.bramble.system;
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.system.Clock;
import org.briarproject.bramble.api.system.TaskScheduler;
import java.util.concurrent.RejectedExecutionHandler;
@@ -15,7 +14,7 @@ import dagger.Module;
import dagger.Provides;
@Module
public class SystemModule {
public class DefaultTaskSchedulerModule {
public static class EagerSingletons {
@Inject
@@ -24,18 +23,13 @@ public class SystemModule {
private final ScheduledExecutorService scheduledExecutorService;
public SystemModule() {
public DefaultTaskSchedulerModule() {
// Discard tasks that are submitted during shutdown
RejectedExecutionHandler policy =
new ScheduledThreadPoolExecutor.DiscardPolicy();
scheduledExecutorService = new ScheduledThreadPoolExecutor(1, policy);
}
@Provides
Clock provideClock() {
return new SystemClock();
}
@Provides
@Singleton
TaskScheduler provideTaskScheduler(LifecycleManager lifecycleManager) {

View File

@@ -0,0 +1,18 @@
package org.briarproject.bramble;
import org.briarproject.bramble.system.DefaultTaskSchedulerModule;
public interface BrambleCoreIntegrationTestEagerSingletons
extends BrambleCoreEagerSingletons {
void inject(DefaultTaskSchedulerModule.EagerSingletons init);
class Helper {
public static void injectEagerSingletons(
BrambleCoreIntegrationTestEagerSingletons c) {
BrambleCoreEagerSingletons.Helper.injectEagerSingletons(c);
c.inject(new DefaultTaskSchedulerModule.EagerSingletons());
}
}
}

View File

@@ -1,6 +1,6 @@
package org.briarproject.bramble.contact;
import org.briarproject.bramble.BrambleCoreEagerSingletons;
import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons;
import org.briarproject.bramble.api.Pair;
import org.briarproject.bramble.api.contact.Contact;
import org.briarproject.bramble.api.contact.ContactManager;
@@ -62,11 +62,13 @@ public class ContactExchangeIntegrationTest extends BrambleTestCase {
alice = DaggerContactExchangeIntegrationTestComponent.builder()
.testDatabaseConfigModule(
new TestDatabaseConfigModule(aliceDir)).build();
BrambleCoreEagerSingletons.Helper.injectEagerSingletons(alice);
BrambleCoreIntegrationTestEagerSingletons.Helper
.injectEagerSingletons(alice);
bob = DaggerContactExchangeIntegrationTestComponent.builder()
.testDatabaseConfigModule(new TestDatabaseConfigModule(bobDir))
.build();
BrambleCoreEagerSingletons.Helper.injectEagerSingletons(bob);
BrambleCoreIntegrationTestEagerSingletons.Helper
.injectEagerSingletons(bob);
// Set up the devices and get the identities
aliceIdentity = setUp(alice, "Alice");
bobIdentity = setUp(bob, "Bob");

View File

@@ -1,6 +1,6 @@
package org.briarproject.bramble.contact;
import org.briarproject.bramble.BrambleCoreEagerSingletons;
import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons;
import org.briarproject.bramble.BrambleCoreModule;
import org.briarproject.bramble.api.connection.ConnectionManager;
import org.briarproject.bramble.api.contact.ContactExchangeManager;
@@ -23,7 +23,7 @@ import dagger.Component;
BrambleCoreModule.class
})
interface ContactExchangeIntegrationTestComponent
extends BrambleCoreEagerSingletons {
extends BrambleCoreIntegrationTestEagerSingletons {
ConnectionManager getConnectionManager();

View File

@@ -1,6 +1,6 @@
package org.briarproject.bramble.sync;
import org.briarproject.bramble.BrambleCoreEagerSingletons;
import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons;
import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.crypto.SecretKey;
import org.briarproject.bramble.api.crypto.TransportCrypto;
@@ -73,7 +73,8 @@ public class SyncIntegrationTest extends BrambleTestCase {
SyncIntegrationTestComponent component =
DaggerSyncIntegrationTestComponent.builder().build();
BrambleCoreEagerSingletons.Helper.injectEagerSingletons(component);
BrambleCoreIntegrationTestEagerSingletons.Helper
.injectEagerSingletons(component);
component.inject(this);
contactId = getContactId();

View File

@@ -1,6 +1,6 @@
package org.briarproject.bramble.sync;
import org.briarproject.bramble.BrambleCoreEagerSingletons;
import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons;
import org.briarproject.bramble.BrambleCoreModule;
import org.briarproject.bramble.test.BrambleCoreIntegrationTestModule;
@@ -13,7 +13,8 @@ import dagger.Component;
BrambleCoreIntegrationTestModule.class,
BrambleCoreModule.class
})
interface SyncIntegrationTestComponent extends BrambleCoreEagerSingletons {
interface SyncIntegrationTestComponent extends
BrambleCoreIntegrationTestEagerSingletons {
void inject(SyncIntegrationTest testCase);
}

View File

@@ -3,6 +3,7 @@ package org.briarproject.bramble.test;
import org.briarproject.bramble.api.FeatureFlags;
import org.briarproject.bramble.battery.DefaultBatteryManagerModule;
import org.briarproject.bramble.event.DefaultEventExecutorModule;
import org.briarproject.bramble.system.DefaultTaskSchedulerModule;
import dagger.Module;
import dagger.Provides;
@@ -10,6 +11,7 @@ import dagger.Provides;
@Module(includes = {
DefaultBatteryManagerModule.class,
DefaultEventExecutorModule.class,
DefaultTaskSchedulerModule.class,
TestDatabaseConfigModule.class,
TestPluginConfigModule.class,
TestSecureRandomModule.class

View File

@@ -1,6 +1,6 @@
package org.briarproject.bramble.plugin.tor;
import org.briarproject.bramble.BrambleCoreEagerSingletons;
import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons;
import org.briarproject.bramble.api.battery.BatteryManager;
import org.briarproject.bramble.api.event.EventBus;
import org.briarproject.bramble.api.lifecycle.IoExecutor;
@@ -47,7 +47,8 @@ public class BridgeTest extends BrambleTestCase {
public static Iterable<String> data() {
BrambleJavaIntegrationTestComponent component =
DaggerBrambleJavaIntegrationTestComponent.builder().build();
BrambleCoreEagerSingletons.Helper.injectEagerSingletons(component);
BrambleCoreIntegrationTestEagerSingletons.Helper
.injectEagerSingletons(component);
return component.getCircumventionProvider().getBridges(false);
}
@@ -92,7 +93,8 @@ public class BridgeTest extends BrambleTestCase {
BrambleJavaIntegrationTestComponent component =
DaggerBrambleJavaIntegrationTestComponent.builder().build();
BrambleCoreEagerSingletons.Helper.injectEagerSingletons(component);
BrambleCoreIntegrationTestEagerSingletons.Helper
.injectEagerSingletons(component);
component.inject(this);
LocationUtils locationUtils = () -> "US";

View File

@@ -1,6 +1,6 @@
package org.briarproject.bramble.test;
import org.briarproject.bramble.BrambleCoreEagerSingletons;
import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons;
import org.briarproject.bramble.BrambleCoreModule;
import org.briarproject.bramble.BrambleJavaModule;
import org.briarproject.bramble.plugin.tor.BridgeTest;
@@ -17,7 +17,7 @@ import dagger.Component;
BrambleJavaModule.class
})
public interface BrambleJavaIntegrationTestComponent
extends BrambleCoreEagerSingletons {
extends BrambleCoreIntegrationTestEagerSingletons {
void inject(BridgeTest init);

View File

@@ -1,6 +1,6 @@
package org.briarproject.briar.feed;
import org.briarproject.bramble.BrambleCoreEagerSingletons;
import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons;
import org.briarproject.bramble.BrambleCoreModule;
import org.briarproject.bramble.api.identity.IdentityManager;
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
@@ -27,7 +27,7 @@ import dagger.Component;
TestSocksModule.class,
})
interface FeedManagerIntegrationTestComponent
extends BrambleCoreEagerSingletons {
extends BrambleCoreIntegrationTestEagerSingletons {
void inject(FeedManagerIntegrationTest testCase);
@@ -47,7 +47,8 @@ interface FeedManagerIntegrationTestComponent
public static void injectEagerSingletons(
FeedManagerIntegrationTestComponent c) {
BrambleCoreEagerSingletons.Helper.injectEagerSingletons(c);
BrambleCoreIntegrationTestEagerSingletons.Helper
.injectEagerSingletons(c);
c.inject(new BlogModule.EagerSingletons());
c.inject(new FeedModule.EagerSingletons());
}

View File

@@ -1,6 +1,6 @@
package org.briarproject.briar.messaging;
import org.briarproject.bramble.BrambleCoreEagerSingletons;
import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons;
import org.briarproject.bramble.BrambleCoreModule;
import org.briarproject.bramble.test.BrambleCoreIntegrationTestModule;
import org.briarproject.briar.client.BriarClientModule;
@@ -19,7 +19,7 @@ import dagger.Component;
MessagingModule.class
})
interface MessageSizeIntegrationTestComponent
extends BrambleCoreEagerSingletons {
extends BrambleCoreIntegrationTestEagerSingletons {
void inject(MessageSizeIntegrationTest testCase);
@@ -31,7 +31,8 @@ interface MessageSizeIntegrationTestComponent
public static void injectEagerSingletons(
MessageSizeIntegrationTestComponent c) {
BrambleCoreEagerSingletons.Helper.injectEagerSingletons(c);
BrambleCoreIntegrationTestEagerSingletons.Helper
.injectEagerSingletons(c);
c.inject(new ForumModule.EagerSingletons());
c.inject(new MessagingModule.EagerSingletons());
}

View File

@@ -1,6 +1,6 @@
package org.briarproject.briar.messaging;
import org.briarproject.bramble.BrambleCoreEagerSingletons;
import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons;
import org.briarproject.bramble.BrambleCoreModule;
import org.briarproject.bramble.api.connection.ConnectionManager;
import org.briarproject.bramble.api.contact.ContactManager;
@@ -24,7 +24,7 @@ import dagger.Component;
MessagingModule.class
})
interface SimplexMessagingIntegrationTestComponent
extends BrambleCoreEagerSingletons {
extends BrambleCoreIntegrationTestEagerSingletons {
void inject(MessagingModule.EagerSingletons init);
@@ -46,7 +46,8 @@ interface SimplexMessagingIntegrationTestComponent
public static void injectEagerSingletons(
SimplexMessagingIntegrationTestComponent c) {
BrambleCoreEagerSingletons.Helper.injectEagerSingletons(c);
BrambleCoreIntegrationTestEagerSingletons.Helper
.injectEagerSingletons(c);
c.inject(new MessagingModule.EagerSingletons());
}
}

View File

@@ -1,6 +1,6 @@
package org.briarproject.briar.test;
import org.briarproject.bramble.BrambleCoreEagerSingletons;
import org.briarproject.bramble.BrambleCoreIntegrationTestEagerSingletons;
import org.briarproject.bramble.BrambleCoreModule;
import org.briarproject.bramble.api.client.ClientHelper;
import org.briarproject.bramble.api.connection.ConnectionManager;
@@ -51,7 +51,7 @@ import dagger.Component;
SharingModule.class
})
public interface BriarIntegrationTestComponent
extends BrambleCoreEagerSingletons {
extends BrambleCoreIntegrationTestEagerSingletons {
void inject(BriarIntegrationTest<BriarIntegrationTestComponent> init);
@@ -115,7 +115,8 @@ public interface BriarIntegrationTestComponent
public static void injectEagerSingletons(
BriarIntegrationTestComponent c) {
BrambleCoreEagerSingletons.Helper.injectEagerSingletons(c);
BrambleCoreIntegrationTestEagerSingletons.Helper
.injectEagerSingletons(c);
c.inject(new BlogModule.EagerSingletons());
c.inject(new ForumModule.EagerSingletons());
c.inject(new GroupInvitationModule.EagerSingletons());

View File

@@ -3,8 +3,6 @@ package org.briarproject.briar.headless
import dagger.Component
import org.briarproject.bramble.BrambleCoreEagerSingletons
import org.briarproject.bramble.BrambleCoreModule
import org.briarproject.bramble.account.AccountModule
import org.briarproject.bramble.system.DesktopSecureRandomModule
import org.briarproject.briar.BriarCoreEagerSingletons
import org.briarproject.briar.BriarCoreModule
import java.security.SecureRandom
@@ -14,8 +12,6 @@ import javax.inject.Singleton
modules = [
BrambleCoreModule::class,
BriarCoreModule::class,
DesktopSecureRandomModule::class,
AccountModule::class,
HeadlessModule::class
]
)

View File

@@ -3,6 +3,7 @@ package org.briarproject.briar.headless
import com.fasterxml.jackson.databind.ObjectMapper
import dagger.Module
import dagger.Provides
import org.briarproject.bramble.account.AccountModule
import org.briarproject.bramble.api.FeatureFlags
import org.briarproject.bramble.api.battery.BatteryManager
import org.briarproject.bramble.api.db.DatabaseConfig
@@ -24,6 +25,8 @@ import org.briarproject.bramble.plugin.tor.CircumventionModule
import org.briarproject.bramble.plugin.tor.CircumventionProvider
import org.briarproject.bramble.plugin.tor.UnixTorPluginFactory
import org.briarproject.bramble.socks.SocksModule
import org.briarproject.bramble.system.DefaultTaskSchedulerModule
import org.briarproject.bramble.system.DesktopSecureRandomModule
import org.briarproject.bramble.system.JavaSystemModule
import org.briarproject.bramble.util.OsUtils.isLinux
import org.briarproject.bramble.util.OsUtils.isMac
@@ -40,17 +43,20 @@ import javax.net.SocketFactory
@Module(
includes = [
JavaNetworkModule::class,
JavaSystemModule::class,
AccountModule::class,
CircumventionModule::class,
DefaultBatteryManagerModule::class,
DefaultEventExecutorModule::class,
SocksModule::class,
DefaultTaskSchedulerModule::class,
DesktopSecureRandomModule::class,
HeadlessBlogModule::class,
HeadlessContactModule::class,
HeadlessEventModule::class,
HeadlessForumModule::class,
HeadlessMessagingModule::class
HeadlessMessagingModule::class,
JavaNetworkModule::class,
JavaSystemModule::class,
SocksModule::class
]
)
internal class HeadlessModule(private val appDir: File) {

View File

@@ -3,10 +3,7 @@ package org.briarproject.briar.headless
import dagger.Component
import org.briarproject.bramble.BrambleCoreEagerSingletons
import org.briarproject.bramble.BrambleCoreModule
import org.briarproject.bramble.account.AccountModule
import org.briarproject.bramble.api.crypto.CryptoComponent
import org.briarproject.bramble.event.DefaultEventExecutorModule
import org.briarproject.bramble.test.TestSecureRandomModule
import org.briarproject.briar.BriarCoreEagerSingletons
import org.briarproject.briar.BriarCoreModule
import org.briarproject.briar.api.test.TestDataCreator
@@ -16,9 +13,6 @@ import javax.inject.Singleton
modules = [
BrambleCoreModule::class,
BriarCoreModule::class,
TestSecureRandomModule::class,
AccountModule::class,
DefaultEventExecutorModule::class,
HeadlessTestModule::class
]
)

View File

@@ -3,16 +3,20 @@ package org.briarproject.briar.headless
import com.fasterxml.jackson.databind.ObjectMapper
import dagger.Module
import dagger.Provides
import org.briarproject.bramble.account.AccountModule
import org.briarproject.bramble.api.FeatureFlags
import org.briarproject.bramble.api.db.DatabaseConfig
import org.briarproject.bramble.api.plugin.PluginConfig
import org.briarproject.bramble.api.plugin.TransportId
import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory
import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory
import org.briarproject.bramble.event.DefaultEventExecutorModule
import org.briarproject.bramble.network.JavaNetworkModule
import org.briarproject.bramble.plugin.tor.CircumventionModule
import org.briarproject.bramble.socks.SocksModule
import org.briarproject.bramble.system.DefaultTaskSchedulerModule
import org.briarproject.bramble.system.JavaSystemModule
import org.briarproject.bramble.test.TestSecureRandomModule
import org.briarproject.briar.headless.blogs.HeadlessBlogModule
import org.briarproject.briar.headless.contact.HeadlessContactModule
import org.briarproject.briar.headless.event.HeadlessEventModule
@@ -26,8 +30,12 @@ import javax.inject.Singleton
includes = [
JavaNetworkModule::class,
JavaSystemModule::class,
AccountModule::class,
CircumventionModule::class,
DefaultEventExecutorModule::class,
DefaultTaskSchedulerModule::class,
SocksModule::class,
TestSecureRandomModule::class,
HeadlessBlogModule::class,
HeadlessContactModule::class,
HeadlessEventModule::class,