Fixed some test concurrency issues due to Processing

This commit is contained in:
Rsl1122 2019-04-22 13:15:18 +03:00
parent dea1aa3f4f
commit e3d883b43e
3 changed files with 40 additions and 1 deletions

View File

@ -53,7 +53,7 @@ public class Processing implements SubSystem {
criticalExecutor = createExecutor(2, "Plan Critical-pool-%d");
}
private ExecutorService createExecutor(int i, String s) {
protected ExecutorService createExecutor(int i, String s) {
return Executors.newFixedThreadPool(i, new ThreadFactoryBuilder().setNameFormat(s).build());
}

View File

@ -24,6 +24,7 @@ import com.djrapitops.plan.db.SQLiteDB;
import com.djrapitops.plan.system.database.DBSystem;
import com.djrapitops.plan.system.listeners.ListenerSystem;
import com.djrapitops.plan.system.locale.Locale;
import com.djrapitops.plan.system.processing.Processing;
import com.djrapitops.plan.system.settings.config.PlanConfig;
import com.djrapitops.plan.system.settings.paths.DatabaseSettings;
import com.djrapitops.plan.system.tasks.TaskSystem;
@ -35,6 +36,7 @@ import com.djrapitops.pluginbridge.plan.Bridge;
import dagger.Module;
import dagger.Provides;
import org.mockito.Mockito;
import utilities.mocks.TestProcessing;
import javax.inject.Singleton;
@ -105,4 +107,10 @@ public class PluginSuperClassBindingModule {
return Mockito.mock(Bridge.class);
}
@Provides
@Singleton
Processing provideProcessing(TestProcessing testProcessing) {
return testProcessing;
}
}

View File

@ -0,0 +1,31 @@
package utilities.mocks;
import com.djrapitops.plan.system.locale.Locale;
import com.djrapitops.plan.system.processing.Processing;
import com.djrapitops.plugin.logging.console.PluginLogger;
import com.djrapitops.plugin.logging.error.ErrorHandler;
import com.google.common.util.concurrent.MoreExecutors;
import dagger.Lazy;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.concurrent.ExecutorService;
/**
* Directly executing version of Processing for Tests to avoid concurrency issues during tests.
*
* @author Rsl1122
*/
@Singleton
public class TestProcessing extends Processing {
@Inject
public TestProcessing(Lazy<Locale> locale, PluginLogger logger, ErrorHandler errorHandler) {
super(locale, logger, errorHandler);
}
@Override
protected ExecutorService createExecutor(int i, String s) {
return MoreExecutors.newDirectExecutorService();
}
}