diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-09-02 14:35:31 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-09-02 14:35:31 +0200 |
commit | 99a67727d2eff98e737d6b0297701c429ae14617 (patch) | |
tree | 88b79ab578a7ebc8e898f882344df1146f21a5f5 /configserver | |
parent | eb35f0570d17e3d5b68b7ba42e212444f4c6093b (diff) |
Factor out deployment test setup
Diffstat (limited to 'configserver')
6 files changed, 116 insertions, 58 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java index 6ff16c0c0fa..8264de0df01 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java @@ -336,7 +336,7 @@ public class Tenants implements ConnectionStateListener, PathChildrenCacheListen } public void redeployApplications(Deployer deployer) { - final int totalNumberOfApplications = tenantsCopy().values().stream() + int totalNumberOfApplications = tenantsCopy().values().stream() .mapToInt(tenant -> tenant.getApplicationRepo().listApplications().size()).sum(); int applicationsRedeployed = 0; for (Tenant tenant : tenantsCopy().values()) { diff --git a/configserver/src/test/apps/valivationOverride/services.xml b/configserver/src/test/apps/valivationOverride/services.xml new file mode 100644 index 00000000000..c6779bf311e --- /dev/null +++ b/configserver/src/test/apps/valivationOverride/services.xml @@ -0,0 +1,4 @@ +<jdisc version="1.0"> + <search/> + <nodes count="2"/> +</jdisc>
\ No newline at end of file diff --git a/configserver/src/test/apps/valivationOverride/validation-overrides.xml b/configserver/src/test/apps/valivationOverride/validation-overrides.xml new file mode 100644 index 00000000000..28e25cd793d --- /dev/null +++ b/configserver/src/test/apps/valivationOverride/validation-overrides.xml @@ -0,0 +1,3 @@ +<validation-overrides> + <allow until="2016-09-01">skip-old-config-models</allow> +</validation-overrides>
\ No newline at end of file diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java new file mode 100644 index 00000000000..d62f45f9130 --- /dev/null +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java @@ -0,0 +1,103 @@ +package com.yahoo.vespa.config.server.deploy; + +import com.yahoo.cloud.config.ConfigserverConfig; +import com.yahoo.config.model.api.HostProvisioner; +import com.yahoo.config.model.provision.InMemoryProvisioner; +import com.yahoo.config.provision.ApplicationId; +import com.yahoo.config.provision.ApplicationName; +import com.yahoo.config.provision.Capacity; +import com.yahoo.config.provision.ClusterSpec; +import com.yahoo.config.provision.HostFilter; +import com.yahoo.config.provision.HostSpec; +import com.yahoo.config.provision.InstanceName; +import com.yahoo.config.provision.ProvisionLogger; +import com.yahoo.config.provision.Provisioner; +import com.yahoo.path.Path; +import com.yahoo.transaction.NestedTransaction; +import com.yahoo.vespa.config.server.ApplicationRepository; +import com.yahoo.vespa.config.server.TimeoutBudget; +import com.yahoo.vespa.config.server.provision.HostProvisionerProvider; +import com.yahoo.vespa.config.server.session.LocalSession; +import com.yahoo.vespa.config.server.session.PrepareParams; +import com.yahoo.vespa.config.server.session.SilentDeployLogger; +import com.yahoo.vespa.config.server.tenant.Tenant; +import com.yahoo.vespa.config.server.tenant.Tenants; +import com.yahoo.vespa.curator.Curator; + +import java.io.File; +import java.io.IOException; +import java.time.Clock; +import java.time.Duration; +import java.util.Collection; +import java.util.List; +import java.util.Optional; + +/** + * @author bratseth + */ +public class DeployTester { + + private final Path tenantPath = Path.createRoot().append("testapp"); + private final File testApp; + private ApplicationId id; + + public DeployTester(String appPath) { + this.testApp = new File(appPath); + } + + /** + * Do the initial "deploy" with the existing API-less code as the deploy API doesn't support first deploys yet. + */ + public ApplicationId deployApp(Tenant tenant) throws InterruptedException, IOException { + LocalSession session = tenant.getSessionFactory().createSession(testApp, "default", new SilentDeployLogger(), new TimeoutBudget(Clock.systemUTC(), Duration.ofSeconds(60))); + ApplicationId id = ApplicationId.from(tenant.getName(), ApplicationName.from("myapp"), InstanceName.defaultName()); + session.prepare(new SilentDeployLogger(), new PrepareParams(new ConfigserverConfig(new ConfigserverConfig.Builder())).applicationId(id), Optional.empty(), tenantPath); + session.createActivateTransaction().commit(); + tenant.getLocalSessionRepo().addSession(session); + this.id = id; + return id; + } + + public Optional<com.yahoo.config.provision.Deployment> redeployFromLocalActive(Tenants tenants, Curator curator) { + ApplicationRepository applicationRepository = new ApplicationRepository(tenants, HostProvisionerProvider.withProvisioner(createHostProvisioner()), + new ConfigserverConfig(new ConfigserverConfig.Builder()), curator); + + Optional<com.yahoo.config.provision.Deployment> deployment = applicationRepository.deployFromLocalActive(id, Duration.ofSeconds(60)); + return deployment; + } + + private Provisioner createHostProvisioner() { + return new ProvisionerAdapter(new InMemoryProvisioner(true, "host0", "host1", "host2")); + } + + private static class ProvisionerAdapter implements Provisioner { + + private final HostProvisioner hostProvisioner; + + public ProvisionerAdapter(HostProvisioner hostProvisioner) { + this.hostProvisioner = hostProvisioner; + } + + @Override + public List<HostSpec> prepare(ApplicationId applicationId, ClusterSpec cluster, Capacity capacity, int groups, ProvisionLogger logger) { + return hostProvisioner.prepare(cluster, capacity, groups, logger); + } + + @Override + public void activate(NestedTransaction transaction, ApplicationId application, Collection<HostSpec> hosts) { + // noop + } + + @Override + public void remove(NestedTransaction transaction, ApplicationId application) { + // noop + } + + @Override + public void restart(ApplicationId application, HostFilter filter) { + // noop + } + + } + +} diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java index 12f69ec1dc6..8bcd88dbb2c 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java @@ -39,67 +39,15 @@ import static org.junit.Assert.assertTrue; */ public class HostedDeployTest extends TestWithTenant { - private static final Path appPath = Path.createRoot().append("testapp"); - private File testApp = new File("src/test/apps/hosted/"); - private Path tenantPath = appPath; - @Test public void testRedeploy() throws InterruptedException, IOException { - ApplicationId id = deployApp(); - - ApplicationRepository applicationRepository = new ApplicationRepository(tenants, HostProvisionerProvider.withProvisioner(createHostProvisioner()), - new ConfigserverConfig(new ConfigserverConfig.Builder()), curator); - - Optional<com.yahoo.config.provision.Deployment> deployment = applicationRepository.deployFromLocalActive(id, Duration.ofSeconds(60)); + DeployTester tester = new DeployTester("src/test/apps/hosted/"); + tester.deployApp(tenant); + Optional<com.yahoo.config.provision.Deployment> deployment = tester.redeployFromLocalActive(tenants, curator); + assertTrue(deployment.isPresent()); deployment.get().prepare(); deployment.get().activate(); } - /** - * Do the initial "deploy" with the existing API-less code as the deploy API doesn't support first deploys yet. - */ - private ApplicationId deployApp() throws InterruptedException, IOException { - LocalSession session = tenant.getSessionFactory().createSession(testApp, "default", new SilentDeployLogger(), new TimeoutBudget(Clock.systemUTC(), Duration.ofSeconds(60))); - ApplicationId id = ApplicationId.from(tenant.getName(), ApplicationName.from("myapp"), InstanceName.defaultName()); - session.prepare(new SilentDeployLogger(), new PrepareParams(new ConfigserverConfig(new ConfigserverConfig.Builder())).applicationId(id), Optional.empty(), tenantPath); - session.createActivateTransaction().commit(); - tenant.getLocalSessionRepo().addSession(session); - return id; - } - - private Provisioner createHostProvisioner() { - return new ProvisionerAdapter(new InMemoryProvisioner(true, "host0", "host1", "host2")); - } - - private static class ProvisionerAdapter implements Provisioner { - - private final HostProvisioner hostProvisioner; - - public ProvisionerAdapter(HostProvisioner hostProvisioner) { - this.hostProvisioner = hostProvisioner; - } - - @Override - public List<HostSpec> prepare(ApplicationId applicationId, ClusterSpec cluster, Capacity capacity, int groups, ProvisionLogger logger) { - return hostProvisioner.prepare(cluster, capacity, groups, logger); - } - - @Override - public void activate(NestedTransaction transaction, ApplicationId application, Collection<HostSpec> hosts) { - // noop - } - - @Override - public void remove(NestedTransaction transaction, ApplicationId application) { - // noop - } - - @Override - public void restart(ApplicationId application, HostFilter filter) { - // noop - } - - } - } diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/RedeployTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/RedeployTest.java index b06069d98af..2296835e27f 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/RedeployTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/RedeployTest.java @@ -55,7 +55,7 @@ public class RedeployTest extends TestWithTenant { assertEquals(id, tenant.getLocalSessionRepo().getSession(activeSessionIdAfter).getApplicationId()); } - /** No deploYMENT is done because there isn't a local active session. */ + /** No deployment is done because there isn't a local active session. */ @Test public void testNoRedeploy() { ApplicationId id = ApplicationId.from(TenantName.from("default"), |