diff options
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.java | 147 |
1 files changed, 75 insertions, 72 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 7b045e508a9..18776be2dce 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 @@ -22,7 +22,7 @@ import com.yahoo.vespa.hosted.controller.deployment.Run; import com.yahoo.vespa.hosted.controller.persistence.CuratorDb; import com.yahoo.vespa.hosted.controller.persistence.MockCuratorDb; import com.yahoo.vespa.hosted.controller.versions.VespaVersion.Confidence; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.time.Duration; import java.time.Instant; @@ -37,11 +37,11 @@ import static com.yahoo.vespa.hosted.controller.deployment.DeploymentContext.pro import static com.yahoo.vespa.hosted.controller.deployment.DeploymentContext.stagingTest; import static com.yahoo.vespa.hosted.controller.deployment.DeploymentContext.systemTest; import static java.util.stream.Collectors.toSet; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * Test computing of version status @@ -100,8 +100,8 @@ public class VersionStatusTest { writeControllerVersion(controller3, Version.fromString("6.2"), db); VersionStatus versionStatus = VersionStatus.compute(tester.controller()); - assertEquals("Controller version is oldest version", Version.fromString("6.1"), - versionStatus.controllerVersion().get().versionNumber()); + assertEquals(Version.fromString("6.1"), + versionStatus.controllerVersion().get().versionNumber(), "Controller version is oldest version"); // Last controller upgrades writeControllerVersion(controller2, Version.fromString("6.2"), db); @@ -162,7 +162,7 @@ public class VersionStatusTest { tester.triggerJobs(); tester.controllerTester().computeVersionStatus(); List<VespaVersion> versions = tester.controller().readVersionStatus().versions(); - assertEquals("The two versions above exist", 2, versions.size()); + assertEquals(2, versions.size(), "The two versions above exist"); VespaVersion v1 = versions.get(0); assertEquals(version1, v1.versionNumber()); @@ -178,9 +178,9 @@ public class VersionStatusTest { context2.instanceId(), List.of(productionUsEast3), context3.instanceId(), List.of(productionUsWest1, productionUsEast3)), statistics1.productionSuccesses()); - assertEquals("No applications have active deployment jobs on version1.", + assertEquals( List.of(), - statistics1.runningUpgrade()); + statistics1.runningUpgrade(), "No applications have active deployment jobs on version1."); VespaVersion v2 = versions.get(1); assertEquals(version2, v2.versionNumber()); @@ -203,13 +203,13 @@ public class VersionStatusTest { } private static void assertJobsRun(String assertion, Map<ApplicationId, List<JobType>> jobs, List<Run> runs) { - assertEquals(assertion, - jobs.entrySet().stream() + assertEquals(jobs.entrySet().stream() .flatMap(entry -> entry.getValue().stream().map(type -> new JobId(entry.getKey(), type))) .collect(toSet()), runs.stream() .map(run -> run.id().job()) - .collect(toSet())); + .collect(toSet()), + assertion); } @Test @@ -273,8 +273,8 @@ public class VersionStatusTest { // Application without deployment var ignored0 = tester.newDeploymentContext("tenant1", "ignored0", "default"); - assertEquals("All applications running on this version: High", - Confidence.high, confidence(tester.controller(), version0)); + assertEquals( + Confidence.high, confidence(tester.controller(), version0), "All applications running on this version: High"); // New version is released Version version1 = new Version("6.3"); @@ -288,25 +288,25 @@ public class VersionStatusTest { .runJob(stagingTest) .failDeployment(productionUsWest1); tester.controllerTester().computeVersionStatus(); - assertEquals("One canary failed: Broken", - Confidence.broken, confidence(tester.controller(), version1)); + assertEquals( + Confidence.broken, confidence(tester.controller(), version1), "One canary failed: Broken"); // New version is released Version version2 = new Version("6.4"); tester.controllerTester().upgradeSystem(version2); tester.upgrader().maintain(); tester.triggerJobs(); - assertEquals("Confidence defaults to low for version with no applications", - Confidence.low, confidence(tester.controller(), version2)); + assertEquals( + Confidence.low, confidence(tester.controller(), version2), "Confidence defaults to low for version with no applications"); // All canaries upgrade successfully canary0.deployPlatform(version2); canary1.deployPlatform(version2); - assertEquals("Confidence for remains unchanged for version1: Broken", - Confidence.broken, confidence(tester.controller(), version1)); - assertEquals("Nothing has failed but not all canaries have upgraded: Low", - Confidence.low, confidence(tester.controller(), version2)); + assertEquals( + Confidence.broken, confidence(tester.controller(), version1), "Confidence for remains unchanged for version1: Broken"); + assertEquals( + Confidence.low, confidence(tester.controller(), version2), "Nothing has failed but not all canaries have upgraded: Low"); // Remaining canary upgrades to version2 which raises confidence to normal and more apps upgrade canary2.triggerJobs().jobAborted(systemTest).jobAborted(stagingTest); @@ -315,8 +315,8 @@ public class VersionStatusTest { tester.controllerTester().computeVersionStatus(); tester.upgrader().maintain(); tester.triggerJobs(); - assertEquals("Canaries have upgraded: Normal", - Confidence.normal, confidence(tester.controller(), version2)); + assertEquals( + Confidence.normal, confidence(tester.controller(), version2), "Canaries have upgraded: Normal"); default0.deployPlatform(version2); default1.deployPlatform(version2); default2.deployPlatform(version2); @@ -330,23 +330,23 @@ public class VersionStatusTest { // Remember confidence across restart tester.controllerTester().createNewController(); - assertEquals("Confidence remains unchanged for version0: High", - Confidence.high, confidence(tester.controller(), version0)); - assertEquals("All canaries deployed + < 90% of defaults: Normal", - Confidence.normal, confidence(tester.controller(), version2)); - assertTrue("Status for version without applications is removed", - tester.controller().readVersionStatus().versions().stream() - .noneMatch(vespaVersion -> vespaVersion.versionNumber().equals(version1))); + assertEquals( + Confidence.high, confidence(tester.controller(), version0), "Confidence remains unchanged for version0: High"); + assertEquals( + Confidence.normal, confidence(tester.controller(), version2), "All canaries deployed + < 90% of defaults: Normal"); + assertTrue(tester.controller().readVersionStatus().versions().stream() + .noneMatch(vespaVersion -> vespaVersion.versionNumber().equals(version1)), + "Status for version without applications is removed"); // Another default application upgrades, raising confidence to high default8.deployPlatform(version2); default9.deployPlatform(version2); tester.controllerTester().computeVersionStatus(); - assertEquals("Confidence remains unchanged for version0: High", - Confidence.high, confidence(tester.controller(), version0)); - assertEquals("90% of defaults deployed successfully: High", - VespaVersion.Confidence.high, confidence(tester.controller(), version2)); + assertEquals( + Confidence.high, confidence(tester.controller(), version0), "Confidence remains unchanged for version0: High"); + assertEquals( + VespaVersion.Confidence.high, confidence(tester.controller(), version2), "90% of defaults deployed successfully: High"); // A new version is released, all canaries upgrade successfully, but enough "default" apps fail to mark version // as broken @@ -366,12 +366,12 @@ public class VersionStatusTest { default3.failDeployment(stagingTest); tester.controllerTester().computeVersionStatus(); - assertEquals("Confidence remains unchanged for version0: High", - Confidence.high, confidence(tester.controller(), version0)); - assertEquals("Confidence remains unchanged for version2: High", - Confidence.high, confidence(tester.controller(), version2)); - assertEquals("40% of defaults failed: Broken", - VespaVersion.Confidence.broken, confidence(tester.controller(), version3)); + assertEquals( + Confidence.high, confidence(tester.controller(), version0), "Confidence remains unchanged for version0: High"); + assertEquals( + Confidence.high, confidence(tester.controller(), version2), "Confidence remains unchanged for version2: High"); + assertEquals( + VespaVersion.Confidence.broken, confidence(tester.controller(), version3), "40% of defaults failed: Broken"); // Test version order List<VespaVersion> versions = tester.controller().readVersionStatus().versions(); @@ -417,8 +417,8 @@ public class VersionStatusTest { .submit(appPackage) .deploy(); - assertEquals("All applications running on this version: High", - Confidence.high, confidence(tester.controller(), version0)); + assertEquals( + Confidence.high, confidence(tester.controller(), version0), "All applications running on this version: High"); // New version is released Version version1 = new Version("6.3"); @@ -430,59 +430,61 @@ public class VersionStatusTest { canary0.failDeployment(systemTest); canary0.abortJob(stagingTest); tester.controllerTester().computeVersionStatus(); - assertEquals("One canary failed: Broken", - Confidence.broken, confidence(tester.controller(), version1)); + assertEquals( + Confidence.broken, confidence(tester.controller(), version1), "One canary failed: Broken"); // New version is released Version version2 = new Version("6.4"); tester.controllerTester().upgradeSystem(version2); tester.upgrader().maintain(); - assertEquals("Confidence remains unchanged for version1 until app overrides old tests: Broken", - Confidence.broken, confidence(tester.controller(), version1)); - assertEquals("Confidence defaults to low for version with no applications", - Confidence.low, confidence(tester.controller(), version2)); + assertEquals( + Confidence.broken, confidence(tester.controller(), version1), "Confidence remains unchanged for version1 until app overrides old tests: Broken"); + assertEquals( + Confidence.low, confidence(tester.controller(), version2), "Confidence defaults to low for version with no applications"); assertEquals(version2, canary0.instance().change().platform().orElseThrow()); canary0.failDeployment(systemTest); canary0.abortJob(stagingTest); tester.controllerTester().computeVersionStatus(); - assertFalse("Previous version should be forgotten, as canary only had test jobs run on it", - tester.controller().readVersionStatus().versions().stream().anyMatch(version -> version.versionNumber().equals(version1))); + assertFalse( + tester.controller().readVersionStatus().versions().stream().anyMatch(version -> version.versionNumber().equals(version1)), + "Previous version should be forgotten, as canary only had test jobs run on it"); // App succeeds with tests, but fails production deployment canary0.runJob(systemTest) .runJob(stagingTest) .failDeployment(productionUsWest1); - assertEquals("One canary failed: Broken", - Confidence.broken, confidence(tester.controller(), version2)); + assertEquals( + Confidence.broken, confidence(tester.controller(), version2), "One canary failed: Broken"); // A new version is released, and the app again fails production deployment. Version version3 = new Version("6.5"); tester.controllerTester().upgradeSystem(version3); tester.upgrader().maintain(); - assertEquals("Confidence remains unchanged for version2: Broken", - Confidence.broken, confidence(tester.controller(), version2)); - assertEquals("Confidence defaults to low for version with no applications", - Confidence.low, confidence(tester.controller(), version3)); + assertEquals( + Confidence.broken, confidence(tester.controller(), version2), "Confidence remains unchanged for version2: Broken"); + assertEquals( + Confidence.low, confidence(tester.controller(), version3), "Confidence defaults to low for version with no applications"); assertEquals(version3, canary0.instance().change().platform().orElseThrow()); canary0.runJob(systemTest) .runJob(stagingTest) .failDeployment(productionUsWest1); tester.controllerTester().computeVersionStatus(); - assertEquals("Confidence remains unchanged for version2: Broken", - Confidence.broken, confidence(tester.controller(), version2)); - assertEquals("Canary broken, so confidence for version3: Broken", - Confidence.broken, confidence(tester.controller(), version3)); + assertEquals( + Confidence.broken, confidence(tester.controller(), version2), "Confidence remains unchanged for version2: Broken"); + assertEquals( + Confidence.broken, confidence(tester.controller(), version3), "Canary broken, so confidence for version3: Broken"); // App succeeds production deployment, clearing failure on version2 canary0.runJob(productionUsWest1); tester.controllerTester().computeVersionStatus(); - assertFalse("Previous version should be forgotten, as canary only had test jobs run on it", - tester.controller().readVersionStatus().versions().stream().anyMatch(version -> version.versionNumber().equals(version2))); - assertEquals("Canary OK, but not done upgrading, so confidence for version3: Low", - Confidence.low, confidence(tester.controller(), version3)); + assertFalse( + tester.controller().readVersionStatus().versions().stream().anyMatch(version -> version.versionNumber().equals(version2)), + "Previous version should be forgotten, as canary only had test jobs run on it"); + assertEquals( + Confidence.low, confidence(tester.controller(), version3), "Canary OK, but not done upgrading, so confidence for version3: Low"); } @Test @@ -512,8 +514,9 @@ public class VersionStatusTest { assertEquals(Confidence.high, confidence(tester.controller(), version1)); // Stale override was removed - assertFalse("Stale override removed", tester.controller().curator().readConfidenceOverrides() - .containsKey(version0)); + assertFalse( tester.controller().curator().readConfidenceOverrides() + .containsKey(version0), + "Stale override removed"); } @Test @@ -692,11 +695,11 @@ public class VersionStatusTest { private void assertOnVersion(Version version, ApplicationId instance, DeploymentTester tester) { var vespaVersion = tester.controller().readVersionStatus().version(version); - assertNotNull("Statistics for version " + version + " exist", vespaVersion); + assertNotNull(vespaVersion, "Statistics for version " + version + " exist"); var statistics = DeploymentStatistics.compute(List.of(version), tester.deploymentStatuses()).get(0); - assertTrue("Application is on version " + version, + assertTrue( Stream.of(statistics.productionSuccesses(), statistics.failingUpgrades(), statistics.runningUpgrade()) - .anyMatch(runs -> runs.stream().anyMatch(run -> run.id().application().equals(instance)))); + .anyMatch(runs -> runs.stream().anyMatch(run -> run.id().application().equals(instance))), "Application is on version " + version); } private static void writeControllerVersion(HostName hostname, Version version, CuratorDb db) { |