aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server/src/test/java/com
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2018-02-26 14:03:21 +0100
committerMartin Polden <mpolden@mpolden.no>2018-02-26 14:57:54 +0100
commit61d6c3b9c64f64c72620b963a6dd5c029ee1fa6f (patch)
treeab953c10a856f55957ca61012f69da2c3251d243 /controller-server/src/test/java/com
parent48ff9e9a52610b4c60e3614e0e0fcfd713c8af0a (diff)
Allow version confidence to be overridden
Diffstat (limited to 'controller-server/src/test/java/com')
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiTest.java31
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/versions/VersionStatusTest.java28
2 files changed, 52 insertions, 7 deletions
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiTest.java
index 984e184cdcf..e5f3af8c06a 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiTest.java
@@ -47,26 +47,43 @@ public class ControllerApiTest extends ControllerContainerTest {
// Get current configuration
tester.assertResponse(authenticatedRequest("http://localhost:8080/controller/v1/jobs/upgrader", new byte[0], Request.Method.GET),
- "{\"upgradesPerMinute\":0.5}",
+ "{\"upgradesPerMinute\":0.5,\"confidenceOverrides\":[]}",
200);
// Set invalid configuration
- ;
tester.assertResponse(
hostedOperatorRequest("http://localhost:8080/controller/v1/jobs/upgrader", "{\"upgradesPerMinute\":-1}", Request.Method.PATCH),
"{\"error-code\":\"BAD_REQUEST\",\"message\":\"Upgrades per minute must be >= 0\"}",
400);
- // Unrecognized field
+ // Ignores unrecognized field
tester.assertResponse(
- hostedOperatorRequest("http://localhost:8080/controller/v1/jobs/upgrader","{\"foo\":bar}", Request.Method.PATCH),
- "{\"error-code\":\"BAD_REQUEST\",\"message\":\"Unable to configure upgrader with data in request: '{\\\"foo\\\":bar}'\"}",
+ hostedOperatorRequest("http://localhost:8080/controller/v1/jobs/upgrader","{\"foo\":\"bar\"}", Request.Method.PATCH),
+ "{\"error-code\":\"BAD_REQUEST\",\"message\":\"No such modifiable field(s)\"}",
400);
- // Patch configuration
+ // Set upgrades per minute
tester.assertResponse(
hostedOperatorRequest("http://localhost:8080/controller/v1/jobs/upgrader", "{\"upgradesPerMinute\":42.0}", Request.Method.PATCH),
- "{\"upgradesPerMinute\":42.0}",
+ "{\"upgradesPerMinute\":42.0,\"confidenceOverrides\":[]}",
+ 200);
+
+ // Override confidence
+ tester.assertResponse(
+ hostedOperatorRequest("http://localhost:8080/controller/v1/jobs/upgrader/confidence/6.42", "broken", Request.Method.POST),
+ "{\"upgradesPerMinute\":42.0,\"confidenceOverrides\":[{\"6.42\":\"broken\"}]}",
+ 200);
+
+ // Override confidence for another version
+ tester.assertResponse(
+ hostedOperatorRequest("http://localhost:8080/controller/v1/jobs/upgrader/confidence/6.43", "broken", Request.Method.POST),
+ "{\"upgradesPerMinute\":42.0,\"confidenceOverrides\":[{\"6.42\":\"broken\"},{\"6.43\":\"broken\"}]}",
+ 200);
+
+ // Remove first override
+ tester.assertResponse(
+ hostedOperatorRequest("http://localhost:8080/controller/v1/jobs/upgrader/confidence/6.42", "", Request.Method.DELETE),
+ "{\"upgradesPerMinute\":42.0,\"confidenceOverrides\":[{\"6.43\":\"broken\"}]}",
200);
}
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 5ccd1035037..27e26e3267a 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
@@ -242,6 +242,34 @@ public class VersionStatusTest {
assertEquals("5.3", versions.get(2).versionNumber().toString());
}
+ @Test
+ public void testConfidenceOverride() {
+ DeploymentTester tester = new DeploymentTester();
+ Version version0 = new Version("5.0");
+ tester.upgradeSystem(version0);
+
+ // Create and deploy application on current version
+ Application app = tester.createAndDeploy("app", 1, "canary");
+ tester.updateVersionStatus();
+ assertEquals(Confidence.high, confidence(tester.controller(), version0));
+
+ // Override confidence
+ tester.upgrader().overrideConfidence(version0, Confidence.broken);
+ tester.updateVersionStatus();
+ assertEquals(Confidence.broken, confidence(tester.controller(), version0));
+
+ // New version is released and application upgrades
+ Version version1 = new Version("5.1");
+ tester.upgradeSystem(version1);
+ tester.completeUpgrade(app, version1, "canary");
+ tester.updateVersionStatus();
+ assertEquals(Confidence.high, confidence(tester.controller(), version1));
+
+ // Stale override was removed
+ assertFalse("Stale override removed", tester.controller().curator().readConfidenceOverrides()
+ .keySet().contains(version0));
+ }
+
private Confidence confidence(Controller controller, Version version) {
return controller.versionStatus().versions().stream()
.filter(v -> v.statistics().version().equals(version))