summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2016-09-02 14:35:31 +0200
committerJon Bratseth <bratseth@yahoo-inc.com>2016-09-02 14:35:31 +0200
commit99a67727d2eff98e737d6b0297701c429ae14617 (patch)
tree88b79ab578a7ebc8e898f882344df1146f21a5f5 /configserver
parenteb35f0570d17e3d5b68b7ba42e212444f4c6093b (diff)
Factor out deployment test setup
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java2
-rw-r--r--configserver/src/test/apps/valivationOverride/services.xml4
-rw-r--r--configserver/src/test/apps/valivationOverride/validation-overrides.xml3
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java103
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java60
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/RedeployTest.java2
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"),