aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server/src/test/java/com/yahoo
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@verizonmedia.com>2019-10-31 23:43:35 +0100
committerValerij Fredriksen <valerijf@verizonmedia.com>2019-10-31 23:46:22 +0100
commit232caa29debc866d83ddc31ca46533b81fe4cab0 (patch)
tree95cc033062cdf0674a5bb82e82dbe66c194ababc /controller-server/src/test/java/com/yahoo
parentcbd6fe217c031ab04f12f2aa70bb3e924b19790d (diff)
Add operatorRequest() to ControllerContainerTest
Diffstat (limited to 'controller-server/src/test/java/com/yahoo')
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerTest.java16
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/configserver/ConfigServerApiHandlerTest.java30
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/ControllerApiTest.java40
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiTest.java30
4 files changed, 50 insertions, 66 deletions
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerTest.java
index 3aa46b90c01..07da3807f91 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerTest.java
@@ -34,12 +34,16 @@ import static org.junit.Assert.assertEquals;
*/
public class ControllerContainerTest {
+ private static final AthenzUser hostedOperator = AthenzUser.fromUserId("alice");
private static final AthenzUser defaultUser = AthenzUser.fromUserId("bob");
protected JDisc container;
@Before
- public void startContainer() { container = JDisc.fromServicesXml(controllerServicesXml(), Networking.disable); }
+ public void startContainer() {
+ container = JDisc.fromServicesXml(controllerServicesXml(), Networking.disable);
+ addUserToHostedOperatorRole(hostedOperator);
+ }
@After
public void stopContainer() { container.close(); }
@@ -151,10 +155,18 @@ public class ControllerContainerTest {
return addIdentityToRequest(new Request(uri), defaultUser);
}
- protected static Request authenticatedRequest(String uri, byte[] body, Request.Method method) {
+ protected static Request authenticatedRequest(String uri, String body, Request.Method method) {
return addIdentityToRequest(new Request(uri, body, method), defaultUser);
}
+ protected static Request operatorRequest(String uri) {
+ return addIdentityToRequest(new Request(uri), hostedOperator);
+ }
+
+ protected static Request operatorRequest(String uri, String body, Request.Method method) {
+ return addIdentityToRequest(new Request(uri, body, method), hostedOperator);
+ }
+
protected static Request addIdentityToRequest(Request request, AthenzIdentity identity) {
request.getHeaders().put(IDENTITY_HEADER_NAME, identity.getFullName());
return request;
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/configserver/ConfigServerApiHandlerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/configserver/ConfigServerApiHandlerTest.java
index 6d99ea4a5d2..00e90114200 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/configserver/ConfigServerApiHandlerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/configserver/ConfigServerApiHandlerTest.java
@@ -5,9 +5,6 @@ import com.yahoo.application.container.handler.Request;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.zone.ZoneApi;
-import com.yahoo.text.Utf8;
-import com.yahoo.vespa.athenz.api.AthenzIdentity;
-import com.yahoo.vespa.athenz.api.AthenzUser;
import com.yahoo.vespa.hosted.controller.integration.ConfigServerProxyMock;
import com.yahoo.vespa.hosted.controller.integration.ZoneApiMock;
import com.yahoo.vespa.hosted.controller.integration.ZoneRegistryMock;
@@ -29,7 +26,6 @@ import static org.junit.Assert.assertFalse;
*/
public class ConfigServerApiHandlerTest extends ControllerContainerTest {
- private static final AthenzIdentity HOSTED_VESPA_OPERATOR = AthenzUser.fromUserId("johnoperator");
private static final String responseFiles = "src/test/java/com/yahoo/vespa/hosted/controller/restapi/configserver/responses/";
private static final List<ZoneApi> zones = List.of(
ZoneApiMock.fromId("prod.us-north-1"),
@@ -48,7 +44,6 @@ public class ConfigServerApiHandlerTest extends ControllerContainerTest {
.setZones(zones);
this.tester = new ContainerControllerTester(container, responseFiles);
this.proxy = (ConfigServerProxyMock) container.components().getComponent(ConfigServerProxyMock.class.getName());
- addUserToHostedOperatorRole(HOSTED_VESPA_OPERATOR);
}
@Test
@@ -63,23 +58,23 @@ public class ConfigServerApiHandlerTest extends ControllerContainerTest {
assertLastRequest("https://cfg.prod.us-north-1.test.vip:4443/", "GET");
// POST /configserver/v1/dev/us-north-2/nodes/v2/command/restart?hostname=node1
- tester.containerTester().assertResponse(hostedOperatorRequest("http://localhost:8080/configserver/v1/dev/aws-us-north-2/nodes/v2/command/restart?hostname=node1",
- new byte[0], Request.Method.POST),
+ tester.containerTester().assertResponse(operatorRequest("http://localhost:8080/configserver/v1/dev/aws-us-north-2/nodes/v2/command/restart?hostname=node1",
+ "", Request.Method.POST),
"ok");
// PUT /configserver/v1/prod/us-north-1/nodes/v2/state/dirty/node1
- tester.containerTester().assertResponse(hostedOperatorRequest("http://localhost:8080/configserver/v1/prod/us-north-1/nodes/v2/state/dirty/node1",
- new byte[0], Request.Method.PUT), "ok");
+ tester.containerTester().assertResponse(operatorRequest("http://localhost:8080/configserver/v1/prod/us-north-1/nodes/v2/state/dirty/node1",
+ "", Request.Method.PUT), "ok");
assertLastRequest("https://cfg.prod.us-north-1.test.vip:4443/", "PUT");
// DELETE /configserver/v1/prod/us-north-1/nodes/v2/node/node1
- tester.containerTester().assertResponse(hostedOperatorRequest("http://localhost:8080/configserver/v1/prod/controller/nodes/v2/node/node1",
- new byte[0], Request.Method.DELETE), "ok");
+ tester.containerTester().assertResponse(operatorRequest("http://localhost:8080/configserver/v1/prod/controller/nodes/v2/node/node1",
+ "", Request.Method.DELETE), "ok");
assertLastRequest("https://api.tld:4443/", "DELETE");
// PATCH /configserver/v1/prod/us-north-1/nodes/v2/node/node1
- tester.containerTester().assertResponse(hostedOperatorRequest("http://localhost:8080/configserver/v1/dev/aws-us-north-2/nodes/v2/node/node1",
- Utf8.toBytes("{\"currentRestartGeneration\": 1}"),
+ tester.containerTester().assertResponse(operatorRequest("http://localhost:8080/configserver/v1/dev/aws-us-north-2/nodes/v2/node/node1",
+ "{\"currentRestartGeneration\": 1}",
Request.Method.PATCH), "ok");
assertLastRequest("https://cfg.dev.aws-us-north-2.test.vip:4443/", "PATCH");
assertEquals("{\"currentRestartGeneration\": 1}", proxy.lastRequestBody().get());
@@ -102,8 +97,8 @@ public class ConfigServerApiHandlerTest extends ControllerContainerTest {
@Test
public void test_invalid_requests() {
// POST /configserver/v1/prod/us-north-34/nodes/v2
- tester.containerTester().assertResponse(() -> hostedOperatorRequest("http://localhost:8080/configserver/v1/prod/us-north-42/nodes/v2",
- new byte[0], Request.Method.POST),
+ tester.containerTester().assertResponse(() -> operatorRequest("http://localhost:8080/configserver/v1/prod/us-north-42/nodes/v2",
+ "", Request.Method.POST),
"{\"error-code\":\"BAD_REQUEST\",\"message\":\"No such zone: prod.us-north-42\"}", 400);
assertFalse(proxy.lastReceived().isPresent());
}
@@ -113,9 +108,4 @@ public class ConfigServerApiHandlerTest extends ControllerContainerTest {
assertEquals(List.of(URI.create(target)), last.getTargets());
assertEquals(com.yahoo.jdisc.http.HttpRequest.Method.valueOf(method), last.getMethod());
}
-
- private static Request hostedOperatorRequest(String uri, byte[] body, Request.Method method) {
- return addIdentityToRequest(new Request(uri, body, method), HOSTED_VESPA_OPERATOR);
- }
-
} \ No newline at end of file
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 74d637499bd..13e82e5132e 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
@@ -4,8 +4,6 @@ package com.yahoo.vespa.hosted.controller.restapi.controller;
import com.yahoo.application.container.handler.Request;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.test.ManualClock;
-import com.yahoo.vespa.athenz.api.AthenzIdentity;
-import com.yahoo.vespa.athenz.api.AthenzUser;
import com.yahoo.vespa.hosted.controller.auditlog.AuditLogger;
import com.yahoo.vespa.hosted.controller.restapi.ContainerControllerTester;
import com.yahoo.vespa.hosted.controller.restapi.ControllerContainerTest;
@@ -27,48 +25,46 @@ import static org.junit.Assert.assertFalse;
public class ControllerApiTest extends ControllerContainerTest {
private static final String responseFiles = "src/test/java/com/yahoo/vespa/hosted/controller/restapi/controller/responses/";
- private static final AthenzIdentity HOSTED_VESPA_OPERATOR = AthenzUser.fromUserId("johnoperator");
private ContainerControllerTester tester;
@Before
public void before() {
- addUserToHostedOperatorRole(HOSTED_VESPA_OPERATOR);
tester = new ContainerControllerTester(container, responseFiles);
}
@Test
public void testControllerApi() {
- tester.assertResponse(authenticatedRequest("http://localhost:8080/controller/v1/", new byte[0], Request.Method.GET), new File("root.json"));
+ tester.assertResponse(authenticatedRequest("http://localhost:8080/controller/v1/", "", Request.Method.GET), new File("root.json"));
// POST deactivates a maintenance job
- tester.assertResponse(hostedOperatorRequest("http://localhost:8080/controller/v1/maintenance/inactive/DeploymentExpirer",
+ tester.assertResponse(operatorRequest("http://localhost:8080/controller/v1/maintenance/inactive/DeploymentExpirer",
"", Request.Method.POST),
"{\"message\":\"Deactivated job 'DeploymentExpirer'\"}", 200);
// GET a list of all maintenance jobs
- tester.assertResponse(authenticatedRequest("http://localhost:8080/controller/v1/maintenance/", new byte[0], Request.Method.GET),
+ tester.assertResponse(authenticatedRequest("http://localhost:8080/controller/v1/maintenance/", "", Request.Method.GET),
new File("maintenance.json"));
// DELETE activates maintenance job
- tester.assertResponse(hostedOperatorRequest("http://localhost:8080/controller/v1/maintenance/inactive/DeploymentExpirer",
+ tester.assertResponse(operatorRequest("http://localhost:8080/controller/v1/maintenance/inactive/DeploymentExpirer",
"", Request.Method.DELETE),
"{\"message\":\"Re-activated job 'DeploymentExpirer'\"}",
200);
// DELETE fails to activate unknown maintenance job
- tester.assertResponse(hostedOperatorRequest("http://localhost:8080/controller/v1/maintenance/inactive/foo",
+ tester.assertResponse(operatorRequest("http://localhost:8080/controller/v1/maintenance/inactive/foo",
"", Request.Method.DELETE),
"{\"error-code\":\"NOT_FOUND\",\"message\":\"No job named 'foo'\"}",
404);
// DELETE clears inactive flag for maintenance job that has been removed from the code base
tester.controller().curator().writeInactiveJobs(Set.of("bar"));
- tester.assertResponse(hostedOperatorRequest("http://localhost:8080/controller/v1/maintenance/inactive/bar",
+ tester.assertResponse(operatorRequest("http://localhost:8080/controller/v1/maintenance/inactive/bar",
"", Request.Method.DELETE),
"{\"message\":\"Re-activated job 'bar'\"}",
200);
- tester.assertResponse(hostedOperatorRequest("http://localhost:8080/controller/v1/maintenance/inactive/bar",
+ tester.assertResponse(operatorRequest("http://localhost:8080/controller/v1/maintenance/inactive/bar",
"", Request.Method.DELETE),
"{\"error-code\":\"NOT_FOUND\",\"message\":\"No job named 'bar'\"}",
404);
@@ -79,55 +75,55 @@ public class ControllerApiTest extends ControllerContainerTest {
@Test
public void testUpgraderApi() {
// Get current configuration
- tester.assertResponse(authenticatedRequest("http://localhost:8080/controller/v1/jobs/upgrader", new byte[0], Request.Method.GET),
+ tester.assertResponse(authenticatedRequest("http://localhost:8080/controller/v1/jobs/upgrader", "", Request.Method.GET),
"{\"upgradesPerMinute\":100.0,\"confidenceOverrides\":[]}",
200);
// Set invalid configuration
tester.assertResponse(
- hostedOperatorRequest("http://localhost:8080/controller/v1/jobs/upgrader", "{\"upgradesPerMinute\":-1}", Request.Method.PATCH),
+ operatorRequest("http://localhost:8080/controller/v1/jobs/upgrader", "{\"upgradesPerMinute\":-1}", Request.Method.PATCH),
"{\"error-code\":\"BAD_REQUEST\",\"message\":\"Upgrades per minute must be >= 0, got -1.0\"}",
400);
// Ignores unrecognized field
tester.assertResponse(
- hostedOperatorRequest("http://localhost:8080/controller/v1/jobs/upgrader","{\"foo\":\"bar\"}", Request.Method.PATCH),
+ operatorRequest("http://localhost:8080/controller/v1/jobs/upgrader", "{\"foo\":\"bar\"}", Request.Method.PATCH),
"{\"error-code\":\"BAD_REQUEST\",\"message\":\"No such modifiable field(s)\"}",
400);
// Set upgrades per minute
tester.assertResponse(
- hostedOperatorRequest("http://localhost:8080/controller/v1/jobs/upgrader", "{\"upgradesPerMinute\":42.0}", Request.Method.PATCH),
+ operatorRequest("http://localhost:8080/controller/v1/jobs/upgrader", "{\"upgradesPerMinute\":42.0}", Request.Method.PATCH),
"{\"upgradesPerMinute\":42.0,\"confidenceOverrides\":[]}",
200);
// Set target major version
tester.assertResponse(
- hostedOperatorRequest("http://localhost:8080/controller/v1/jobs/upgrader", "{\"targetMajorVersion\":6}", Request.Method.PATCH),
+ operatorRequest("http://localhost:8080/controller/v1/jobs/upgrader", "{\"targetMajorVersion\":6}", Request.Method.PATCH),
"{\"upgradesPerMinute\":42.0,\"targetMajorVersion\":6,\"confidenceOverrides\":[]}",
200);
// Clear target major version
tester.assertResponse(
- hostedOperatorRequest("http://localhost:8080/controller/v1/jobs/upgrader", "{\"targetMajorVersion\":null}", Request.Method.PATCH),
+ operatorRequest("http://localhost:8080/controller/v1/jobs/upgrader", "{\"targetMajorVersion\":null}", Request.Method.PATCH),
"{\"upgradesPerMinute\":42.0,\"confidenceOverrides\":[]}",
200);
// Override confidence
tester.assertResponse(
- hostedOperatorRequest("http://localhost:8080/controller/v1/jobs/upgrader/confidence/6.42", "broken", Request.Method.POST),
+ operatorRequest("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),
+ operatorRequest("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),
+ operatorRequest("http://localhost:8080/controller/v1/jobs/upgrader/confidence/6.42", "", Request.Method.DELETE),
"{\"upgradesPerMinute\":42.0,\"confidenceOverrides\":[{\"6.43\":\"broken\"}]}",
200);
@@ -160,8 +156,4 @@ public class ControllerApiTest extends ControllerContainerTest {
tester.assertResponse(authenticatedRequest("http://localhost:8080/controller/v1/auditlog/"), new File("auditlog.json"));
}
- private static Request hostedOperatorRequest(String uri, String body, Request.Method method) {
- return addIdentityToRequest(new Request(uri, body, method), HOSTED_VESPA_OPERATOR);
- }
-
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiTest.java
index bd0460d50b1..40562ba493e 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/ZoneApiTest.java
@@ -1,15 +1,11 @@
// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.restapi.zone.v2;
-import com.yahoo.application.container.handler.Request;
import com.yahoo.application.container.handler.Request.Method;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.zone.ZoneApi;
import com.yahoo.config.provision.zone.ZoneId;
-import com.yahoo.text.Utf8;
-import com.yahoo.vespa.athenz.api.AthenzIdentity;
-import com.yahoo.vespa.athenz.api.AthenzUser;
import com.yahoo.vespa.hosted.controller.integration.ConfigServerProxyMock;
import com.yahoo.vespa.hosted.controller.integration.ZoneApiMock;
import com.yahoo.vespa.hosted.controller.integration.ZoneRegistryMock;
@@ -31,7 +27,6 @@ import static org.junit.Assert.assertTrue;
*/
public class ZoneApiTest extends ControllerContainerTest {
- private static final AthenzIdentity HOSTED_VESPA_OPERATOR = AthenzUser.fromUserId("johnoperator");
private static final String responseFiles = "src/test/java/com/yahoo/vespa/hosted/controller/restapi/zone/v2/responses/";
private static final List<ZoneApi> zones = List.of(
ZoneApiMock.fromId("prod.us-north-1"),
@@ -50,7 +45,6 @@ public class ZoneApiTest extends ControllerContainerTest {
.setZones(zones);
this.tester = new ContainerControllerTester(container, responseFiles);
this.proxy = (ConfigServerProxyMock) container.components().getComponent(ConfigServerProxyMock.class.getName());
- addUserToHostedOperatorRole(HOSTED_VESPA_OPERATOR);
}
@Test
@@ -71,23 +65,23 @@ public class ZoneApiTest extends ControllerContainerTest {
assertLastRequest(ZoneId.from("prod", "us-north-1"), 2, "GET");
// POST /zone/v2/dev/us-north-2/nodes/v2/command/restart?hostname=node1
- tester.containerTester().assertResponse(hostedOperatorRequest("http://localhost:8080/zone/v2/dev/aws-us-north-2/nodes/v2/command/restart?hostname=node1",
- new byte[0], Method.POST),
+ tester.containerTester().assertResponse(operatorRequest("http://localhost:8080/zone/v2/dev/aws-us-north-2/nodes/v2/command/restart?hostname=node1",
+ "", Method.POST),
"ok");
// PUT /zone/v2/prod/us-north-1/nodes/v2/state/dirty/node1
- tester.containerTester().assertResponse(hostedOperatorRequest("http://localhost:8080/zone/v2/prod/us-north-1/nodes/v2/state/dirty/node1",
- new byte[0], Method.PUT), "ok");
+ tester.containerTester().assertResponse(operatorRequest("http://localhost:8080/zone/v2/prod/us-north-1/nodes/v2/state/dirty/node1",
+ "", Method.PUT), "ok");
assertLastRequest(ZoneId.from("prod", "us-north-1"), 2, "PUT");
// DELETE /zone/v2/prod/us-north-1/nodes/v2/node/node1
- tester.containerTester().assertResponse(hostedOperatorRequest("http://localhost:8080/zone/v2/prod/us-north-1/nodes/v2/node/node1",
- new byte[0], Method.DELETE), "ok");
+ tester.containerTester().assertResponse(operatorRequest("http://localhost:8080/zone/v2/prod/us-north-1/nodes/v2/node/node1",
+ "", Method.DELETE), "ok");
assertLastRequest(ZoneId.from("prod", "us-north-1"), 2, "DELETE");
// PATCH /zone/v2/prod/us-north-1/nodes/v2/node/node1
- tester.containerTester().assertResponse(hostedOperatorRequest("http://localhost:8080/zone/v2/dev/aws-us-north-2/nodes/v2/node/node1",
- Utf8.toBytes("{\"currentRestartGeneration\": 1}"),
+ tester.containerTester().assertResponse(operatorRequest("http://localhost:8080/zone/v2/dev/aws-us-north-2/nodes/v2/node/node1",
+ "{\"currentRestartGeneration\": 1}",
Method.PATCH), "ok");
assertLastRequest(ZoneId.from("dev", "aws-us-north-2"), 1, "PATCH");
assertEquals("{\"currentRestartGeneration\": 1}", proxy.lastRequestBody().get());
@@ -98,8 +92,8 @@ public class ZoneApiTest extends ControllerContainerTest {
@Test
public void test_invalid_requests() {
// POST /zone/v2/prod/us-north-34/nodes/v2
- tester.containerTester().assertResponse(hostedOperatorRequest("http://localhost:8080/zone/v2/prod/us-north-42/nodes/v2",
- new byte[0], Method.POST),
+ tester.containerTester().assertResponse(operatorRequest("http://localhost:8080/zone/v2/prod/us-north-42/nodes/v2",
+ "", Method.POST),
new File("unknown-zone.json"), 400);
assertFalse(proxy.lastReceived().isPresent());
}
@@ -111,8 +105,4 @@ public class ZoneApiTest extends ControllerContainerTest {
assertEquals(com.yahoo.jdisc.http.HttpRequest.Method.valueOf(method), last.getMethod());
}
- private static Request hostedOperatorRequest(String uri, byte[] body, Request.Method method) {
- return addIdentityToRequest(new Request(uri, body, method), HOSTED_VESPA_OPERATOR);
- }
-
}