diff options
author | Øyvind Grønnesby <oyving@yahooinc.com> | 2023-06-12 14:06:22 +0200 |
---|---|---|
committer | Øyvind Grønnesby <oyving@yahooinc.com> | 2023-06-12 14:06:22 +0200 |
commit | b1f6112e00aac573fa5f5dbaffc6dfae639c4494 (patch) | |
tree | cec6c78322b9af686e8b33b35e10a41b14e31545 /controller-server | |
parent | 9d4fb4f1c84515a59a720e4e82098726352183f8 (diff) |
Test deployment with enclave
Diffstat (limited to 'controller-server')
3 files changed, 307 insertions, 0 deletions
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ApplicationPackageBuilder.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ApplicationPackageBuilder.java index 2c1e0b743fe..965201ec6da 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ApplicationPackageBuilder.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ApplicationPackageBuilder.java @@ -173,6 +173,10 @@ public class ApplicationPackageBuilder { return this; } + public ApplicationPackageBuilder region(String regionName, String cloudAccount) { + return region(RegionName.from(regionName), cloudAccount); + } + public ApplicationPackageBuilder region(RegionName regionName, String cloudAccount) { prodBody.append(" <region ") .append("cloud-account=\"") diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelperTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelperTest.java index 6555277b06b..d999514597a 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelperTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelperTest.java @@ -2,9 +2,13 @@ package com.yahoo.vespa.hosted.controller.restapi.application; import com.yahoo.component.Version; +import com.yahoo.config.provision.CloudAccount; +import com.yahoo.config.provision.SystemName; import com.yahoo.config.provision.zone.ZoneId; import com.yahoo.container.jdisc.HttpResponse; import com.yahoo.slime.SlimeUtils; +import com.yahoo.vespa.flags.PermanentFlags; +import com.yahoo.vespa.hosted.controller.ControllerTester; import com.yahoo.vespa.hosted.controller.api.integration.configserver.ConfigServerException; import com.yahoo.vespa.hosted.controller.api.integration.deployment.RevisionId; import com.yahoo.vespa.hosted.controller.api.integration.deployment.RunId; @@ -25,6 +29,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.time.Duration; import java.time.Instant; +import java.util.List; import java.util.Optional; import static com.yahoo.vespa.hosted.controller.api.integration.configserver.ConfigServerException.ErrorCode.INVALID_APPLICATION_PACKAGE; @@ -198,6 +203,24 @@ public class JobControllerApiHandlerHelperTest { "jobs-direct-deployment.json"); } + @Test + void testEnclave() { + var cloudAccount = CloudAccount.from("aws:123456789012"); + var applicationPackage = new ApplicationPackageBuilder() + .stagingTest() + .systemTest() + .region("aws-us-east-1c", cloudAccount.value()) + .build(); + var tester = new DeploymentTester(new ControllerTester(SystemName.Public)); + tester.controllerTester().flagSource().withListFlag(PermanentFlags.CLOUD_ACCOUNTS.id(), List.of(cloudAccount.value()), String.class); + tester.controllerTester().zoneRegistry().configureCloudAccount(cloudAccount, ZoneId.from("prod.aws-us-east-1c")); + + var app = tester.newDeploymentContext(); + app.submit(applicationPackage).deploy(); + + assertResponse(JobControllerApiHandlerHelper.overviewResponse(tester.controller(), app.application().id(), URI.create("https://some.url:43/root/")), "overview-enclave.json"); + } + private void assertResponse(HttpResponse response, String fileName) { try { Path path = Paths.get("src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/").resolve(fileName); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-enclave.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-enclave.json new file mode 100644 index 00000000000..6a322f9f381 --- /dev/null +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/overview-enclave.json @@ -0,0 +1,280 @@ +{ + "tenant": "tenant", + "application": "application", + "projectId": 1000, + "steps": [ + { + "type": "instance", + "dependencies": [ ], + "declared": true, + "instance": "default", + "readyAt": 0, + "deploying": { }, + "latestVersions": { + "platform": { + "platform": "6.1.0", + "at": 1600000000000, + "upgrade": false, + "available": [ + { + "platform": "6.1.0", + "upgrade": false + } + ], + "blockers": [ ] + }, + "application": { + "application": { + "build": 1, + "compileVersion": "6.1.0", + "sourceUrl": "repository1/tree/commit1", + "commit": "commit1" + }, + "at": 1000, + "upgrade": false, + "available": [ + { + "application": { + "build": 1, + "compileVersion": "6.1.0", + "sourceUrl": "repository1/tree/commit1", + "commit": "commit1" + } + } + ], + "blockers": [ ] + } + }, + "delayCause": null + }, + { + "type": "test", + "dependencies": [ ], + "declared": true, + "instance": "default", + "readyAt": 0, + "jobName": "staging-test", + "url": "https://some.url:43/instance/default/job/staging-test", + "environment": "staging", + "toRun": [ ], + "runs": [ + { + "id": 1, + "url": "https://some.url:43/instance/default/job/staging-test/run/1", + "start": 1600000000000, + "end": 1600000000000, + "status": "success", + "versions": { + "targetPlatform": "6.1.0", + "targetApplication": { + "build": 1, + "compileVersion": "6.1.0", + "sourceUrl": "repository1/tree/commit1", + "commit": "commit1" + } + }, + "steps": [ + { + "name": "deployTester", + "status": "succeeded" + }, + { + "name": "installTester", + "status": "succeeded" + }, + { + "name": "deployInitialReal", + "status": "succeeded" + }, + { + "name": "installInitialReal", + "status": "succeeded" + }, + { + "name": "startStagingSetup", + "status": "succeeded" + }, + { + "name": "endStagingSetup", + "status": "succeeded" + }, + { + "name": "deployReal", + "status": "succeeded" + }, + { + "name": "installReal", + "status": "succeeded" + }, + { + "name": "startTests", + "status": "succeeded" + }, + { + "name": "endTests", + "status": "succeeded" + }, + { + "name": "copyVespaLogs", + "status": "succeeded" + }, + { + "name": "deactivateReal", + "status": "succeeded" + }, + { + "name": "deactivateTester", + "status": "succeeded" + }, + { + "name": "report", + "status": "succeeded" + } + ] + } + ], + "delayCause": null + }, + { + "type": "test", + "dependencies": [ ], + "declared": true, + "instance": "default", + "readyAt": 0, + "jobName": "system-test", + "url": "https://some.url:43/instance/default/job/system-test", + "environment": "test", + "toRun": [ ], + "runs": [ + { + "id": 1, + "url": "https://some.url:43/instance/default/job/system-test/run/1", + "start": 1600000000000, + "end": 1600000000000, + "status": "success", + "versions": { + "targetPlatform": "6.1.0", + "targetApplication": { + "build": 1, + "compileVersion": "6.1.0", + "sourceUrl": "repository1/tree/commit1", + "commit": "commit1" + } + }, + "steps": [ + { + "name": "deployTester", + "status": "succeeded" + }, + { + "name": "installTester", + "status": "succeeded" + }, + { + "name": "deployReal", + "status": "succeeded" + }, + { + "name": "installReal", + "status": "succeeded" + }, + { + "name": "startTests", + "status": "succeeded" + }, + { + "name": "endTests", + "status": "succeeded" + }, + { + "name": "copyVespaLogs", + "status": "succeeded" + }, + { + "name": "deactivateReal", + "status": "succeeded" + }, + { + "name": "deactivateTester", + "status": "succeeded" + }, + { + "name": "report", + "status": "succeeded" + } + ] + } + ], + "delayCause": null + }, + { + "type": "deployment", + "dependencies": [ + 0, + 1, + 2 + ], + "declared": true, + "instance": "default", + "readyAt": 1600000000000, + "jobName": "production-aws-us-east-1c", + "url": "https://some.url:43/instance/default/job/production-aws-us-east-1c", + "environment": "prod", + "region": "prod.aws-us-east-1c", + "enclave": { + "cloudAccount": "aws:123456789012" + }, + "currentPlatform": "6.1.0", + "currentApplication": { + "build": 1, + "compileVersion": "6.1.0", + "sourceUrl": "repository1/tree/commit1", + "commit": "commit1" + }, + "toRun": [ ], + "runs": [ + { + "id": 1, + "url": "https://some.url:43/instance/default/job/production-aws-us-east-1c/run/1", + "start": 1600000000000, + "end": 1600000000000, + "status": "success", + "versions": { + "targetPlatform": "6.1.0", + "targetApplication": { + "build": 1, + "compileVersion": "6.1.0", + "sourceUrl": "repository1/tree/commit1", + "commit": "commit1" + } + }, + "steps": [ + { + "name": "deployReal", + "status": "succeeded" + }, + { + "name": "installReal", + "status": "succeeded" + }, + { + "name": "report", + "status": "succeeded" + } + ] + } + ], + "delayCause": null + } + ], + "builds": [ + { + "build": 1, + "compileVersion": "6.1.0", + "sourceUrl": "repository1/tree/commit1", + "commit": "commit1", + "deployable": true, + "submittedAt": 1600000000000 + } + ] +} |