From 2acd3ea90f5deeff9714ec556fba610f6b0e130c Mon Sep 17 00:00:00 2001 From: Valerij Fredriksen Date: Thu, 9 Sep 2021 18:56:34 +0200 Subject: Use byte[] instead --- .../controller/application/pkg/ApplicationPackageDiff.java | 10 +++++----- .../vespa/hosted/controller/deployment/JobController.java | 4 ++-- .../restapi/application/ApplicationApiHandler.java | 6 +++--- .../application/pkg/ApplicationPackageDiffTest.java | 12 ++++++------ .../hosted/controller/integration/ApplicationStoreMock.java | 12 ++++++------ 5 files changed, 22 insertions(+), 22 deletions(-) (limited to 'controller-server') diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageDiff.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageDiff.java index 6b106085b70..aa55326f7b7 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageDiff.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageDiff.java @@ -22,17 +22,17 @@ import static com.yahoo.vespa.hosted.controller.application.pkg.ZipStreamReader. */ public class ApplicationPackageDiff { - public static String diffAgainstEmpty(ApplicationPackage right) { + public static byte[] diffAgainstEmpty(ApplicationPackage right) { byte[] emptyZip = new byte[]{80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; return diff(new ApplicationPackage(emptyZip), right); } - public static String diff(ApplicationPackage left, ApplicationPackage right) { + public static byte[] diff(ApplicationPackage left, ApplicationPackage right) { return diff(left, right, 10 << 20, 1 << 20, 10 << 20); } - static String diff(ApplicationPackage left, ApplicationPackage right, int maxFileSizeToDiff, int maxDiffSizePerFile, int maxTotalDiffSize) { - if (Arrays.equals(left.zippedContent(), right.zippedContent())) return "No diff\n"; + static byte[] diff(ApplicationPackage left, ApplicationPackage right, int maxFileSizeToDiff, int maxDiffSizePerFile, int maxTotalDiffSize) { + if (Arrays.equals(left.zippedContent(), right.zippedContent())) return "No diff\n".getBytes(StandardCharsets.UTF_8); Map leftContents = readContents(left, maxFileSizeToDiff); Map rightContents = readContents(right, maxFileSizeToDiff); @@ -51,7 +51,7 @@ public class ApplicationPackageDiff { .ifPresent(diff -> sb.append("--- ").append(file).append('\n').append(diff).append('\n')); } - return sb.length() == 0 ? "No diff\n" : sb.toString(); + return (sb.length() == 0 ? "No diff\n" : sb.toString()).getBytes(StandardCharsets.UTF_8); } private static Optional diff(Optional left, Optional right, int maxDiffSizePerFile) { diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java index 007f79ed994..122db567a61 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java @@ -440,7 +440,7 @@ public class JobController { sourceUrl, revision.map(SourceRevision::commit), false)); - String diff = application.get().latestVersion() + byte[] diff = application.get().latestVersion() .map(ApplicationVersion::buildNumber) .flatMap(build -> build.isPresent() ? Optional.of(build.getAsLong()) : Optional.empty()) .flatMap(prevBuild -> controller.applications().applicationStore().find(id.tenant(), id.application(), prevBuild)) @@ -509,7 +509,7 @@ public class JobController { ApplicationVersion version = ApplicationVersion.from(Optional.empty(), build, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), true); - String diff = lastRun.map(run -> run.versions().targetApplication()) + byte[] diff = lastRun.map(run -> run.versions().targetApplication()) .map(prevVersion -> ApplicationPackageDiff.diff(new ApplicationPackage(controller.applications().applicationStore().get(deploymentId, prevVersion)), applicationPackage)) .orElseGet(() -> ApplicationPackageDiff.diffAgainstEmpty(applicationPackage)); diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java index 73622e4ca4b..22bd3c9d062 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java @@ -25,12 +25,12 @@ import com.yahoo.container.jdisc.HttpRequest; import com.yahoo.container.jdisc.HttpResponse; import com.yahoo.container.jdisc.LoggingRequestHandler; import com.yahoo.io.IOUtils; +import com.yahoo.restapi.ByteArrayResponse; import com.yahoo.restapi.ErrorResponse; import com.yahoo.restapi.MessageResponse; import com.yahoo.restapi.Path; import com.yahoo.restapi.ResourceResponse; import com.yahoo.restapi.SlimeJsonResponse; -import com.yahoo.restapi.StringResponse; import com.yahoo.security.KeyUtils; import com.yahoo.slime.Cursor; import com.yahoo.slime.Inspector; @@ -603,7 +603,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { private HttpResponse devApplicationPackageDiff(RunId runId) { DeploymentId deploymentId = new DeploymentId(runId.application(), runId.job().type().zone(controller.system())); return controller.applications().applicationStore().getDevDiff(deploymentId, runId.number()) - .map(StringResponse::new) + .map(ByteArrayResponse::new) .orElseThrow(() -> new NotExistsException("No application package diff found for " + runId)); } @@ -641,7 +641,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { private HttpResponse applicationPackageDiff(String tenant, String application, String number) { TenantAndApplicationId tenantAndApplication = TenantAndApplicationId.from(tenant, application); return controller.applications().applicationStore().getDiff(tenantAndApplication.tenant(), tenantAndApplication.application(), Long.parseLong(number)) - .map(StringResponse::new) + .map(ByteArrayResponse::new) .orElseThrow(() -> new NotExistsException("No application package diff found for '" + tenantAndApplication + "' with build number " + number)); } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageDiffTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageDiffTest.java index 101ca42761d..b2aba721a6f 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageDiffTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageDiffTest.java @@ -26,7 +26,7 @@ public class ApplicationPackageDiffTest { @Test public void no_diff() { - assertEquals("No diff\n", diff(app1, app1)); + assertEquals("No diff\n", new String(diff(app1, app1))); } @Test @@ -42,7 +42,7 @@ public class ApplicationPackageDiffTest { "@@ -1,0 +1,2 @@\n" + "+ contents of the\n" + "+ first file\n" + - "\n", diffAgainstEmpty(app1)); + "\n", new String(diffAgainstEmpty(app1))); } @Test @@ -63,7 +63,7 @@ public class ApplicationPackageDiffTest { "- contents of the\n" + " first file\n" + "+ after some changes\n" + - "\n", diff(app1, app2)); + "\n", new String(diff(app1, app2))); } @Test @@ -78,7 +78,7 @@ public class ApplicationPackageDiffTest { "\n" + "--- file1\n" + "Diff skipped: File too large (26B -> 53B)\n" + - "\n", diff(app1, app2, 12, 1000, 1000)); + "\n", new String(diff(app1, app2, 12, 1000, 1000))); } @Test @@ -93,7 +93,7 @@ public class ApplicationPackageDiffTest { "\n" + "--- file1\n" + "Diff skipped: Diff too large (96B)\n" + - "\n", diff(app1, app2, 1000, 50, 1000)); + "\n", new String(diff(app1, app2, 1000, 50, 1000))); } @Test @@ -107,7 +107,7 @@ public class ApplicationPackageDiffTest { "\n" + "--- file1\n" + "Diff skipped: Total diff size >20B)\n" + - "\n", diff(app1, app2, 1000, 1000, 20)); + "\n", new String(diff(app1, app2, 1000, 1000, 20))); } private static ApplicationPackage applicationPackage(Map files) { diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ApplicationStoreMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ApplicationStoreMock.java index c2dd04144ab..77ab9e7d17c 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ApplicationStoreMock.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ApplicationStoreMock.java @@ -31,8 +31,8 @@ public class ApplicationStoreMock implements ApplicationStore { private final Map> store = new ConcurrentHashMap<>(); private final Map devStore = new ConcurrentHashMap<>(); - private final Map> diffs = new ConcurrentHashMap<>(); - private final Map> devDiffs = new ConcurrentHashMap<>(); + private final Map> diffs = new ConcurrentHashMap<>(); + private final Map> devDiffs = new ConcurrentHashMap<>(); private final Map> meta = new ConcurrentHashMap<>(); private final Map> metaManual = new ConcurrentHashMap<>(); @@ -58,7 +58,7 @@ public class ApplicationStoreMock implements ApplicationStore { } @Override - public Optional getDiff(TenantName tenantName, ApplicationName applicationName, long buildNumber) { + public Optional getDiff(TenantName tenantName, ApplicationName applicationName, long buildNumber) { return Optional.ofNullable(diffs.get(appId(tenantName, applicationName))).map(map -> map.get(buildNumber)); } @@ -79,7 +79,7 @@ public class ApplicationStoreMock implements ApplicationStore { } @Override - public void put(TenantName tenant, ApplicationName application, ApplicationVersion applicationVersion, byte[] applicationPackage, String diff) { + public void put(TenantName tenant, ApplicationName application, ApplicationVersion applicationVersion, byte[] applicationPackage, byte[] diff) { store.computeIfAbsent(appId(tenant, application), __ -> new ConcurrentHashMap<>()).put(applicationVersion, applicationPackage); applicationVersion.buildNumber().ifPresent(buildNumber -> diffs.computeIfAbsent(appId(tenant, application), __ -> new ConcurrentHashMap<>()).put(buildNumber, diff)); @@ -119,7 +119,7 @@ public class ApplicationStoreMock implements ApplicationStore { } @Override - public Optional getDevDiff(DeploymentId deploymentId, long buildNumber) { + public Optional getDevDiff(DeploymentId deploymentId, long buildNumber) { return Optional.ofNullable(devDiffs.get(deploymentId)).map(map -> map.get(buildNumber)); } @@ -132,7 +132,7 @@ public class ApplicationStoreMock implements ApplicationStore { } @Override - public void putDev(DeploymentId deploymentId, ApplicationVersion applicationVersion, byte[] applicationPackage, String diff) { + public void putDev(DeploymentId deploymentId, ApplicationVersion applicationVersion, byte[] applicationPackage, byte[] diff) { devStore.put(deploymentId, applicationPackage); applicationVersion.buildNumber().ifPresent(buildNumber -> devDiffs.computeIfAbsent(deploymentId, __ -> new ConcurrentHashMap<>()).put(buildNumber, diff)); -- cgit v1.2.3