aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java')
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java25
1 files changed, 17 insertions, 8 deletions
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 899745c7a39..4cec38c456e 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
@@ -47,7 +47,7 @@ public class OsUpgradeSchedulerTest {
// Target is set manually
Version version0 = Version.fromString("7.0.0.20220101");
- tester.controller().upgradeOsIn(cloud, version0, false);
+ tester.controller().upgradeOsIn(cloud, version0, false, false);
// Target remains unchanged as it hasn't expired yet
for (var interval : List.of(Duration.ZERO, Duration.ofDays(30))) {
@@ -56,7 +56,8 @@ public class OsUpgradeSchedulerTest {
assertEquals(version0, tester.controller().osVersionTarget(cloud).get().osVersion().version());
}
- // New release becomes available, but is not triggered until cool-down period has passed
+ // New release becomes available, but is not triggered until cool-down period has passed, and we're inside a
+ // trigger period
Version version1 = Version.fromString("7.0.0.20220301");
tester.clock().advance(Duration.ofDays(16));
assertEquals("2022-03-03T09:05:00", formatInstant(tester.clock().instant()));
@@ -65,8 +66,6 @@ public class OsUpgradeSchedulerTest {
assertEquals(version0,
tester.controller().osVersionTarget(cloud).get().osVersion().version(),
"Target is unchanged because cooldown hasn't passed");
-
- // ... and we're inside the trigger period
tester.clock().advance(Duration.ofDays(3).plusHours(18));
assertEquals("2022-03-07T03:05:00", formatInstant(tester.clock().instant()));
scheduler.maintain();
@@ -75,8 +74,18 @@ public class OsUpgradeSchedulerTest {
"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);
Optional<OsUpgradeScheduler.Change> change = scheduler.changeIn(cloud, tester.clock().instant());
assertTrue(change.isPresent());
+ assertEquals(-1, scheduler.maintain());
+ assertEquals(version0,
+ tester.controller().osVersionTarget(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);
scheduler.maintain();
assertEquals(version1,
tester.controller().osVersionTarget(cloud).get().osVersion().version(),
@@ -106,7 +115,7 @@ public class OsUpgradeSchedulerTest {
// Set initial target
Version version0 = Version.fromString("7.0.0.20220101");
- tester.controller().upgradeOsIn(cloud, version0, false);
+ tester.controller().upgradeOsIn(cloud, version0, false, false);
// Next version is triggered
Version version1 = Version.fromString("7.0.0.20220301");
@@ -137,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);
+ tester.controller().upgradeOsIn(cloud, version0, false, false);
// Stable release (tagged outside trigger period) is scheduled once trigger period opens
Version version1 = Version.fromString("8.1");
@@ -151,7 +160,7 @@ public class OsUpgradeSchedulerTest {
// A newer version is triggered manually
Version version3 = Version.fromString("8.3");
- tester.controller().upgradeOsIn(cloud, version3, false);
+ tester.controller().upgradeOsIn(cloud, version3, false, false);
// Nothing happens in next iteration as tagged release is older than manually triggered version
scheduleUpgradeAfter(Duration.ofDays(7), version3, scheduler, tester);
@@ -168,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);
+ tester.controller().upgradeOsIn(cloud, version0, false, false);
// Latest release is not scheduled immediately
Version version1 = Version.fromString("8.1");