diff options
Diffstat (limited to 'controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance')
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; - } - } |