Use real executors in integration tests.

This commit is contained in:
akwizgran
2019-05-31 12:25:48 +01:00
parent 8fc5c21354
commit 7bf86d9c53
21 changed files with 219 additions and 171 deletions

View File

@@ -2,16 +2,28 @@ package org.briarproject.bramble.plugin.tor;
import org.briarproject.bramble.api.battery.BatteryManager;
import org.briarproject.bramble.api.event.EventBus;
import org.briarproject.bramble.api.lifecycle.IoExecutor;
import org.briarproject.bramble.api.network.NetworkManager;
import org.briarproject.bramble.api.plugin.BackoffFactory;
import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin;
import org.briarproject.bramble.api.system.Clock;
import org.briarproject.bramble.api.system.LocationUtils;
import org.briarproject.bramble.api.system.ResourceProvider;
import org.briarproject.bramble.contact.ContactModule;
import org.briarproject.bramble.crypto.CryptoExecutorModule;
import org.briarproject.bramble.db.DatabaseExecutorModule;
import org.briarproject.bramble.identity.IdentityModule;
import org.briarproject.bramble.lifecycle.LifecycleModule;
import org.briarproject.bramble.plugin.PluginModule;
import org.briarproject.bramble.properties.PropertiesModule;
import org.briarproject.bramble.sync.validation.ValidationModule;
import org.briarproject.bramble.system.SystemModule;
import org.briarproject.bramble.test.BrambleJavaIntegrationTestComponent;
import org.briarproject.bramble.test.BrambleTestCase;
import org.briarproject.bramble.test.DaggerBrambleJavaIntegrationTestComponent;
import org.briarproject.bramble.transport.TransportModule;
import org.briarproject.bramble.util.OsUtils;
import org.briarproject.bramble.versioning.VersioningModule;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -22,7 +34,6 @@ import org.junit.runners.Parameterized.Parameters;
import java.io.File;
import java.util.List;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.logging.Logger;
import javax.inject.Inject;
@@ -30,6 +41,7 @@ import javax.net.SocketFactory;
import static java.util.Collections.singletonList;
import static java.util.concurrent.TimeUnit.SECONDS;
import static java.util.logging.Logger.getLogger;
import static org.briarproject.bramble.test.TestUtils.deleteTestDirectory;
import static org.briarproject.bramble.test.TestUtils.getTestDirectory;
import static org.briarproject.bramble.test.TestUtils.isOptionalTestEnabled;
@@ -44,14 +56,17 @@ public class BridgeTest extends BrambleTestCase {
public static Iterable<String> data() {
BrambleJavaIntegrationTestComponent component =
DaggerBrambleJavaIntegrationTestComponent.builder().build();
injectEagerSingletons(component);
return component.getCircumventionProvider().getBridges(false);
}
private final static long TIMEOUT = SECONDS.toMillis(30);
private final static Logger LOG =
Logger.getLogger(BridgeTest.class.getName());
private final static Logger LOG = getLogger(BridgeTest.class.getName());
@Inject
@IoExecutor
Executor ioExecutor;
@Inject
NetworkManager networkManager;
@Inject
@@ -86,9 +101,9 @@ public class BridgeTest extends BrambleTestCase {
BrambleJavaIntegrationTestComponent component =
DaggerBrambleJavaIntegrationTestComponent.builder().build();
injectEagerSingletons(component);
component.inject(this);
Executor ioExecutor = Executors.newCachedThreadPool();
LocationUtils locationUtils = () -> "US";
SocketFactory torSocketFactory = SocketFactory.getDefault();
@@ -147,4 +162,18 @@ public class BridgeTest extends BrambleTestCase {
}
}
private static void injectEagerSingletons(
BrambleJavaIntegrationTestComponent component) {
component.inject(new ContactModule.EagerSingletons());
component.inject(new CryptoExecutorModule.EagerSingletons());
component.inject(new DatabaseExecutorModule.EagerSingletons());
component.inject(new IdentityModule.EagerSingletons());
component.inject(new LifecycleModule.EagerSingletons());
component.inject(new PluginModule.EagerSingletons());
component.inject(new PropertiesModule.EagerSingletons());
component.inject(new SystemModule.EagerSingletons());
component.inject(new TransportModule.EagerSingletons());
component.inject(new ValidationModule.EagerSingletons());
component.inject(new VersioningModule.EagerSingletons());
}
}

View File

@@ -2,12 +2,28 @@ package org.briarproject.bramble.test;
import org.briarproject.bramble.BrambleJavaModule;
import org.briarproject.bramble.battery.DefaultBatteryManagerModule;
import org.briarproject.bramble.client.ClientModule;
import org.briarproject.bramble.contact.ContactModule;
import org.briarproject.bramble.crypto.CryptoExecutorModule;
import org.briarproject.bramble.crypto.CryptoModule;
import org.briarproject.bramble.data.DataModule;
import org.briarproject.bramble.db.DatabaseExecutorModule;
import org.briarproject.bramble.db.DatabaseModule;
import org.briarproject.bramble.event.DefaultEventExecutorModule;
import org.briarproject.bramble.event.EventModule;
import org.briarproject.bramble.identity.IdentityModule;
import org.briarproject.bramble.lifecycle.LifecycleModule;
import org.briarproject.bramble.plugin.PluginModule;
import org.briarproject.bramble.plugin.tor.BridgeTest;
import org.briarproject.bramble.plugin.tor.CircumventionProvider;
import org.briarproject.bramble.properties.PropertiesModule;
import org.briarproject.bramble.record.RecordModule;
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.transport.TransportModule;
import org.briarproject.bramble.versioning.VersioningModule;
import javax.inject.Singleton;
@@ -15,17 +31,57 @@ import dagger.Component;
@Singleton
@Component(modules = {
TestDatabaseConfigModule.class,
TestPluginConfigModule.class,
TestSecureRandomModule.class,
BrambleJavaModule.class,
TestLifecycleModule.class,
ClientModule.class,
ContactModule.class,
CryptoExecutorModule.class,
CryptoModule.class,
DataModule.class,
DatabaseExecutorModule.class,
DatabaseModule.class,
DefaultBatteryManagerModule.class,
DefaultEventExecutorModule.class,
EventModule.class,
PluginModule.class, // needed for BackoffFactory
IdentityModule.class,
LifecycleModule.class,
RecordModule.class,
PluginModule.class,
PropertiesModule.class,
TransportModule.class,
SettingsModule.class,
SyncModule.class,
SystemModule.class,
ValidationModule.class,
VersioningModule.class
})
public interface BrambleJavaIntegrationTestComponent {
void inject(BridgeTest init);
void inject(ContactModule.EagerSingletons init);
void inject(CryptoExecutorModule.EagerSingletons init);
void inject(DatabaseExecutorModule.EagerSingletons init);
void inject(IdentityModule.EagerSingletons init);
void inject(LifecycleModule.EagerSingletons init);
void inject(PluginModule.EagerSingletons init);
void inject(PropertiesModule.EagerSingletons init);
void inject(SystemModule.EagerSingletons init);
void inject(TransportModule.EagerSingletons init);
void inject(ValidationModule.EagerSingletons init);
void inject(VersioningModule.EagerSingletons init);
CircumventionProvider getCircumventionProvider();
}