diff options
author | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2019-04-29 13:47:20 +0200 |
---|---|---|
committer | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2019-04-29 13:47:20 +0200 |
commit | fd568af3e1f67ff581fc77d80d422ef152d8e3e6 (patch) | |
tree | dc4f6caa87a5800f4264e2af26d69df6ee778480 | |
parent | 9b2cccc9a3c3c919ed56c0bd65ca652a797bd4a1 (diff) |
Use MultiPartStreamer in ApplicationApiTest for verification
3 files changed, 24 insertions, 9 deletions
diff --git a/controller-server/pom.xml b/controller-server/pom.xml index f22142db727..3e7247bd44b 100644 --- a/controller-server/pom.xml +++ b/controller-server/pom.xml @@ -131,6 +131,12 @@ <version>${project.version}</version> </dependency> + <dependency> + <groupId>com.yahoo.vespa</groupId> + <artifactId>hosted-api</artifactId> + <version>${project.version}</version> + </dependency> + <!-- test --> <dependency> diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java index d3f0f423089..b7b4e278ca3 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java @@ -1,6 +1,7 @@ // 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.application; +import ai.vespa.hosted.api.MultiPartStreamer; import com.yahoo.application.container.handler.Request; import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; @@ -58,6 +59,7 @@ import com.yahoo.vespa.hosted.controller.restapi.ContainerControllerTester; import com.yahoo.vespa.hosted.controller.restapi.ContainerTester; import com.yahoo.vespa.hosted.controller.restapi.ControllerContainerTest; import com.yahoo.vespa.hosted.controller.tenant.AthenzTenant; +import com.yahoo.yolean.Exceptions; import org.apache.http.HttpEntity; import org.apache.http.entity.ContentType; import org.apache.http.entity.mime.MultipartEntityBuilder; @@ -1406,16 +1408,12 @@ public class ApplicationApiTest extends ControllerContainerTest { return builder.build(); } - private HttpEntity createApplicationSubmissionData(ApplicationPackage applicationPackage) { - MultipartEntityBuilder builder = MultipartEntityBuilder.create(); - builder.addTextBody(EnvironmentResource.SUBMIT_OPTIONS, - "{\"repository\":\"repo\",\"branch\":\"master\",\"commit\":\"d00d\",\"authorEmail\":\"a@b\"}", - ContentType.APPLICATION_JSON); - builder.addBinaryBody(EnvironmentResource.APPLICATION_ZIP, applicationPackage.zippedContent()); - builder.addBinaryBody(EnvironmentResource.APPLICATION_TEST_ZIP, "content".getBytes()); - return builder.build(); + private MultiPartStreamer createApplicationSubmissionData(ApplicationPackage applicationPackage) { + return new MultiPartStreamer().addJson(EnvironmentResource.SUBMIT_OPTIONS, "{\"repository\":\"repo\",\"branch\":\"master\",\"commit\":\"d00d\",\"authorEmail\":\"a@b\"}") + .addBytes(EnvironmentResource.APPLICATION_ZIP, applicationPackage.zippedContent()) + .addBytes(EnvironmentResource.APPLICATION_TEST_ZIP, "content".getBytes()); } - + private String deployOptions(boolean deployDirectly, Optional<ApplicationVersion> applicationVersion) { return "{\"vespaVersion\":null," + "\"ignoreValidationErrors\":false," + @@ -1618,6 +1616,9 @@ public class ApplicationApiTest extends ControllerContainerTest { private RequestBuilder data(byte[] data) { this.data = data; return this; } private RequestBuilder data(String data) { return data(data.getBytes(StandardCharsets.UTF_8)); } + private RequestBuilder data(MultiPartStreamer streamer) { + return Exceptions.uncheck(() -> data(streamer.data().readAllBytes()).contentType(streamer.contentType())); + } private RequestBuilder data(HttpEntity data) { ByteArrayOutputStream out = new ByteArrayOutputStream(); try { diff --git a/hosted-api/src/main/java/ai/vespa/hosted/api/MultiPartStreamer.java b/hosted-api/src/main/java/ai/vespa/hosted/api/MultiPartStreamer.java index 7ed86210957..6b2f5596fd6 100644 --- a/hosted-api/src/main/java/ai/vespa/hosted/api/MultiPartStreamer.java +++ b/hosted-api/src/main/java/ai/vespa/hosted/api/MultiPartStreamer.java @@ -56,6 +56,14 @@ public class MultiPartStreamer { return this; } + /** Adds the given data as a named part in this, using the {@code "application/octet-stream" content type}. */ + public MultiPartStreamer addBytes(String name, byte[] data) { + streams.add(() -> separator(name, "application/octet-stream")); + streams.add(() -> new ByteArrayInputStream(data)); + + return this; + } + /** Adds the contents of the file at the given path as a named part in this. */ public MultiPartStreamer addFile(String name, Path path) { streams.add(() -> separator(name, path)); |