diff options
author | Harald Musum <musum@oath.com> | 2018-05-29 14:24:50 +0200 |
---|---|---|
committer | Harald Musum <musum@oath.com> | 2018-05-29 14:24:50 +0200 |
commit | 8c2db62342f378c70db71406b535caf7d38a916e (patch) | |
tree | dd26687f53f0fe4a7cda927b65dd218ab417faf4 /configserver | |
parent | b627c768085aa04e1613fd21c1337306b3eadc15 (diff) |
Refactor creation of ConfigServerDB
Diffstat (limited to 'configserver')
11 files changed, 32 insertions, 56 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerDB.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerDB.java index 33718774228..72a470cf937 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerDB.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerDB.java @@ -17,8 +17,7 @@ import java.util.List; * Config server db is the maintainer of the serverdb directory containing def files and the file system sessions. * See also {@link com.yahoo.vespa.config.server.deploy.TenantFileSystemDirs} which maintains directories per tenant. * - * @author lulf - * @since 5.1 + * @author Ulf Lilleengen */ public class ConfigServerDB { private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(ConfigServerDB.class.getName()); @@ -41,17 +40,13 @@ public class ConfigServerDB { } } - public static ConfigServerDB createTestConfigServerDb(String dbDir, String definitionsDir) { - return new ConfigServerDB(new ConfigserverConfig(new ConfigserverConfig.Builder() - .configServerDBDir(dbDir) - .configDefinitionsDir(definitionsDir))); - } - // The config definitions shipped with Vespa public File classes() { return new File(Defaults.getDefaults().underVespaHome(configserverConfig.configDefinitionsDir()));} public File serverdefs() { return new File(serverDB, "serverdefs"); } + public File path() { return serverDB; } + public static void createDirectory(File d) { if (d.exists()) { if (!d.isDirectory()) { @@ -81,7 +76,4 @@ public class ConfigServerDB { } } - public ConfigserverConfig getConfigserverConfig() { - return configserverConfig; - } } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/GlobalComponentRegistry.java b/configserver/src/main/java/com/yahoo/vespa/config/server/GlobalComponentRegistry.java index b6e8f013fd1..6828204b17c 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/GlobalComponentRegistry.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/GlobalComponentRegistry.java @@ -27,7 +27,6 @@ public interface GlobalComponentRegistry { Curator getCurator(); ConfigCurator getConfigCurator(); Metrics getMetrics(); - ConfigServerDB getServerDB(); SessionPreparer getSessionPreparer(); ConfigserverConfig getConfigserverConfig(); TenantListener getTenantListener(); diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/InjectedGlobalComponentRegistry.java b/configserver/src/main/java/com/yahoo/vespa/config/server/InjectedGlobalComponentRegistry.java index d0b830aceaa..88f54e569df 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/InjectedGlobalComponentRegistry.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/InjectedGlobalComponentRegistry.java @@ -31,7 +31,6 @@ public class InjectedGlobalComponentRegistry implements GlobalComponentRegistry private final ConfigCurator configCurator; private final Metrics metrics; private final ModelFactoryRegistry modelFactoryRegistry; - private final ConfigServerDB serverDB; private final SessionPreparer sessionPreparer; private final RpcServer rpcServer; private final ConfigserverConfig configserverConfig; @@ -47,7 +46,6 @@ public class InjectedGlobalComponentRegistry implements GlobalComponentRegistry ConfigCurator configCurator, Metrics metrics, ModelFactoryRegistry modelFactoryRegistry, - ConfigServerDB serverDB, SessionPreparer sessionPreparer, RpcServer rpcServer, ConfigserverConfig configserverConfig, @@ -61,7 +59,6 @@ public class InjectedGlobalComponentRegistry implements GlobalComponentRegistry this.configCurator = configCurator; this.metrics = metrics; this.modelFactoryRegistry = modelFactoryRegistry; - this.serverDB = serverDB; this.sessionPreparer = sessionPreparer; this.rpcServer = rpcServer; this.configserverConfig = configserverConfig; @@ -80,8 +77,6 @@ public class InjectedGlobalComponentRegistry implements GlobalComponentRegistry @Override public Metrics getMetrics() { return metrics; } @Override - public ConfigServerDB getServerDB() { return serverDB; } - @Override public SessionPreparer getSessionPreparer() { return sessionPreparer; } @Override public ConfigserverConfig getConfigserverConfig() { return configserverConfig; } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/TenantFileSystemDirs.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/TenantFileSystemDirs.java index 93cd68f6dd6..293f35558cb 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/TenantFileSystemDirs.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/TenantFileSystemDirs.java @@ -1,7 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.config.server.deploy; -import com.google.common.io.Files; +import com.yahoo.cloud.config.ConfigserverConfig; import com.yahoo.config.provision.TenantName; import com.yahoo.io.IOUtils; import com.yahoo.path.Path; @@ -12,23 +12,24 @@ import java.io.File; /* * Holds file system directories for a tenant * - * @author tonytv + * @author Tony Vaagenes */ public class TenantFileSystemDirs { private final File serverDB; private final TenantName tenant; + public TenantFileSystemDirs(ConfigserverConfig configserverConfig, TenantName tenant) { + this(new ConfigServerDB(configserverConfig).path(), tenant); + } + + // For testing public TenantFileSystemDirs(File dir, TenantName tenant) { this.serverDB = dir; this.tenant = tenant; ConfigServerDB.createDirectory(sessionsPath()); } - public static TenantFileSystemDirs createTestDirs(TenantName tenantName) { - return new TenantFileSystemDirs(Files.createTempDir(), tenantName); - } - public File sessionsPath() { return new File(serverDB, Path.fromString("tenants").append(tenant.value()).append("sessions").getRelative()); } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantBuilder.java index 69721ed01d4..ad967f49964 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantBuilder.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantBuilder.java @@ -14,9 +14,7 @@ import com.yahoo.vespa.config.server.application.ZKTenantApplications; import com.yahoo.vespa.config.server.deploy.TenantFileSystemDirs; import com.yahoo.vespa.config.server.monitoring.Metrics; import com.yahoo.vespa.config.server.session.*; -import com.yahoo.vespa.defaults.Defaults; -import java.io.File; import java.time.Clock; import java.util.Collections; @@ -162,12 +160,7 @@ public class TenantBuilder { private void createServerDbDirs() { if (tenantFileSystemDirs == null) { - tenantFileSystemDirs = new TenantFileSystemDirs(new File( - Defaults.getDefaults().underVespaHome(componentRegistry - .getServerDB() - .getConfigserverConfig() - .configServerDBDir())), - tenant); + tenantFileSystemDirs = new TenantFileSystemDirs(componentRegistry.getConfigserverConfig(), tenant); } } diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerDBTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerDBTest.java index c34f6512f29..ccec9666a3c 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerDBTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerDBTest.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.config.server; import com.google.common.io.Files; +import com.yahoo.cloud.config.ConfigserverConfig; import com.yahoo.io.IOUtils; import org.junit.Before; import org.junit.Test; @@ -13,25 +14,26 @@ import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; /** - * @author lulf - * @since 5.1 + * @author Ulf Lilleengen */ public class ConfigServerDBTest { private ConfigServerDB serverDB; - private File dbDir; - private File definitionsDir; + private ConfigserverConfig configserverConfig; @Before public void setup() { - dbDir = Files.createTempDir(); - definitionsDir = Files.createTempDir(); - serverDB = ConfigServerDB.createTestConfigServerDb(dbDir.getAbsolutePath(), definitionsDir.getAbsolutePath()); + File dbDir = Files.createTempDir(); + File definitionsDir = Files.createTempDir(); + configserverConfig = new ConfigserverConfig(new ConfigserverConfig.Builder() + .configServerDBDir(dbDir.getAbsolutePath()) + .configDefinitionsDir(definitionsDir.getAbsolutePath())); + serverDB = new ConfigServerDB(configserverConfig); } private void createInitializer() throws IOException { File existingDef = new File(serverDB.classes(), "test.def"); IOUtils.writeFile(existingDef, "hello", false); - ConfigServerDB.createTestConfigServerDb(dbDir.getAbsolutePath(), definitionsDir.getAbsolutePath()); + new ConfigServerDB(configserverConfig); } @Test diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/InjectedGlobalComponentRegistryTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/InjectedGlobalComponentRegistryTest.java index dec9dd991de..de27a185aef 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/InjectedGlobalComponentRegistryTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/InjectedGlobalComponentRegistryTest.java @@ -31,14 +31,12 @@ import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; /** - * @author lulf - * @since 5.1 + * @author Ulf Lilleengen */ public class InjectedGlobalComponentRegistryTest { private Curator curator; private Metrics metrics; - private ConfigServerDB serverDB; private SessionPreparer sessionPreparer; private ConfigserverConfig configserverConfig; private RpcServer rpcServer; @@ -60,7 +58,6 @@ public class InjectedGlobalComponentRegistryTest { new ConfigserverConfig.Builder() .configServerDBDir(Files.createTempDir().getAbsolutePath()) .configDefinitionsDir(Files.createTempDir().getAbsolutePath())); - serverDB = new ConfigServerDB(configserverConfig); sessionPreparer = new SessionTest.MockSessionPreparer(); rpcServer = new RpcServer(configserverConfig, null, Metrics.createTestMetrics(), new HostRegistries(), new ConfigRequestHostLivenessTracker(), new FileServer(FileDistribution.getDefaultFileDBPath())); @@ -70,13 +67,14 @@ public class InjectedGlobalComponentRegistryTest { hostRegistries = new HostRegistries(); HostProvisionerProvider hostProvisionerProvider = HostProvisionerProvider.withProvisioner(new SessionHandlerTest.MockProvisioner()); zone = Zone.defaultZone(); - globalComponentRegistry = new InjectedGlobalComponentRegistry(curator, configCurator, metrics, modelFactoryRegistry, serverDB, sessionPreparer, rpcServer, configserverConfig, generationCounter, defRepo, permanentApplicationPackage, hostRegistries, hostProvisionerProvider, zone); + globalComponentRegistry = + new InjectedGlobalComponentRegistry(curator, configCurator, metrics, modelFactoryRegistry, sessionPreparer, rpcServer, configserverConfig, + generationCounter, defRepo, permanentApplicationPackage, hostRegistries, hostProvisionerProvider, zone); } @Test public void testThatAllComponentsAreSetup() { assertThat(globalComponentRegistry.getModelFactoryRegistry(), is(modelFactoryRegistry)); - assertThat(globalComponentRegistry.getServerDB(), is(serverDB)); assertThat(globalComponentRegistry.getSessionPreparer(), is(sessionPreparer)); assertThat(globalComponentRegistry.getMetrics(), is(metrics)); assertThat(globalComponentRegistry.getCurator(), is(curator)); diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/TestComponentRegistry.java b/configserver/src/test/java/com/yahoo/vespa/config/server/TestComponentRegistry.java index d026989a43e..feb3ddae4ca 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/TestComponentRegistry.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/TestComponentRegistry.java @@ -37,7 +37,6 @@ public class TestComponentRegistry implements GlobalComponentRegistry { private final Curator curator; private final ConfigCurator configCurator; private final Metrics metrics; - private final ConfigServerDB serverDB; private final SessionPreparer sessionPreparer; private final ConfigserverConfig configserverConfig; private final SuperModelGenerationCounter superModelGenerationCounter; @@ -57,7 +56,6 @@ public class TestComponentRegistry implements GlobalComponentRegistry { PermanentApplicationPackage permanentApplicationPackage, FileDistributionFactory fileDistributionFactory, SuperModelGenerationCounter superModelGenerationCounter, - ConfigServerDB configServerDB, HostRegistries hostRegistries, ConfigserverConfig configserverConfig, SessionPreparer sessionPreparer, @@ -71,7 +69,6 @@ public class TestComponentRegistry implements GlobalComponentRegistry { this.configCurator = configCurator; this.metrics = metrics; this.configserverConfig = configserverConfig; - this.serverDB = configServerDB; this.reloadListener = reloadListener; this.tenantListener = tenantListener; this.superModelGenerationCounter = superModelGenerationCounter; @@ -168,7 +165,6 @@ public class TestComponentRegistry implements GlobalComponentRegistry { permApp, fileDistributionFactory, new SuperModelGenerationCounter(curator), - new ConfigServerDB(configserverConfig), hostRegistries, configserverConfig, sessionPreparer, hostProvisioner, defRepo, reloadListener, tenantListener, zone, clock); @@ -182,8 +178,6 @@ public class TestComponentRegistry implements GlobalComponentRegistry { @Override public Metrics getMetrics() { return metrics; } @Override - public ConfigServerDB getServerDB() { return serverDB; } - @Override public SessionPreparer getSessionPreparer() { return sessionPreparer; } @Override public ConfigserverConfig getConfigserverConfig() { return configserverConfig; } diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java index e14e59b9fe7..f8c96ebef3a 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionActiveHandlerTest.java @@ -1,6 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.config.server.http.v2; +import com.google.common.io.Files; import com.yahoo.config.application.api.ApplicationMetaData; import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.model.NullConfigModelRegistry; @@ -223,7 +224,7 @@ public class SessionActiveHandlerTest extends SessionHandlerTest { private void addLocalSession(long sessionId, DeployData deployData, SessionZooKeeperClient zkc) { writeApplicationId(zkc, deployData.getApplicationName()); - TenantFileSystemDirs tenantFileSystemDirs = TenantFileSystemDirs.createTestDirs(tenantName); + TenantFileSystemDirs tenantFileSystemDirs = new TenantFileSystemDirs(Files.createTempDir(), tenantName); ApplicationPackage app = FilesApplicationPackage.fromFileWithDeployData(testApp, deployData); localRepo.addSession(new LocalSession(tenantName, sessionId, new SessionTest.MockSessionPreparer(), new SessionContext(app, zkc, new File(tenantFileSystemDirs.sessionsPath(), String.valueOf(sessionId)), diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/LocalSessionRepoTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/LocalSessionRepoTest.java index 73caf770512..cde0e1d0f53 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/LocalSessionRepoTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/LocalSessionRepoTest.java @@ -1,6 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.config.server.session; +import com.google.common.io.Files; import com.yahoo.config.model.application.provider.FilesApplicationPackage; import com.yahoo.test.ManualClock; import com.yahoo.config.provision.TenantName; @@ -41,7 +42,7 @@ public class LocalSessionRepoTest extends TestWithCurator { private void setupSessions(TenantName tenantName, boolean createInitialSessions) throws Exception { GlobalComponentRegistry globalComponentRegistry = new TestComponentRegistry.Builder().curator(curator).build(); - TenantFileSystemDirs tenantFileSystemDirs = TenantFileSystemDirs.createTestDirs(tenantName); + TenantFileSystemDirs tenantFileSystemDirs = new TenantFileSystemDirs(Files.createTempDir(), tenantName); if (createInitialSessions) { IOUtils.copyDirectory(testApp, new File(tenantFileSystemDirs.sessionsPath(), "1")); IOUtils.copyDirectory(testApp, new File(tenantFileSystemDirs.sessionsPath(), "2")); diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/LocalSessionTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/LocalSessionTest.java index bd5cfdf3a0e..316c439a3cd 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/LocalSessionTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/LocalSessionTest.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.config.server.session; import com.google.common.io.Files; +import com.yahoo.cloud.config.ConfigserverConfig; import com.yahoo.config.application.api.ApplicationFile; import com.yahoo.config.provision.*; import com.yahoo.path.Path; @@ -29,8 +30,7 @@ import static org.hamcrest.core.Is.is; import static org.junit.Assert.*; /** - * @author lulf - * @since 5.1 + * @author Ulf Lilleengen */ public class LocalSessionTest { @@ -41,7 +41,7 @@ public class LocalSessionTest { private SuperModelGenerationCounter superModelGenerationCounter; @Before - public void setupTest() throws Exception { + public void setupTest() { curator = new MockCurator(); configCurator = ConfigCurator.create(curator); superModelGenerationCounter = new SuperModelGenerationCounter(curator); |