summaryrefslogtreecommitdiffstats
path: root/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance
diff options
context:
space:
mode:
Diffstat (limited to 'controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance')
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/MetricsReporterTest.java8
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgraderTest.java14
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgraderTest.java61
3 files changed, 39 insertions, 44 deletions
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/MetricsReporterTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/MetricsReporterTest.java
index 99eb4f049b6..e0fb2aa0ee1 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/MetricsReporterTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/MetricsReporterTest.java
@@ -9,6 +9,7 @@ import com.yahoo.config.provision.zone.UpgradePolicy;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.ControllerTester;
+import com.yahoo.vespa.hosted.controller.api.integration.configserver.Node;
import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.SystemApplication;
import com.yahoo.vespa.hosted.controller.deployment.ApplicationPackageBuilder;
@@ -19,6 +20,7 @@ import com.yahoo.vespa.hosted.controller.persistence.MockCuratorDb;
import org.junit.Test;
import java.time.Duration;
+import java.util.Comparator;
import java.util.List;
import static com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType.productionUsWest1;
@@ -250,6 +252,9 @@ public class MetricsReporterTest {
assertEquals(0, getNodesFailingUpgrade());
// 1/3 nodes upgrade within timeout
+ assertEquals("Wanted version is raised for all nodes", version,
+ tester.configServer().nodeRepository().list(zone1.getId(), SystemApplication.configServer.id()).stream()
+ .map(Node::wantedVersion).min(Comparator.naturalOrder()).get());
tester.configServer().setVersion(SystemApplication.configServer.id(), zone1.getId(), version, 1);
tester.clock().advance(Duration.ofMinutes(30).plus(Duration.ofSeconds(1)));
tester.computeVersionStatus();
@@ -303,6 +308,9 @@ public class MetricsReporterTest {
assertEquals(0, getNodesFailingOsUpgrade());
// 2/6 nodes upgrade within timeout
+ assertEquals("Wanted OS version is raised for all nodes", version,
+ tester.configServer().nodeRepository().list(zone.getId(), SystemApplication.tenantHost.id()).stream()
+ .map(Node::wantedOsVersion).min(Comparator.naturalOrder()).get());
tester.configServer().setOsVersion(SystemApplication.tenantHost.id(), zone.getId(), version, 2);
tester.clock().advance(Duration.ofMinutes(30 * 3 /* time allowance * node count */).plus(Duration.ofSeconds(1)));
statusUpdater.maintain();
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgraderTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgraderTest.java
index cf3d978ef62..9d910afd476 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgraderTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgraderTest.java
@@ -13,7 +13,6 @@ import com.yahoo.vespa.hosted.controller.application.SystemApplication;
import com.yahoo.vespa.hosted.controller.integration.NodeRepositoryMock;
import com.yahoo.vespa.hosted.controller.integration.ZoneApiMock;
import com.yahoo.vespa.hosted.controller.versions.NodeVersion;
-import org.junit.Before;
import org.junit.Test;
import java.time.Duration;
@@ -35,16 +34,9 @@ public class OsUpgraderTest {
private static final ZoneApi zone4 = ZoneApiMock.newBuilder().withId("prod.us-east-3").build();
private static final ZoneApi zone5 = ZoneApiMock.newBuilder().withId("prod.us-north-1").withCloud("other").build();
- private ControllerTester tester;
- private OsVersionStatusUpdater statusUpdater;
-
- @Before
- public void before() {
- tester = new ControllerTester();
- statusUpdater = new OsVersionStatusUpdater(tester.controller(), Duration.ofDays(1),
- new JobControl(tester.controller().curator()));
- }
-
+ private final ControllerTester tester = new ControllerTester();
+ private final OsVersionStatusUpdater statusUpdater = new OsVersionStatusUpdater(tester.controller(), Duration.ofDays(1),
+ new JobControl(tester.controller().curator()));
@Test
public void upgrade_os() {
OsUpgrader osUpgrader = osUpgrader(
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgraderTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgraderTest.java
index 08dbd7e48db..dbcd9b7f6c3 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgraderTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgraderTest.java
@@ -10,13 +10,13 @@ import com.yahoo.vespa.hosted.controller.application.SystemApplication;
import com.yahoo.vespa.hosted.controller.integration.NodeRepositoryMock;
import com.yahoo.vespa.hosted.controller.integration.ZoneApiMock;
import com.yahoo.vespa.hosted.controller.versions.VespaVersion;
-import org.junit.Before;
import org.junit.Test;
import java.time.Duration;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -31,12 +31,7 @@ public class SystemUpgraderTest {
private static final ZoneApi zone3 = ZoneApiMock.fromId("prod.us-central-1");
private static final ZoneApi zone4 = ZoneApiMock.fromId("prod.us-east-3");
- private ControllerTester tester;
-
- @Before
- public void before() {
- tester = new ControllerTester();
- }
+ private final ControllerTester tester = new ControllerTester();
@Test
public void upgrade_system() {
@@ -295,27 +290,26 @@ public class SystemUpgraderTest {
}
/** Simulate upgrade of nodes allocated to given application. In a real system this is done by the node itself */
- private void completeUpgrade(SystemApplication application, Version version, ZoneApi... zones) {
- assertWantedVersion(application, version, zones);
- for (ZoneApi zone : zones) {
+ private void completeUpgrade(SystemApplication application, Version version, ZoneApi first, ZoneApi... rest) {
+ assertWantedVersion(application, version, first, rest);
+ Stream.concat(Stream.of(first), Stream.of(rest)).forEach(zone -> {
for (Node node : listNodes(zone, application)) {
nodeRepository().putByHostname(
zone.getId(),
new Node.Builder(node).currentVersion(node.wantedVersion()).build());
}
-
assertCurrentVersion(application, version, zone);
- }
+ });
}
- private void convergeServices(SystemApplication application, ZoneApi... zones) {
- for (ZoneApi zone : zones) {
+ private void convergeServices(SystemApplication application, ZoneApi first, ZoneApi... rest) {
+ Stream.concat(Stream.of(first), Stream.of(rest)).forEach(zone -> {
tester.configServer().convergeServices(application.id(), zone.getId());
- }
+ });
}
- private void completeUpgrade(List<SystemApplication> applications, Version version, ZoneApi... zones) {
- applications.forEach(application -> completeUpgrade(application, version, zones));
+ private void completeUpgrade(List<SystemApplication> applications, Version version, ZoneApi zone, ZoneApi... rest) {
+ applications.forEach(application -> completeUpgrade(application, version, zone, rest));
}
private void failNodeIn(ZoneApi zone, SystemApplication application) {
@@ -337,29 +331,35 @@ public class SystemUpgraderTest {
assertEquals(version, tester.controller().versionStatus().controllerVersion().get().versionNumber());
}
- private void assertWantedVersion(SystemApplication application, Version version, ZoneApi... zones) {
- assertVersion(application, version, Node::wantedVersion, zones);
+ private void assertWantedVersion(SystemApplication application, Version version, ZoneApi first, ZoneApi... rest) {
+ Stream.concat(Stream.of(first), Stream.of(rest)).forEach(zone -> {
+ if (!application.hasApplicationPackage()) {
+ assertEquals("Target version set for " + application + " in " + zone.getId(), version,
+ nodeRepository().targetVersionsOf(zone.getId()).vespaVersion(application.nodeType()).orElse(Version.emptyVersion));
+ }
+ assertVersion(application, version, Node::wantedVersion, zone);
+ });
}
- private void assertCurrentVersion(SystemApplication application, Version version, ZoneApi... zones) {
- assertVersion(application, version, Node::currentVersion, zones);
+ private void assertCurrentVersion(SystemApplication application, Version version, ZoneApi first, ZoneApi... rest) {
+ assertVersion(application, version, Node::currentVersion, first, rest);
}
- private void assertWantedVersion(List<SystemApplication> applications, Version version, ZoneApi... zones) {
- applications.forEach(application -> assertVersion(application, version, Node::wantedVersion, zones));
+ private void assertWantedVersion(List<SystemApplication> applications, Version version, ZoneApi first, ZoneApi... rest) {
+ applications.forEach(application -> assertWantedVersion(application, version, first, rest));
}
- private void assertCurrentVersion(List<SystemApplication> applications, Version version, ZoneApi... zones) {
- applications.forEach(application -> assertVersion(application, version, Node::currentVersion, zones));
+ private void assertCurrentVersion(List<SystemApplication> applications, Version version, ZoneApi first, ZoneApi... rest) {
+ applications.forEach(application -> assertVersion(application, version, Node::currentVersion, first, rest));
}
private void assertVersion(SystemApplication application, Version version, Function<Node, Version> versionField,
- ZoneApi... zones) {
- for (ZoneApi zone : requireNonEmpty(zones)) {
+ ZoneApi first, ZoneApi... rest) {
+ Stream.concat(Stream.of(first), Stream.of(rest)).forEach(zone -> {
for (Node node : listNodes(zone, application)) {
assertEquals(application + " version", version, versionField.apply(node));
}
- }
+ });
}
private List<Node> listNodes(ZoneApi zone, SystemApplication application) {
@@ -378,9 +378,4 @@ public class SystemUpgraderTest {
new JobControl(tester.curator()));
}
- private static <T> T[] requireNonEmpty(T[] args) {
- if (args.length == 0) throw new IllegalArgumentException("Need at least one argument");
- return args;
- }
-
}