diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-04-22 17:04:21 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-04-23 11:07:45 +0200 |
commit | b2f0b4d813a265713877fb01517de3b15f434ffb (patch) | |
tree | 6c7663a7cd7d8080b38b634507498593d9ef4c3c /orchestrator | |
parent | 768b36dfc0974bc82c5b4b4516b92bf866c065ac (diff) |
Use restapi test driver in existing unit tests
Diffstat (limited to 'orchestrator')
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); - } } |