aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server/src/test/java/com/yahoo
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2018-04-19 10:47:52 +0200
committerMartin Polden <mpolden@mpolden.no>2018-04-19 15:05:00 +0200
commit5dc7c835d796f32bb2c9e0079693dd5da833635f (patch)
tree07161759a2973c43641500b2e38c8879dfcef126 /controller-server/src/test/java/com/yahoo
parent3991eda2b969053748350b3a745b31d391f6917b (diff)
Decide controller version across all controllers
Diffstat (limited to 'controller-server/src/test/java/com/yahoo')
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ConfigServerClientMock.java6
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java15
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java11
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java11
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VersionStatusUpdaterTest.java5
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/VersionStatusSerializerTest.java19
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerTester.java15
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java16
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiTest.java19
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/responses/root.json6
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/screwdriver/ScrewdriverApiTest.java6
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java38
12 files changed, 108 insertions, 59 deletions
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ConfigServerClientMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ConfigServerClientMock.java
index 068f7b21933..4e3783b6569 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ConfigServerClientMock.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ConfigServerClientMock.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller;
import com.fasterxml.jackson.databind.JsonNode;
@@ -183,8 +183,8 @@ public class ConfigServerClientMock extends AbstractComponent implements ConfigS
}
@Override
- public Version version(URI configServerURI) {
- return versions.getOrDefault(configServerURI, defaultVersion);
+ public Version version(URI configServerUri) {
+ return versions.getOrDefault(configServerUri, defaultVersion);
}
@Override
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java
index 8e5f09346b1..ee426557596 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller;
import com.yahoo.component.Version;
@@ -77,12 +77,6 @@ public class ControllerTest {
.region("corp-us-east-1")
.build();
- private static final ApplicationPackage applicationPackage2 = new ApplicationPackageBuilder()
- .environment(Environment.prod)
- .region("corp-us-east-1")
- .region("us-west-1")
- .build();
-
@Test
public void testDeployment() {
// Setup system
@@ -296,15 +290,18 @@ public class ControllerTest {
"commit1",
Instant.now(),
true,
+ true,
Collections.emptyList(),
VespaVersion.Confidence.low
);
List<VespaVersion> versions = new ArrayList<>(controller.versionStatus().versions());
for (int i = 0; i < versions.size(); i++) {
VespaVersion c = versions.get(i);
- if (c.isCurrentSystemVersion())
+ if (c.isSystemVersion())
versions.set(i, new VespaVersion(c.statistics(), c.releaseCommit(), c.committedAt(),
- false, c.configServerHostnames(),
+ false,
+ false,
+ c.configServerHostnames(),
c.confidence()));
}
versions.add(newSystemVespaVersion);
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java
index 110455dac35..c098e49dbcb 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller;
import com.yahoo.config.provision.ApplicationId;
@@ -89,6 +89,12 @@ public final class ControllerTester {
new ArtifactRepositoryMock(), new MemoryEntityService(), new MockBuildService());
}
+ public ControllerTester(MockCuratorDb curatorDb) {
+ this(new AthenzDbMock(), new ManualClock(), new ConfigServerClientMock(),
+ new ZoneRegistryMock(), new GitHubMock(), curatorDb, defaultRotationsConfig(),
+ new MemoryNameService(), new ArtifactRepositoryMock(), new MemoryEntityService(), new MockBuildService());
+ }
+
private ControllerTester(AthenzDbMock athenzDb, ManualClock clock,
ConfigServerClientMock configServer, ZoneRegistryMock zoneRegistry,
GitHubMock gitHub, CuratorDb curator, RotationsConfig rotationsConfig,
@@ -270,7 +276,8 @@ public final class ControllerTester {
clock,
new AthenzClientFactoryMock(athensDb),
artifactRepository,
- buildService);
+ buildService,
+ () -> "test-controller");
controller.updateVersionStatus(VersionStatus.compute(controller));
return controller;
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java
index f752cfd4f7a..ac1e5e7c677 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTester.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.deployment;
import com.yahoo.component.Version;
@@ -90,12 +90,13 @@ public class DeploymentTester {
}
public void updateVersionStatus() {
- controller().updateVersionStatus(VersionStatus.compute(controller(), tester.controller().systemVersion()));
+ updateVersionStatus(tester.controller().systemVersion());
}
- public void updateVersionStatus(Version currentVersion) {
- configServer().setDefaultVersion(currentVersion);
- controller().updateVersionStatus(VersionStatus.compute(controller(), currentVersion));
+ public void updateVersionStatus(Version newVersion) {
+ controller().curator().writeControllerVersion(controller().hostname(), newVersion);
+ configServer().setDefaultVersion(newVersion);
+ controller().updateVersionStatus(VersionStatus.compute(controller()));
}
public void upgradeSystem(Version version) {
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VersionStatusUpdaterTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VersionStatusUpdaterTest.java
index a7cecda3695..33284457e78 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VersionStatusUpdaterTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/VersionStatusUpdaterTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.maintenance;
import com.yahoo.vespa.hosted.controller.ControllerTester;
@@ -17,7 +17,8 @@ import static org.junit.Assert.assertTrue;
*/
public class VersionStatusUpdaterTest {
- /** Test that this job updates the status. Test of the content of the update is in VersionStatusTest */
+ /** Test that this job updates the status. Test of the content of the update is in
+ * {@link com.yahoo.vespa.hosted.controller.versions.VersionStatusTest} */
@Test
public void testVersionUpdating() {
ControllerTester tester = new ControllerTester();
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/VersionStatusSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/VersionStatusSerializerTest.java
index 05b671baea0..b0306178ae3 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/VersionStatusSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/VersionStatusSerializerTest.java
@@ -1,8 +1,9 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.persistence;
import com.yahoo.component.Version;
import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.HostName;
import com.yahoo.vespa.hosted.controller.versions.DeploymentStatistics;
import com.yahoo.vespa.hosted.controller.versions.VersionStatus;
import com.yahoo.vespa.hosted.controller.versions.VespaVersion;
@@ -12,6 +13,7 @@ import java.time.Instant;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.stream.Collectors;
import static org.junit.Assert.assertEquals;
@@ -31,10 +33,10 @@ public class VersionStatusSerializerTest {
Arrays.asList(ApplicationId.from("tenant1", "failing1", "default"),
ApplicationId.from("tenant2", "success2", "default"))
);
- vespaVersions.add(new VespaVersion(statistics, "dead", Instant.now(), false,
- Arrays.asList("cfg1", "cfg2", "cfg3"), VespaVersion.Confidence.normal));
- vespaVersions.add(new VespaVersion(statistics, "cafe", Instant.now(), true,
- Arrays.asList("cfg1", "cfg2", "cfg3"), VespaVersion.Confidence.normal));
+ vespaVersions.add(new VespaVersion(statistics, "dead", Instant.now(), false, false,
+ asHostnames("cfg1", "cfg2", "cfg3"), VespaVersion.Confidence.normal));
+ vespaVersions.add(new VespaVersion(statistics, "cafe", Instant.now(), true, true,
+ asHostnames("cfg1", "cfg2", "cfg3"), VespaVersion.Confidence.normal));
VersionStatus status = new VersionStatus(vespaVersions);
VersionStatusSerializer serializer = new VersionStatusSerializer();
VersionStatus deserialized = serializer.fromSlime(serializer.toSlime(status));
@@ -45,7 +47,8 @@ public class VersionStatusSerializerTest {
VespaVersion b = deserialized.versions().get(i);
assertEquals(a.releaseCommit(), b.releaseCommit());
assertEquals(a.committedAt(), b.committedAt());
- assertEquals(a.isCurrentSystemVersion(), b.isCurrentSystemVersion());
+ assertEquals(a.isControllerVersion(), b.isControllerVersion());
+ assertEquals(a.isSystemVersion(), b.isSystemVersion());
assertEquals(a.statistics(), b.statistics());
assertEquals(a.configServerHostnames(), b.configServerHostnames());
assertEquals(a.confidence(), b.confidence());
@@ -53,4 +56,8 @@ public class VersionStatusSerializerTest {
}
+ private static List<HostName> asHostnames(String... hostname) {
+ return Arrays.stream(hostname).map(HostName::from).collect(Collectors.toList());
+ }
+
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerTester.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerTester.java
index 1a876e6b246..243cf7276bd 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerTester.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ContainerTester.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi;
import com.yahoo.application.container.JDisc;
@@ -10,6 +10,7 @@ import com.yahoo.container.http.filter.FilterChainRepository;
import com.yahoo.io.IOUtils;
import com.yahoo.jdisc.http.filter.SecurityRequestFilter;
import com.yahoo.jdisc.http.filter.SecurityRequestFilterChain;
+import com.yahoo.vespa.hosted.controller.ConfigServerClientMock;
import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.versions.VersionStatus;
import org.junit.ComparisonFailure;
@@ -43,12 +44,18 @@ public class ContainerTester {
return (Controller) container.components().getComponent(Controller.class.getName());
}
- public void updateSystemVersion() {
+ public ConfigServerClientMock configServer() {
+ return (ConfigServerClientMock) container.components().getComponent(ConfigServerClientMock.class.getName());
+ }
+
+ public void updateVersionStatus() {
controller().updateVersionStatus(VersionStatus.compute(controller()));
}
- public void updateSystemVersion(Version version) {
- controller().updateVersionStatus(VersionStatus.compute(controller(), version));
+ public void updateVersionStatus(Version version) {
+ controller().curator().writeControllerVersion(controller().hostname(), version);
+ configServer().setDefaultVersion(version);
+ controller().updateVersionStatus(VersionStatus.compute(controller()));
}
public void assertResponse(Supplier<Request> request, File responseFile) throws IOException {
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java
index e4c4df279b8..704e9fa1a07 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.application;
import com.yahoo.application.container.handler.Request;
@@ -106,7 +106,7 @@ public class ApplicationApiTest extends ControllerContainerTest {
public void testApplicationApi() throws Exception {
ContainerControllerTester controllerTester = new ContainerControllerTester(container, responseFiles);
ContainerTester tester = controllerTester.containerTester();
- tester.updateSystemVersion();
+ tester.updateVersionStatus();
createAthenzDomainWithAdmin(ATHENZ_TENANT_DOMAIN, USER_ID); // (Necessary but not provided in this API)
@@ -397,7 +397,7 @@ public class ApplicationApiTest extends ControllerContainerTest {
// Setup
ContainerControllerTester controllerTester = new ContainerControllerTester(container, responseFiles);
ContainerTester tester = controllerTester.containerTester();
- tester.updateSystemVersion();
+ tester.updateVersionStatus();
createAthenzDomainWithAdmin(ATHENZ_TENANT_DOMAIN, USER_ID);
// Create tenant
@@ -433,7 +433,7 @@ public class ApplicationApiTest extends ControllerContainerTest {
// Setup
ContainerControllerTester controllerTester = new ContainerControllerTester(container, responseFiles);
ContainerTester tester = controllerTester.containerTester();
- tester.updateSystemVersion();
+ tester.updateVersionStatus();
UserId userId = new UserId("new_user");
createAthenzDomainWithAdmin(ATHENZ_TENANT_DOMAIN, userId);
@@ -458,7 +458,7 @@ public class ApplicationApiTest extends ControllerContainerTest {
// Setup
ContainerControllerTester controllerTester = new ContainerControllerTester(container, responseFiles);
ContainerTester tester = controllerTester.containerTester();
- tester.updateSystemVersion();
+ tester.updateVersionStatus();
createAthenzDomainWithAdmin(ATHENZ_TENANT_DOMAIN, USER_ID);
// Create tenant
@@ -533,7 +533,7 @@ public class ApplicationApiTest extends ControllerContainerTest {
@Test
public void testErrorResponses() throws Exception {
ContainerTester tester = new ContainerTester(container, responseFiles);
- tester.updateSystemVersion();
+ tester.updateVersionStatus();
createAthenzDomainWithAdmin(ATHENZ_TENANT_DOMAIN, USER_ID);
// PUT (update) non-existing tenant
@@ -844,7 +844,7 @@ public class ApplicationApiTest extends ControllerContainerTest {
public void testJobStatusReporting() throws Exception {
ContainerControllerTester tester = new ContainerControllerTester(container, responseFiles);
addUserToHostedOperatorRole(HostedAthenzIdentities.from(HOSTED_VESPA_OPERATOR));
- tester.containerTester().updateSystemVersion();
+ tester.containerTester().updateVersionStatus();
long projectId = 1;
Application app = tester.createApplication();
ApplicationPackage applicationPackage = new ApplicationPackageBuilder()
@@ -892,7 +892,7 @@ public class ApplicationApiTest extends ControllerContainerTest {
@Test
public void testJobStatusReportingOutOfCapacity() {
ContainerControllerTester tester = new ContainerControllerTester(container, responseFiles);
- tester.containerTester().updateSystemVersion();
+ tester.containerTester().updateVersionStatus();
long projectId = 1;
Application app = tester.createApplication();
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiTest.java
index f52cc9e9e11..fef6fd209e8 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiTest.java
@@ -1,9 +1,10 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.deployment;
import com.google.common.collect.ImmutableSet;
import com.yahoo.component.Version;
import com.yahoo.config.provision.Environment;
+import com.yahoo.config.provision.HostName;
import com.yahoo.config.provision.RegionName;
import com.yahoo.vespa.hosted.controller.Application;
import com.yahoo.vespa.hosted.controller.Controller;
@@ -22,6 +23,7 @@ import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import java.util.stream.Collectors;
/**
* @author bratseth
@@ -41,7 +43,7 @@ public class DeploymentApiTest extends ControllerContainerTest {
public void testDeploymentApi() throws IOException {
ContainerControllerTester tester = new ContainerControllerTester(container, responseFiles);
Version version = Version.fromString("5.0");
- tester.containerTester().updateSystemVersion(version);
+ tester.containerTester().updateVersionStatus(version);
ApplicationPackage applicationPackage = new ApplicationPackageBuilder()
.environment(Environment.prod)
.region("corp-us-east-1")
@@ -64,7 +66,7 @@ public class DeploymentApiTest extends ControllerContainerTest {
// New version released
version = Version.fromString("5.1");
- tester.containerTester().updateSystemVersion(version);
+ tester.containerTester().updateVersionStatus(version);
// Applications upgrade, 1/2 succeed
tester.upgrader().maintain();
@@ -82,11 +84,14 @@ public class DeploymentApiTest extends ControllerContainerTest {
List<VespaVersion> censored = new ArrayList<>();
for (VespaVersion version : versionStatus.versions()) {
if ( ! version.configServerHostnames().isEmpty())
- version = new VespaVersion(version.statistics(),
- version.releaseCommit(),
+ version = new VespaVersion(version.statistics(),
+ version.releaseCommit(),
version.committedAt(),
- version.isCurrentSystemVersion(),
- ImmutableSet.of("config1.test", "config2.test"),
+ version.isControllerVersion(),
+ version.isSystemVersion(),
+ ImmutableSet.of("config1.test", "config2.test").stream()
+ .map(HostName::from)
+ .collect(Collectors.toSet()),
VespaVersion.confidenceFrom(version.statistics(), controller)
);
censored.add(version);
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/responses/root.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/responses/root.json
index 5f7fedfd75f..772e41dda42 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/responses/root.json
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/deployment/responses/root.json
@@ -1,7 +1,7 @@
{
"versions":[
{
- "version": "(ignore)",
+ "version": "5",
"confidence": "high",
"commit": "(ignore)",
"date": 0,
@@ -23,7 +23,7 @@
"deployingApplications": [ ]
},
{
- "version":"(ignore)",
+ "version":"5.1",
"confidence":"normal",
"commit":"(ignore)",
"date":0,
@@ -82,4 +82,4 @@
"deployingApplications": [ ]
}
]
-} \ No newline at end of file
+}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/screwdriver/ScrewdriverApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/screwdriver/ScrewdriverApiTest.java
index a8e4c970cf7..6e79f53cae6 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/screwdriver/ScrewdriverApiTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/screwdriver/ScrewdriverApiTest.java
@@ -1,9 +1,8 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.screwdriver;
import com.yahoo.application.container.handler.Request;
import com.yahoo.vespa.hosted.controller.Application;
-import com.yahoo.vespa.hosted.controller.application.DeploymentJobs;
import com.yahoo.vespa.hosted.controller.restapi.ContainerControllerTester;
import com.yahoo.vespa.hosted.controller.restapi.ControllerContainerTest;
import com.yahoo.vespa.hosted.controller.versions.VersionStatus;
@@ -11,7 +10,6 @@ import org.junit.Test;
import java.io.File;
import java.nio.charset.StandardCharsets;
-import java.util.Optional;
import java.util.OptionalLong;
/**
@@ -37,7 +35,7 @@ public class ScrewdriverApiTest extends ControllerContainerTest {
@Test
public void testTriggerJobForApplication() {
ContainerControllerTester tester = new ContainerControllerTester(container, responseFiles);
- tester.containerTester().updateSystemVersion();
+ tester.containerTester().updateVersionStatus();
Application app = tester.createApplication();
tester.controller().applications().lockOrThrow(app.id(), application ->
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java
index 7f3cfe665cc..b11c826d645 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java
@@ -1,10 +1,11 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.versions;
import com.google.common.collect.ImmutableSet;
import com.yahoo.component.Version;
import com.yahoo.component.Vtag;
import com.yahoo.config.provision.Environment;
+import com.yahoo.config.provision.HostName;
import com.yahoo.config.provision.TenantName;
import com.yahoo.vespa.hosted.controller.Application;
import com.yahoo.vespa.hosted.controller.Controller;
@@ -12,13 +13,14 @@ import com.yahoo.vespa.hosted.controller.ControllerTester;
import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder;
import com.yahoo.vespa.hosted.controller.deployment.DeploymentTester;
+import com.yahoo.vespa.hosted.controller.persistence.MockCuratorDb;
import com.yahoo.vespa.hosted.controller.versions.VespaVersion.Confidence;
import org.junit.Test;
import java.net.URI;
-import java.net.URISyntaxException;
-import java.time.Duration;
import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import static com.yahoo.vespa.hosted.controller.application.DeploymentJobs.JobType.productionUsEast3;
import static com.yahoo.vespa.hosted.controller.application.DeploymentJobs.JobType.productionUsWest1;
@@ -43,7 +45,7 @@ public class VersionStatusTest {
}
@Test
- public void testSystemVersionIsControllerVersionIfConfigserversAreNewer() {
+ public void testSystemVersionIsControllerVersionIfConfigServersAreNewer() {
ControllerTester tester = new ControllerTester();
Version largerThanCurrent = new Version(Vtag.currentVersion.getMajor() + 1);
tester.configServer().setDefaultVersion(largerThanCurrent);
@@ -52,15 +54,39 @@ public class VersionStatusTest {
}
@Test
- public void testSystemVersionIsVersionOfOldestConfigServer() throws URISyntaxException {
+ public void testSystemVersionIsVersionOfOldestConfigServer() {
ControllerTester tester = new ControllerTester();
Version oldest = new Version(5);
- tester.configServer().versions().put(new URI("https://cfg.prod.corp-us-east-1.test:4443"), oldest);
+ tester.configServer().versions().put(URI.create("https://cfg.prod.corp-us-east-1.test:4443"), oldest);
VersionStatus versionStatus = VersionStatus.compute(tester.controller());
assertEquals(oldest, versionStatus.systemVersion().get().versionNumber());
}
@Test
+ public void testControllerVersionIsVersionOfOldestController() {
+ HostName controller1 = HostName.from("controller-1");
+ HostName controller2 = HostName.from("controller-2");
+ HostName controller3 = HostName.from("controller-3");
+ MockCuratorDb db = new MockCuratorDb(Stream.of(controller1, controller2, controller3)
+ .map(hostName -> hostName.value() + ":2222")
+ .collect(Collectors.joining(",")));
+ ControllerTester tester = new ControllerTester(db);
+
+ db.writeControllerVersion(controller1, Version.fromString("6.2"));
+ db.writeControllerVersion(controller2, Version.fromString("6.1"));
+ db.writeControllerVersion(controller3, Version.fromString("6.2"));
+
+ VersionStatus versionStatus = VersionStatus.compute(tester.controller());
+ assertEquals("Controller version is oldest version", Version.fromString("6.1"),
+ versionStatus.controllerVersion().get().versionNumber());
+
+ // Last controller upgrades
+ db.writeControllerVersion(controller2, Version.fromString("6.2"));
+ versionStatus = VersionStatus.compute(tester.controller());
+ assertEquals(Version.fromString("6.2"), versionStatus.controllerVersion().get().versionNumber());
+ }
+
+ @Test
public void testVersionStatusAfterApplicationUpdates() {
DeploymentTester tester = new DeploymentTester();
ApplicationPackage applicationPackage = new ApplicationPackageBuilder()