From 05b89413eb8a47a24b8e16255d68b42f0f5549b3 Mon Sep 17 00:00:00 2001 From: Martin Polden Date: Wed, 19 Jul 2023 15:54:29 +0200 Subject: Extract OsController --- .../maintenance/MetricsReporterTest.java | 4 +-- .../maintenance/OsUpgradeSchedulerTest.java | 34 +++++++++++----------- .../controller/maintenance/OsUpgraderTest.java | 30 +++++++++---------- .../maintenance/OsVersionStatusUpdaterTest.java | 10 +++---- .../hosted/controller/restapi/os/OsApiTest.java | 2 +- 5 files changed, 40 insertions(+), 40 deletions(-) (limited to 'controller-server/src/test/java/com') 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 49e647904cd..53f2e85ad31 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 @@ -365,7 +365,7 @@ public class MetricsReporterTest { // All nodes upgrade to initial OS version var version0 = Version.fromString("8.0"); - tester.controller().upgradeOsIn(cloud, version0, false, false); + tester.controller().os().upgradeTo(version0, cloud, false, false); osUpgrader.maintain(); tester.configServer().setOsVersion(version0, SystemApplication.tenantHost.id(), zone); tester.configServer().setOsVersion(version0, SystemApplication.configServerHost.id(), zone); @@ -379,7 +379,7 @@ public class MetricsReporterTest { var currentVersion = i == 0 ? version0 : targets.get(i - 1); var nextVersion = targets.get(i); // System starts upgrading to next OS version - tester.controller().upgradeOsIn(cloud, nextVersion, false, false); + tester.controller().os().upgradeTo(nextVersion, cloud, false, false); runAll(osUpgrader, statusUpdater, reporter); assertOsChangeDuration(Duration.ZERO, hosts); assertOsNodeCount(hosts.size(), currentVersion); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java index 4cec38c456e..27cdd847fb9 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java @@ -43,17 +43,17 @@ public class OsUpgradeSchedulerTest { // Initial run does nothing as the cloud does not have a target scheduler.maintain(); - assertTrue(tester.controller().osVersionTarget(cloud).isEmpty(), "No target set"); + assertTrue(tester.controller().os().target(cloud).isEmpty(), "No target set"); // Target is set manually Version version0 = Version.fromString("7.0.0.20220101"); - tester.controller().upgradeOsIn(cloud, version0, false, false); + tester.controller().os().upgradeTo(version0, cloud, false, false); // Target remains unchanged as it hasn't expired yet for (var interval : List.of(Duration.ZERO, Duration.ofDays(30))) { tester.clock().advance(interval); scheduler.maintain(); - assertEquals(version0, tester.controller().osVersionTarget(cloud).get().osVersion().version()); + assertEquals(version0, tester.controller().os().target(cloud).get().osVersion().version()); } // New release becomes available, but is not triggered until cool-down period has passed, and we're inside a @@ -64,37 +64,37 @@ public class OsUpgradeSchedulerTest { assertEquals(version1, scheduler.changeIn(cloud, tester.clock().instant()).get().version()); scheduler.maintain(); assertEquals(version0, - tester.controller().osVersionTarget(cloud).get().osVersion().version(), + tester.controller().os().target(cloud).get().osVersion().version(), "Target is unchanged because cooldown hasn't passed"); tester.clock().advance(Duration.ofDays(3).plusHours(18)); assertEquals("2022-03-07T03:05:00", formatInstant(tester.clock().instant())); scheduler.maintain(); assertEquals(version0, - tester.controller().osVersionTarget(cloud).get().osVersion().version(), + tester.controller().os().target(cloud).get().osVersion().version(), "Target is unchanged because we're outside trigger period"); tester.clock().advance(Duration.ofHours(5)); assertEquals("2022-03-07T08:05:00", formatInstant(tester.clock().instant())); // Time constraints have now passed, but the current target has been pinned in the meantime - tester.controller().upgradeOsIn(cloud, version0, false, true); + tester.controller().os().upgradeTo(version0, cloud, false, true); Optional change = scheduler.changeIn(cloud, tester.clock().instant()); assertTrue(change.isPresent()); assertEquals(-1, scheduler.maintain()); assertEquals(version0, - tester.controller().osVersionTarget(cloud).get().osVersion().version(), + tester.controller().os().target(cloud).get().osVersion().version(), "Target is unchanged because it's pinned"); // Target is unpinned and new version is allowed to be scheduled - tester.controller().upgradeOsIn(cloud, version0, false, false); + tester.controller().os().upgradeTo(version0, cloud, false, false); scheduler.maintain(); assertEquals(version1, - tester.controller().osVersionTarget(cloud).get().osVersion().version(), + tester.controller().os().target(cloud).get().osVersion().version(), "New target set"); // A few more days pass and target remains unchanged tester.clock().advance(Duration.ofDays(2)); scheduler.maintain(); - assertEquals(version1, tester.controller().osVersionTarget(cloud).get().osVersion().version()); + assertEquals(version1, tester.controller().os().target(cloud).get().osVersion().version()); // Estimate next change Optional nextChange = scheduler.changeIn(cloud, tester.clock().instant()); @@ -115,19 +115,19 @@ public class OsUpgradeSchedulerTest { // Set initial target Version version0 = Version.fromString("7.0.0.20220101"); - tester.controller().upgradeOsIn(cloud, version0, false, false); + tester.controller().os().upgradeTo(version0, cloud, false, false); // Next version is triggered Version version1 = Version.fromString("7.0.0.20220301"); tester.clock().advance(Duration.ofDays(44)); assertEquals("2022-03-01T02:05:00", formatInstant(tester.clock().instant())); scheduler.maintain(); - assertEquals(version0, tester.controller().osVersionTarget(cloud).get().osVersion().version()); + assertEquals(version0, tester.controller().os().target(cloud).get().osVersion().version()); // Cool-down passes tester.clock().advance(Duration.ofDays(1)); assertEquals(version1, scheduler.changeIn(cloud, tester.clock().instant()).get().version()); scheduler.maintain(); - assertEquals(version1, tester.controller().osVersionTarget(cloud).get().osVersion().version()); + assertEquals(version1, tester.controller().os().target(cloud).get().osVersion().version()); // Estimate next change Optional nextChange = scheduler.changeIn(cloud, tester.clock().instant()); @@ -146,7 +146,7 @@ public class OsUpgradeSchedulerTest { // Set initial target CloudName cloud = tester.controller().clouds().iterator().next(); Version version0 = Version.fromString("8.0"); - tester.controller().upgradeOsIn(cloud, version0, false, false); + tester.controller().os().upgradeTo(version0, cloud, false, false); // Stable release (tagged outside trigger period) is scheduled once trigger period opens Version version1 = Version.fromString("8.1"); @@ -160,7 +160,7 @@ public class OsUpgradeSchedulerTest { // A newer version is triggered manually Version version3 = Version.fromString("8.3"); - tester.controller().upgradeOsIn(cloud, version3, false, false); + tester.controller().os().upgradeTo(version3, cloud, false, false); // Nothing happens in next iteration as tagged release is older than manually triggered version scheduleUpgradeAfter(Duration.ofDays(7), version3, scheduler, tester); @@ -177,7 +177,7 @@ public class OsUpgradeSchedulerTest { // Set initial target CloudName cloud = tester.controller().clouds().iterator().next(); Version version0 = Version.fromString("8.0"); - tester.controller().upgradeOsIn(cloud, version0, false, false); + tester.controller().os().upgradeTo(version0, cloud, false, false); // Latest release is not scheduled immediately Version version1 = Version.fromString("8.1"); @@ -214,7 +214,7 @@ public class OsUpgradeSchedulerTest { tester.clock().advance(duration); scheduler.maintain(); CloudName cloud = tester.controller().clouds().iterator().next(); - OsVersionTarget target = tester.controller().osVersionTarget(cloud).get(); + OsVersionTarget target = tester.controller().os().target(cloud).get(); assertEquals(version, target.osVersion().version()); } 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 cc9df6b38e6..056db4f119c 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 @@ -71,9 +71,9 @@ public class OsUpgraderTest { // New OS version released Version version1 = Version.fromString("7.1"); - tester.controller().upgradeOsIn(cloud1, Version.fromString("7.0"), false, false); - tester.controller().upgradeOsIn(cloud1, version1, false, false); - assertEquals(1, tester.controller().osVersionTargets().size()); // Only allows one version per cloud + tester.controller().os().upgradeTo(Version.fromString("7.0"), cloud1, false, false); + tester.controller().os().upgradeTo(version1, cloud1, false, false); + assertEquals(1, tester.controller().os().targets().size()); // Only allows one version per cloud statusUpdater.maintain(); // zone 0: controllers upgrade first @@ -127,9 +127,9 @@ public class OsUpgraderTest { osUpgrader.maintain(); assertWanted(version1, SystemApplication.tenantHost, zone1, zone2, zone3, zone4); statusUpdater.maintain(); - assertTrue(tester.controller().osVersionStatus().nodesIn(cloud1).stream() - .filter(node -> !node.hostname().equals(nodeDeferringOsUpgrade.hostname())) - .allMatch(node -> node.currentVersion().equals(version1)), + assertTrue(tester.controller().os().status().nodesIn(cloud1).stream() + .filter(node -> !node.hostname().equals(nodeDeferringOsUpgrade.hostname())) + .allMatch(node -> node.currentVersion().equals(version1)), "All non-deferring nodes are on target version"); } @@ -150,8 +150,8 @@ public class OsUpgraderTest { // New OS version released Version version = Version.fromString("7.1"); - tester.controller().upgradeOsIn(cloud, Version.fromString("7.0"), false, false); - tester.controller().upgradeOsIn(cloud, version, false, false); // Replaces existing target + tester.controller().os().upgradeTo(Version.fromString("7.0"), cloud, false, false); + tester.controller().os().upgradeTo(version, cloud, false, false); // Replaces existing target statusUpdater.maintain(); // zone 1 upgrades @@ -172,8 +172,8 @@ public class OsUpgraderTest { // No more upgrades osUpgrader.maintain(); assertWanted(version, SystemApplication.tenantHost, zone1, zone2); - assertTrue(tester.controller().osVersionStatus().nodesIn(cloud).stream() - .noneMatch(node -> node.currentVersion().isBefore(version)), "All nodes on target version or newer"); + assertTrue(tester.controller().os().status().nodesIn(cloud).stream() + .noneMatch(node -> node.currentVersion().isBefore(version)), "All nodes on target version or newer"); } @Test @@ -194,7 +194,7 @@ public class OsUpgraderTest { // New OS version released Version version0 = Version.fromString("1.0"); Version version1 = Version.fromString("2.0"); - tester.controller().upgradeOsIn(cloud, version1, false, false); + tester.controller().os().upgradeTo(version1, cloud, false, false); statusUpdater.maintain(); // All zones upgrade @@ -203,11 +203,11 @@ public class OsUpgraderTest { completeUpgrade(version1, SystemApplication.tenantHost, zone); statusUpdater.maintain(); } - assertTrue(tester.controller().osVersionStatus().nodesIn(cloud).stream() + assertTrue(tester.controller().os().status().nodesIn(cloud).stream() .allMatch(node -> node.currentVersion().equals(version1)), "All nodes on target version"); // Downgrade is triggered - tester.controller().upgradeOsIn(cloud, version0, true, false); + tester.controller().os().upgradeTo(version0, cloud, true, false); // All zones downgrade, in reverse order for (var zone : List.of(zone2, zone1)) { @@ -215,12 +215,12 @@ public class OsUpgraderTest { completeUpgrade(version0, SystemApplication.tenantHost, zone); statusUpdater.maintain(); } - assertTrue(tester.controller().osVersionStatus().nodesIn(cloud).stream() + assertTrue(tester.controller().os().status().nodesIn(cloud).stream() .allMatch(node -> node.currentVersion().equals(version0)), "All nodes on target version"); } private List nodesOn(Version version) { - return tester.controller().osVersionStatus().versions().entrySet().stream() + return tester.controller().os().status().versions().entrySet().stream() .filter(entry -> entry.getKey().version().equals(version)) .flatMap(entry -> entry.getValue().stream()) .toList(); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsVersionStatusUpdaterTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsVersionStatusUpdaterTest.java index 92be999e508..f45c7bfcdfb 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsVersionStatusUpdaterTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsVersionStatusUpdaterTest.java @@ -35,24 +35,24 @@ public class OsVersionStatusUpdaterTest { tester.zoneRegistry().setOsUpgradePolicy(CloudName.DEFAULT, upgradePolicy.build()); // Initially empty - assertSame(OsVersionStatus.empty, tester.controller().osVersionStatus()); + assertSame(OsVersionStatus.empty, tester.controller().os().status()); // Setting a new target adds it to current status Version version1 = Version.fromString("7.1"); CloudName cloud = CloudName.DEFAULT; - tester.controller().upgradeOsIn(cloud, version1, false, false); + tester.controller().os().upgradeTo(version1, cloud, false, false); statusUpdater.maintain(); - var osVersions = tester.controller().osVersionStatus().versions(); + var osVersions = tester.controller().os().status().versions(); assertEquals(3, osVersions.size()); assertFalse(osVersions.get(new OsVersion(Version.emptyVersion, cloud)).isEmpty(), "All nodes on unknown version"); assertTrue(osVersions.get(new OsVersion(version1, cloud)).isEmpty(), "No nodes on current target"); CloudName otherCloud = CloudName.AWS; - tester.controller().upgradeOsIn(otherCloud, version1, false, false); + tester.controller().os().upgradeTo(version1, otherCloud, false, false); statusUpdater.maintain(); - osVersions = tester.controller().osVersionStatus().versions(); + osVersions = tester.controller().os().status().versions(); assertEquals(4, osVersions.size()); // 2 in cloud, 2 in otherCloud. assertFalse(osVersions.get(new OsVersion(Version.emptyVersion, cloud)).isEmpty(), "All nodes on unknown version"); assertTrue(osVersions.get(new OsVersion(version1, cloud)).isEmpty(), "No nodes on current target"); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/os/OsApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/os/OsApiTest.java index d6edb90d149..e569e0aca5b 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/os/OsApiTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/os/OsApiTest.java @@ -160,7 +160,7 @@ public class OsApiTest extends ControllerContainerTest { } private void updateVersionStatus() { - tester.controller().updateOsVersionStatus(OsVersionStatus.compute(tester.controller())); + tester.controller().os().updateStatus(OsVersionStatus.compute(tester.controller())); } private void completeUpgrade(ZoneId... zones) { -- cgit v1.2.3