aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java
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/vespa/hosted/controller/versions/VersionStatusTest.java
parent3991eda2b969053748350b3a745b31d391f6917b (diff)
Decide controller version across all controllers
Diffstat (limited to 'controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java')
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java38
1 files changed, 32 insertions, 6 deletions
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()