/* * ToroDB * Copyright © 2014 8Kdata Technology (www.8kdata.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.torodb.stampede; import com.google.common.util.concurrent.Service; import com.torodb.packaging.config.model.backend.BackendImplementation; import com.torodb.packaging.config.model.backend.ConnectionPoolConfig; import com.torodb.packaging.config.model.backend.CursorConfig; import com.torodb.packaging.config.model.generic.LogLevel; import com.torodb.packaging.config.model.protocol.mongo.Role; import com.torodb.packaging.config.util.ConfigUtils; import com.torodb.packaging.guice.BackendDerbyImplementationModule; import com.torodb.packaging.guice.BackendMultiImplementationModule; import com.torodb.stampede.config.model.Config; import com.torodb.stampede.config.model.replication.Replication; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import java.time.Clock; /** * * @author gortiz */ public class StampedeBootstrapTest { private Config config; @Before public void setUp() { config = new Config(); Replication replication = new Replication(); replication.setRole(Role.HIDDEN_SLAVE); replication.setReplSetName("replSetName"); replication.setSyncSource("localhost:27020"); config.setReplication( replication ); config.getBackend().setBackendImplementation(new Derby()); config.getBackend().as(Derby.class).setPassword("torodb"); config.getLogging().setLevel(LogLevel.TRACE); ConfigUtils.validateBean(config); } @Test public void testCreateStampedeService() { StampedeBootstrap.createStampedeService( new TestBootstrapModule(config, Clock.systemUTC())); } @Test @Ignore public void testCreateStampedeService_run() { Service stampedeService = StampedeBootstrap.createStampedeService( new TestBootstrapModule(config, Clock.systemUTC())); stampedeService.startAsync(); stampedeService.awaitRunning(); stampedeService.stopAsync(); stampedeService.awaitTerminated(); } private static class TestBootstrapModule extends BootstrapModule { public TestBootstrapModule(Config config, Clock clock) { super(config, clock); } @Override protected BackendMultiImplementationModule getBackendMultiImplementationModule( CursorConfig cursorConfig, ConnectionPoolConfig connectionPoolConfig, BackendImplementation backendImplementation) { return new BackendMultiImplementationModule( cursorConfig, connectionPoolConfig, backendImplementation, new BackendDerbyImplementationModule() ); } } private class Derby extends com.torodb.packaging.config.model.backend.derby.AbstractDerby { public Derby() { super( "localhost", 1527, "torod", "torodb", null, System.getProperty("user.home", "/") + "/.toropass", "toro", false, true, true); } } }