aboutsummaryrefslogtreecommitdiffstats
path: root/orchestrator
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-04-22 17:04:21 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-04-23 11:07:45 +0200
commitb2f0b4d813a265713877fb01517de3b15f434ffb (patch)
tree6c7663a7cd7d8080b38b634507498593d9ef4c3c /orchestrator
parent768b36dfc0974bc82c5b4b4516b92bf866c065ac (diff)
Use restapi test driver in existing unit tests
Diffstat (limited to 'orchestrator')
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandlerTest.java30
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java70
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostSuspensionRequestHandlerTest.java47
-rw-r--r--orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandlerTest.java67
4 files changed, 87 insertions, 127 deletions
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandlerTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandlerTest.java
index 176a95d1c04..864516acbc5 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandlerTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandlerTest.java
@@ -2,10 +2,11 @@ package com.yahoo.vespa.orchestrator.resources;// Copyright Verizon Media. Licen
import com.fasterxml.jackson.core.type.TypeReference;
import com.yahoo.cloud.config.ConfigserverConfig;
+import com.yahoo.container.jdisc.HttpRequestBuilder;
import com.yahoo.container.jdisc.HttpResponse;
-import com.yahoo.container.jdisc.LoggingRequestHandler;
import com.yahoo.jdisc.core.SystemTimer;
import com.yahoo.jdisc.test.MockMetric;
+import com.yahoo.restapi.RestApiTestDriver;
import com.yahoo.vespa.curator.mock.MockCurator;
import com.yahoo.vespa.flags.InMemoryFlagSource;
import com.yahoo.vespa.orchestrator.DummyServiceMonitor;
@@ -18,11 +19,9 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Set;
-import java.util.concurrent.Executors;
import static com.yahoo.jdisc.http.HttpRequest.Method;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -38,7 +37,7 @@ class ApplicationSuspensionRequestHandlerTest {
private static final String RESOURCE_2 = "test-tenant-id:application:instance";
private static final String INVALID_RESOURCE_NAME = "something_without_colons";
- ApplicationSuspensionRequestHandler handler;
+ private RestApiTestDriver testDriver;
@BeforeEach
void createHandler() {
@@ -50,8 +49,8 @@ class ApplicationSuspensionRequestHandlerTest {
serviceMonitor,
new ConfigserverConfig(new ConfigserverConfig.Builder()),
new InMemoryFlagSource());
- var handlerContext = new LoggingRequestHandler.Context(Executors.newSingleThreadExecutor(), new MockMetric());
- this.handler = new ApplicationSuspensionRequestHandler(handlerContext, orchestrator);
+ var handler = new ApplicationSuspensionRequestHandler(RestApiTestDriver.createHandlerTestContext(), orchestrator);
+ testDriver = RestApiTestDriver.newBuilder(handler).build();
}
@@ -136,22 +135,17 @@ class ApplicationSuspensionRequestHandlerTest {
assertEquals(RESOURCE_2, set.iterator().next());
}
- private HttpResponse executeRequest(Method method, String path, String applicationId) throws IOException {
- String uri = "http://localhost/orchestrator/v1/suspensions/applications" + path;
- com.yahoo.container.jdisc.HttpRequest request;
+ private HttpResponse executeRequest(Method method, String relativePath, String applicationId) {
+ String fullPath = "/orchestrator/v1/suspensions/applications" + relativePath;
+ var builder = HttpRequestBuilder.create(method, fullPath);
if (applicationId != null) {
- ByteArrayInputStream requestData = new ByteArrayInputStream(applicationId.getBytes(StandardCharsets.UTF_8));
- request = com.yahoo.container.jdisc.HttpRequest.createTestRequest(uri, method, requestData);
- } else {
- request = com.yahoo.container.jdisc.HttpRequest.createTestRequest(uri, method);
+ builder.withRequestContent(new ByteArrayInputStream(applicationId.getBytes(StandardCharsets.UTF_8)));
}
- return handler.handle(request);
+ return testDriver.executeRequest(builder.build());
}
- private <T> T parseResponseContent(HttpResponse response, TypeReference<T> responseEntityType) throws IOException {
+ private <T> T parseResponseContent(HttpResponse response, TypeReference<T> type) {
assertEquals(200, response.getStatus());
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- response.render(out);
- return handler.restApi().jacksonJsonMapper().readValue(out.toByteArray(), responseEntityType);
+ return testDriver.parseJacksonResponseContent(response, type);
}
} \ No newline at end of file
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java
index c34775c1910..f6dc6d7676c 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java
@@ -2,13 +2,12 @@
package com.yahoo.vespa.orchestrator.resources;
import com.google.common.util.concurrent.UncheckedTimeoutException;
-import com.yahoo.container.jdisc.HttpRequest;
+import com.yahoo.container.jdisc.HttpRequestBuilder;
import com.yahoo.container.jdisc.HttpResponse;
-import com.yahoo.container.jdisc.LoggingRequestHandler;
import com.yahoo.jdisc.Metric;
import com.yahoo.jdisc.http.HttpRequest.Method;
-import com.yahoo.jdisc.test.MockMetric;
import com.yahoo.jdisc.test.TestTimer;
+import com.yahoo.restapi.RestApiTestDriver;
import com.yahoo.test.json.JsonTestHelper;
import com.yahoo.vespa.applicationmodel.ApplicationInstance;
import com.yahoo.vespa.applicationmodel.ApplicationInstanceId;
@@ -50,7 +49,6 @@ import com.yahoo.vespa.service.monitor.ServiceMonitor;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.time.Clock;
@@ -59,7 +57,6 @@ import java.util.Collections;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
-import java.util.concurrent.Executors;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
@@ -171,18 +168,18 @@ class HostRequestHandlerTest {
@Test
void returns_200_on_success() throws IOException {
- HostRequestHandler handler = createHandler(alwaysAllowOrchestrator);
+ RestApiTestDriver testDriver = createTestDriver(alwaysAllowOrchestrator);
- HttpResponse response = executeRequest(handler, Method.PUT, "/orchestrator/v1/hosts/hostname/suspended", null);
- UpdateHostResponse updateHostResponse = parseResponseContent(handler, response, UpdateHostResponse.class);
+ HttpResponse response = executeRequest(testDriver, Method.PUT, "/orchestrator/v1/hosts/hostname/suspended", null);
+ UpdateHostResponse updateHostResponse = parseResponseContent(testDriver, response, UpdateHostResponse.class);
assertEquals("hostname", updateHostResponse.hostname());
}
@Test
void throws_404_when_host_unknown() throws IOException {
- HostRequestHandler handler = createHandler(hostNotFoundOrchestrator);
+ RestApiTestDriver testDriver = createTestDriver(hostNotFoundOrchestrator);
- HttpResponse response = executeRequest(handler, Method.PUT, "/orchestrator/v1/hosts/hostname/suspended", null);
+ HttpResponse response = executeRequest(testDriver, Method.PUT, "/orchestrator/v1/hosts/hostname/suspended", null);
assertEquals(404, response.getStatus());
}
@@ -220,35 +217,35 @@ class HostRequestHandlerTest {
@Test
void throws_409_when_request_rejected_by_policies() throws IOException {
- HostRequestHandler handler = createHandler(alwaysRejectOrchestrator);
+ RestApiTestDriver testDriver = createTestDriver(alwaysRejectOrchestrator);
- HttpResponse response = executeRequest(handler, Method.PUT, "/orchestrator/v1/hosts/hostname/suspended", null);
+ HttpResponse response = executeRequest(testDriver, Method.PUT, "/orchestrator/v1/hosts/hostname/suspended", null);
assertEquals(409, response.getStatus());
}
@Test
void patch_state_may_throw_bad_request() throws IOException {
Orchestrator orchestrator = mock(Orchestrator.class);
- HostRequestHandler handler = createHandler(orchestrator);
+ RestApiTestDriver testDriver = createTestDriver(orchestrator);
PatchHostRequest request = new PatchHostRequest();
request.state = "bad state";
- HttpResponse response = executeRequest(handler, Method.PATCH, "/orchestrator/v1/hosts/hostname", request);
+ HttpResponse response = executeRequest(testDriver, Method.PATCH, "/orchestrator/v1/hosts/hostname", request);
assertEquals(400, response.getStatus());
}
@Test
void patch_works() throws OrchestrationException, IOException {
Orchestrator orchestrator = mock(Orchestrator.class);
- HostRequestHandler handler = createHandler(orchestrator);
+ RestApiTestDriver testDriver = createTestDriver(orchestrator);
String hostNameString = "hostname";
PatchHostRequest request = new PatchHostRequest();
request.state = "NO_REMARKS";
- HttpResponse httpResponse = executeRequest(handler, Method.PATCH, "/orchestrator/v1/hosts/hostname", request);
- PatchHostResponse response = parseResponseContent(handler, httpResponse, PatchHostResponse.class);
+ HttpResponse httpResponse = executeRequest(testDriver, Method.PATCH, "/orchestrator/v1/hosts/hostname", request);
+ PatchHostResponse response = parseResponseContent(testDriver, httpResponse, PatchHostResponse.class);
assertEquals(response.description, "ok");
verify(orchestrator, times(1)).setNodeStatus(new HostName(hostNameString), HostStatus.NO_REMARKS);
}
@@ -256,21 +253,21 @@ class HostRequestHandlerTest {
@Test
void patch_handles_exception_in_orchestrator() throws OrchestrationException, IOException {
Orchestrator orchestrator = mock(Orchestrator.class);
- HostRequestHandler handler = createHandler(orchestrator);
+ RestApiTestDriver testDriver = createTestDriver(orchestrator);
String hostNameString = "hostname";
PatchHostRequest request = new PatchHostRequest();
request.state = "NO_REMARKS";
doThrow(new OrchestrationException("error")).when(orchestrator).setNodeStatus(new HostName(hostNameString), HostStatus.NO_REMARKS);
- HttpResponse httpResponse = executeRequest(handler, Method.PATCH, "/orchestrator/v1/hosts/hostname", request);
+ HttpResponse httpResponse = executeRequest(testDriver, Method.PATCH, "/orchestrator/v1/hosts/hostname", request);
assertEquals(500, httpResponse.getStatus());
}
@Test
void getHost_works() throws Exception {
Orchestrator orchestrator = mock(Orchestrator.class);
- HostRequestHandler handler = createHandler(orchestrator);
+ RestApiTestDriver testDriver = createTestDriver(orchestrator);
HostName hostName = new HostName("hostname");
@@ -293,8 +290,8 @@ class HostRequestHandlerTest {
Collections.singletonList(serviceInstance));
when(orchestrator.getHost(hostName)).thenReturn(host);
- HttpResponse httpResponse = executeRequest(handler, Method.GET, "/orchestrator/v1/hosts/hostname", null);
- GetHostResponse response = parseResponseContent(handler, httpResponse, GetHostResponse.class);
+ HttpResponse httpResponse = executeRequest(testDriver, Method.GET, "/orchestrator/v1/hosts/hostname", null);
+ GetHostResponse response = parseResponseContent(testDriver, httpResponse, GetHostResponse.class);
assertEquals("http://localhost/orchestrator/v1/instances/tenantId:applicationId", response.applicationUrl());
assertEquals("hostname", response.hostname());
@@ -312,8 +309,8 @@ class HostRequestHandlerTest {
Orchestrator orchestrator = mock(Orchestrator.class);
doThrow(new UncheckedTimeoutException("Timeout Message")).when(orchestrator).resume(any(HostName.class));
- HostRequestHandler handler = createHandler(orchestrator);
- HttpResponse httpResponse = executeRequest(handler, Method.DELETE, "/orchestrator/v1/hosts/hostname/suspended", null);
+ RestApiTestDriver testDriver = createTestDriver(orchestrator);
+ HttpResponse httpResponse = executeRequest(testDriver, Method.DELETE, "/orchestrator/v1/hosts/hostname/suspended", null);
assertEquals(409, httpResponse.getStatus());
ByteArrayOutputStream out = new ByteArrayOutputStream();
httpResponse.render(out);
@@ -327,29 +324,22 @@ class HostRequestHandlerTest {
out.toString());
}
- private HostRequestHandler createHandler(Orchestrator orchestrator) {
- var handlerContext = new LoggingRequestHandler.Context(Executors.newSingleThreadExecutor(), new MockMetric());
- return new HostRequestHandler(handlerContext, orchestrator);
+ private RestApiTestDriver createTestDriver(Orchestrator orchestrator) {
+ return RestApiTestDriver.newBuilder(handlerContext -> new HostRequestHandler(handlerContext, orchestrator))
+ .build();
}
- private HttpResponse executeRequest(HostRequestHandler handler, Method method, String path, Object requestEntity) throws IOException {
- String uri = "http://localhost" + path;
- HttpRequest request;
+ private HttpResponse executeRequest(RestApiTestDriver testDriver, Method method, String path, Object requestEntity) {
+ var builder = HttpRequestBuilder.create(method, path);
if (requestEntity != null) {
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- handler.restApi().jacksonJsonMapper().writeValue(out, requestEntity);
- request = HttpRequest.createTestRequest(uri, method, new ByteArrayInputStream(out.toByteArray()));
- } else {
- request = HttpRequest.createTestRequest(uri, method);
+ builder.withRequestContent(testDriver.requestContentOf(requestEntity));
}
- return handler.handle(request);
+ return testDriver.executeRequest(builder.build());
}
- private <T> T parseResponseContent(HostRequestHandler handler, HttpResponse response, Class<T> responseEntityType) throws IOException {
+ private <T> T parseResponseContent(RestApiTestDriver testDriver, HttpResponse response, Class<T> responseEntityType) {
assertEquals(200, response.getStatus());
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- response.render(out);
- return handler.restApi().jacksonJsonMapper().readValue(out.toByteArray(), responseEntityType);
+ return testDriver.parseJacksonResponseContent(response, responseEntityType);
}
}
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostSuspensionRequestHandlerTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostSuspensionRequestHandlerTest.java
index 983c28eb2f9..3b12160e708 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostSuspensionRequestHandlerTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostSuspensionRequestHandlerTest.java
@@ -2,10 +2,9 @@
package com.yahoo.vespa.orchestrator.resources;
import com.google.common.util.concurrent.UncheckedTimeoutException;
-import com.yahoo.container.jdisc.HttpRequest;
+import com.yahoo.container.jdisc.HttpRequestBuilder;
import com.yahoo.container.jdisc.HttpResponse;
-import com.yahoo.container.jdisc.LoggingRequestHandler;
-import com.yahoo.jdisc.test.MockMetric;
+import com.yahoo.restapi.RestApiTestDriver;
import com.yahoo.test.json.JsonTestHelper;
import com.yahoo.vespa.orchestrator.BatchHostNameNotFoundException;
import com.yahoo.vespa.orchestrator.BatchInternalErrorException;
@@ -20,8 +19,6 @@ import java.io.IOException;
import java.time.Clock;
import java.time.Instant;
import java.util.List;
-import java.util.concurrent.Executors;
-import java.util.stream.Collectors;
import static com.yahoo.jdisc.http.HttpRequest.Method;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -45,15 +42,15 @@ class HostSuspensionRequestHandlerTest {
@Test
void returns_200_on_success_batch() throws IOException {
- HostSuspensionRequestHandler handler = createHandler(HostRequestHandlerTest.createAlwaysAllowOrchestrator(clock));
- HttpResponse response = executeSuspendAllRequest(handler, "parentHostname", List.of("hostname1", "hostname2"));
+ RestApiTestDriver testDriver = createTestDriver(HostRequestHandlerTest.createAlwaysAllowOrchestrator(clock));
+ HttpResponse response = executeSuspendAllRequest(testDriver, "parentHostname", List.of("hostname1", "hostname2"));
assertSuccess(response);
}
@Test
void returns_200_empty_batch() throws IOException {
- HostSuspensionRequestHandler handler = createHandler(HostRequestHandlerTest.createAlwaysAllowOrchestrator(clock));
- HttpResponse response = executeSuspendAllRequest(handler, "parentHostname", List.of());
+ RestApiTestDriver testDriver = createTestDriver(HostRequestHandlerTest.createAlwaysAllowOrchestrator(clock));
+ HttpResponse response = executeSuspendAllRequest(testDriver, "parentHostname", List.of());
assertSuccess(response);
}
@@ -62,16 +59,16 @@ class HostSuspensionRequestHandlerTest {
// hostnames are part of the request body for multi-host.
@Test
void returns_400_when_host_unknown_for_batch() {
- HostSuspensionRequestHandler handler = createHandler(HostRequestHandlerTest.createHostNotFoundOrchestrator(clock));
- HttpResponse response = executeSuspendAllRequest(handler, "parentHostname", List.of("hostname1", "hostname2"));
+ RestApiTestDriver testDriver = createTestDriver(HostRequestHandlerTest.createHostNotFoundOrchestrator(clock));
+ HttpResponse response = executeSuspendAllRequest(testDriver, "parentHostname", List.of("hostname1", "hostname2"));
assertEquals(400, response.getStatus());
}
@Test
void returns_409_when_request_rejected_by_policies_for_batch() {
OrchestratorImpl alwaysRejectResolver = HostRequestHandlerTest.createAlwaysRejectResolver(clock);
- HostSuspensionRequestHandler handler = createHandler(alwaysRejectResolver);
- HttpResponse response = executeSuspendAllRequest(handler, "parentHostname", List.of("hostname1", "hostname2"));
+ RestApiTestDriver testDriver = createTestDriver(alwaysRejectResolver);
+ HttpResponse response = executeSuspendAllRequest(testDriver, "parentHostname", List.of("hostname1", "hostname2"));
assertEquals(409, response.getStatus());
}
@@ -80,26 +77,20 @@ class HostSuspensionRequestHandlerTest {
void throws_409_on_suspendAll_timeout() throws BatchHostStateChangeDeniedException, BatchHostNameNotFoundException, BatchInternalErrorException {
Orchestrator orchestrator = mock(Orchestrator.class);
doThrow(new UncheckedTimeoutException("Timeout Message")).when(orchestrator).suspendAll(any(), any());
- HostSuspensionRequestHandler handler = createHandler(orchestrator);
- HttpResponse response = executeSuspendAllRequest(handler, "parenthost", List.of("h1", "h2", "h3"));
+ RestApiTestDriver testDriver = createTestDriver(orchestrator);
+ HttpResponse response = executeSuspendAllRequest(testDriver, "parenthost", List.of("h1", "h2", "h3"));
assertEquals(409, response.getStatus());
}
- private static HostSuspensionRequestHandler createHandler(Orchestrator orchestrator) {
- return new HostSuspensionRequestHandler(
- new LoggingRequestHandler.Context(Executors.newSingleThreadExecutor(), new MockMetric()),
- orchestrator);
+ private static RestApiTestDriver createTestDriver(Orchestrator orchestrator) {
+ return RestApiTestDriver.newBuilder(ctx -> new HostSuspensionRequestHandler(ctx, orchestrator))
+ .build();
}
- private static HttpResponse executeSuspendAllRequest(HostSuspensionRequestHandler handler, String parentHostname, List<String> hostnames) {
- StringBuilder uriBuilder = new StringBuilder("/orchestrator/v1/suspensions/hosts/").append(parentHostname);
- if (!hostnames.isEmpty()) {
- uriBuilder.append(hostnames.stream()
- .map(hostname -> "hostname=" + hostname)
- .collect(Collectors.joining("&", "?", "")));
- }
- HttpRequest request = HttpRequest.createTestRequest(uriBuilder.toString(), Method.PUT);
- return handler.handle(request);
+ private static HttpResponse executeSuspendAllRequest(RestApiTestDriver testDriver, String parentHostname, List<String> hostnames) {
+ var builder = HttpRequestBuilder.create(Method.PUT, "/orchestrator/v1/suspensions/hosts/" + parentHostname);
+ hostnames.forEach(hostname -> builder.withQueryParameter("hostname", hostname));
+ return testDriver.executeRequest(builder.build());
}
private static void assertSuccess(HttpResponse response) throws IOException {
diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandlerTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandlerTest.java
index bee19a6d6f5..0a2c73e831f 100644
--- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandlerTest.java
+++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/InstanceRequestHandlerTest.java
@@ -2,15 +2,12 @@
package com.yahoo.vespa.orchestrator.resources;
import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.container.jdisc.HttpRequest;
+import com.yahoo.container.jdisc.HttpRequestBuilder;
import com.yahoo.container.jdisc.HttpResponse;
-import com.yahoo.container.jdisc.LoggingRequestHandler;
-import com.yahoo.jdisc.test.MockMetric;
import com.yahoo.jrt.slobrok.api.Mirror;
+import com.yahoo.restapi.RestApiTestDriver;
import com.yahoo.vespa.applicationmodel.ClusterId;
import com.yahoo.vespa.applicationmodel.ConfigId;
import com.yahoo.vespa.applicationmodel.ServiceStatus;
@@ -21,11 +18,9 @@ import com.yahoo.vespa.service.manager.UnionMonitorManager;
import com.yahoo.vespa.service.monitor.SlobrokApi;
import org.junit.jupiter.api.Test;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
-import java.util.concurrent.Executors;
import static com.yahoo.jdisc.http.HttpRequest.Method.GET;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -45,19 +40,12 @@ class InstanceRequestHandlerTest {
new Mirror.Entry("name1", "tcp/spec:1"),
new Mirror.Entry("name2", "tcp/spec:2"));
private static final ClusterId CLUSTER_ID = new ClusterId("cluster-id");
- private static final ObjectMapper jsonMapper = new ObjectMapper()
- .registerModule(new JavaTimeModule())
- .registerModule(new Jdk8Module());
private final SlobrokApi slobrokApi = mock(SlobrokApi.class);
private final UnionMonitorManager rootManager = mock(UnionMonitorManager.class);
- private final InstanceRequestHandler handler = new InstanceRequestHandler(
- new LoggingRequestHandler.Context(Executors.newSingleThreadExecutor(), new MockMetric()),
- null,
- null,
- slobrokApi,
- rootManager);
-
+ private final RestApiTestDriver testDriver =
+ RestApiTestDriver.newBuilder(ctx -> new InstanceRequestHandler(ctx, null, null, slobrokApi, rootManager))
+ .build();
@Test
void testGetSlobrokEntries() throws Exception {
@@ -78,13 +66,15 @@ class InstanceRequestHandlerTest {
.thenReturn(new ServiceStatusInfo(serviceStatus));
- String uriPath = String.format(
- "/orchestrator/v1/instances/%s/serviceStatusInfo?clusterId=%s&serviceType=%s&configId=%s",
- APPLICATION_INSTANCE_REFERENCE,
- CLUSTER_ID.s(),
- serviceType.s(),
- configId.s());
- ServiceStatusInfo serviceStatusInfo = executeRequest(uriPath, new TypeReference<>(){});
+ String uriPath = String.format("/orchestrator/v1/instances/%s/serviceStatusInfo", APPLICATION_INSTANCE_REFERENCE);
+ HttpRequest request = HttpRequestBuilder.create(GET, uriPath)
+ .withQueryParameter("clusterId", CLUSTER_ID.s())
+ .withQueryParameter("serviceType", serviceType.s())
+ .withQueryParameter("configId", configId.s())
+ .build();
+ HttpResponse response = testDriver.executeRequest(request);
+ assertEquals(200, response.getStatus());
+ ServiceStatusInfo serviceStatusInfo = testDriver.parseJacksonResponseContent(response, ServiceStatusInfo.class);
ServiceStatus actualServiceStatus = serviceStatusInfo.serviceStatus();
verify(rootManager).getStatus(APPLICATION_ID, CLUSTER_ID, serviceType, configId);
@@ -93,12 +83,11 @@ class InstanceRequestHandlerTest {
@Test
void testBadRequest() {
- String uriPath = String.format(
- "/orchestrator/v1/instances/%s/serviceStatusInfo?clusterId=%s",
- APPLICATION_INSTANCE_REFERENCE,
- CLUSTER_ID.s());
- HttpRequest request = HttpRequest.createTestRequest("http://localhost" + uriPath, GET);
- HttpResponse response = handler.handle(request);
+ String uriPath = String.format("/orchestrator/v1/instances/%s/serviceStatusInfo", APPLICATION_INSTANCE_REFERENCE);
+ HttpRequest request = HttpRequestBuilder.create(GET, uriPath)
+ .withQueryParameter("clusterId", CLUSTER_ID.s())
+ .build();
+ HttpResponse response = testDriver.executeRequest(request);
assertEquals(400, response.getStatus());
}
@@ -108,25 +97,21 @@ class InstanceRequestHandlerTest {
.thenReturn(ENTRIES);
String uriPath = String.format("/orchestrator/v1/instances/%s/slobrok", APPLICATION_INSTANCE_REFERENCE);
+ var builder = HttpRequestBuilder.create(GET, uriPath);
if (pattern != null) {
- uriPath += "?pattern=" + pattern;
+ builder.withQueryParameter("pattern", pattern);
}
- List<SlobrokEntryResponse> response = executeRequest(uriPath, new TypeReference<>() {});
+ HttpRequest request = builder.build();
+ HttpResponse response = testDriver.executeRequest(request);
+ assertEquals(200, response.getStatus());
+ List<SlobrokEntryResponse> result = testDriver.parseJacksonResponseContent(response, new TypeReference<>() {});
verify(slobrokApi).lookup(APPLICATION_ID, expectedLookupPattern);
- String actualJson = jsonMapper.writeValueAsString(response);
+ String actualJson = testDriver.jacksonJsonMapper().writeValueAsString(result);
assertEquals(
"[{\"name\":\"name1\",\"spec\":\"tcp/spec:1\"},{\"name\":\"name2\",\"spec\":\"tcp/spec:2\"}]",
actualJson);
}
- private <T> T executeRequest(String path, TypeReference<T> responseEntityType) throws IOException {
- HttpRequest request = HttpRequest.createTestRequest("http://localhost" + path, GET);
- HttpResponse response = handler.handle(request);
- assertEquals(200, response.getStatus());
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- response.render(out);
- return jsonMapper.readValue(out.toByteArray(), responseEntityType);
- }
}