diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2022-02-24 04:04:41 +0100 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2022-02-24 04:04:41 +0100 |
commit | fabf174e6349de1faaf8b209d63bcb174edf0c46 (patch) | |
tree | ffcac4515b319133b7af74dc3562b963f8db1dda | |
parent | 76885dd3a758e050faf0c3da95e18c7853dec991 (diff) |
Include tests in versino hash
3 files changed, 10 insertions, 7 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackage.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackage.java index 34e2f1350f0..8e0c029aeab 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackage.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackage.java @@ -237,6 +237,12 @@ public class ApplicationPackage { .hash().toString(); } + public static String calculateHash(byte[] bytes) { + return Hashing.sha1().newHasher() + .putBytes(bytes) + .hash().toString(); + } + /** Maps normalized paths to cached content read from a zip archive. */ private static class ZipArchiveCache { 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 60c41ef520d..7f5d486820e 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 @@ -452,13 +452,14 @@ public class JobController { Optional<ApplicationPackage> previousPackage = previousVersion.flatMap(previous -> controller.applications().applicationStore().find(id.tenant(), id.application(), previous.buildNumber().getAsLong())) .map(ApplicationPackage::new); long previousBuild = previousVersion.map(latestVersion -> latestVersion.buildNumber().getAsLong()).orElse(0L); + String packageHash = applicationPackage.bundleHash() + ApplicationPackage.calculateHash(testPackageBytes); version.set(ApplicationVersion.from(revision, 1 + previousBuild, authorEmail, applicationPackage.compileVersion(), applicationPackage.buildTime(), sourceUrl, revision.map(SourceRevision::commit), false, - Optional.of(applicationPackage.bundleHash()))); + Optional.of(packageHash))); byte[] diff = previousPackage.map(previous -> ApplicationPackageDiff.diff(previous, applicationPackage)) .orElseGet(() -> ApplicationPackageDiff.diffAgainstEmpty(applicationPackage)); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentContext.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentContext.java index 1e41421de53..a8c04c0c4fe 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentContext.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentContext.java @@ -272,17 +272,13 @@ public class DeploymentContext { /** Submit given application package for deployment */ public DeploymentContext submit(ApplicationPackage applicationPackage, Optional<SourceRevision> sourceRevision, long salt) { - var buffer = new ByteArrayOutputStream(); - ZipStreamReader.transferAndWrite(buffer, - new ByteArrayInputStream(applicationPackage.zippedContent()), - "salt", - new byte[]{ (byte) (salt >> 56), (byte) (salt >> 48), (byte) (salt >> 40), (byte) (salt >> 32), (byte) (salt >> 24), (byte) (salt >> 16), (byte) (salt >> 8), (byte) salt }); var projectId = tester.controller().applications() .requireApplication(applicationId) .projectId() .orElse(1000); // These are really set through submission, so just pick one if it hasn't been set. + var testerpackage = new byte[]{ (byte) (salt >> 56), (byte) (salt >> 48), (byte) (salt >> 40), (byte) (salt >> 32), (byte) (salt >> 24), (byte) (salt >> 16), (byte) (salt >> 8), (byte) salt }; lastSubmission = jobs.submit(applicationId, sourceRevision, Optional.of("a@b"), Optional.empty(), - projectId, new ApplicationPackage(buffer.toByteArray()), new byte[0]); + projectId, applicationPackage, testerpackage); return this; } |