diff options
author | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2018-10-31 16:01:29 +0100 |
---|---|---|
committer | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2018-10-31 16:01:29 +0100 |
commit | 62b5a975ba24347723c8d7e70f1ca34b6a7fc165 (patch) | |
tree | a949222d9932ed552eef75a7b118ef27a1ac942d /controller-server | |
parent | 792680b72dd63de4619e13abe70935c1bb695e69 (diff) |
Update tests
Diffstat (limited to 'controller-server')
3 files changed, 50 insertions, 18 deletions
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java index 70a47934262..9dd4c25050f 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentTriggerTest.java @@ -447,17 +447,22 @@ public class DeploymentTriggerTest { .sourceRevision(new SourceRevision("repository1", "master", "cafed00d")) .uploadArtifact(changedApplication) .submit(); - assertTrue(tester.applications().require(app.id()).change().isPresent()); + assertTrue(tester.applications().require(app.id()).outstandingChange().isPresent()); tester.deployAndNotify(app, changedApplication, true, systemTest); tester.deployAndNotify(app, changedApplication, true, stagingTest); + tester.outstandingChangeDeployer().run(); + assertTrue(tester.applications().require(app.id()).outstandingChange().isPresent()); + readyJobsTrigger.run(); assertEquals(emptyList(), tester.buildService().jobs()); tester.clock().advance(Duration.ofHours(2)); // ---------------- Exit block window: 20:30 + + tester.outstandingChangeDeployer().run(); + assertFalse(tester.applications().require(app.id()).outstandingChange().isPresent()); + tester.deploymentTrigger().triggerReadyJobs(); // Schedules staging test for the blocked production job(s) - // TODO jvenstad: Required now because changes during block window used empty source -- improvement to use first untested production job with change to test :) - tester.deployAndNotify(app, changedApplication, true, stagingTest); assertEquals(singletonList(buildJob(app, productionUsWest1)), tester.buildService().jobs()); } @@ -466,7 +471,7 @@ public class DeploymentTriggerTest { ManualClock clock = new ManualClock(Instant.parse("2017-09-26T17:30:00.00Z")); // Tuesday, 17:30 DeploymentTester tester = new DeploymentTester(new ControllerTester(clock)); ApplicationPackage applicationPackage = new ApplicationPackageBuilder() - .blockChange(false, true, "tue", "18", "UTC") + .blockChange(true, true, "tue", "18", "UTC") .region("us-west-1") .region("us-east-3") .build(); @@ -483,25 +488,33 @@ public class DeploymentTriggerTest { tester.deployAndNotify(application, applicationPackage, true, stagingTest); tester.deployAndNotify(application, applicationPackage, true, systemTest); - // Entering block window will keep the outstanding change in place, but a new component run triggers a new change. - // This component completion should remove the older outstanding change, to avoid a later downgrade. + // Entering block window will keep the outstanding change in place. clock.advance(Duration.ofHours(1)); + tester.outstandingChangeDeployer().run(); tester.deployAndNotify(application, applicationPackage, true, productionUsWest1); assertEquals(BuildJob.defaultBuildNumber, tester.application(application.id()).deploymentJobs().jobStatus() .get(productionUsWest1).lastSuccess().get().application().buildNumber().getAsLong()); assertEquals((BuildJob.defaultBuildNumber + 1), tester.application(application.id()).outstandingChange().application().get().buildNumber().getAsLong()); tester.readyJobTrigger().maintain(); - // Platform upgrade keeps rolling, since it has already deployed in a production zone. - assertEquals(1, tester.buildService().jobs().size()); + // Platform upgrade keeps rolling, since it has already deployed in a production zone, and tests for the new revision have also started. + assertEquals(3, tester.buildService().jobs().size()); tester.deployAndNotify(application, applicationPackage, true, productionUsEast3); - assertEquals(emptyList(), tester.buildService().jobs()); + assertEquals(2, tester.buildService().jobs().size()); + // Upgrade is done, and oustanding change rolls out when block window ends. + assertEquals(Change.empty(), tester.application(application.id()).change()); + assertFalse(tester.application(application.id()).change().isPresent()); + assertTrue(tester.application(application.id()).outstandingChange().isPresent()); - // New component triggers a full deployment of new application version, but only after the upgrade is done. - tester.jobCompletion(component).application(application).nextBuildNumber().nextBuildNumber().uploadArtifact(applicationPackage).submit(); tester.deployAndNotify(application, applicationPackage, true, stagingTest); tester.deployAndNotify(application, applicationPackage, true, systemTest); + clock.advance(Duration.ofHours(1)); + tester.outstandingChangeDeployer().run(); + assertTrue(tester.application(application.id()).change().isPresent()); + assertFalse(tester.application(application.id()).outstandingChange().isPresent()); + + tester.readyJobTrigger().run(); tester.deployAndNotify(application, applicationPackage, true, productionUsWest1); tester.deployAndNotify(application, applicationPackage, true, productionUsEast3); @@ -622,6 +635,10 @@ public class DeploymentTriggerTest { assertEquals(triggered, app1.get().deploymentJobs().jobStatus().get(productionUsCentral1).lastTriggered().get().at()); tester.deployAndNotify(application1, applicationPackage, false, productionEuWest1); + //Eagerly triggered system and staging tests complete. + tester.deployAndNotify(application1, applicationPackage, true, systemTest); + tester.deployAndNotify(application1, applicationPackage, true, stagingTest); + // Roll out a new application version, which gives a dual change -- this should trigger us-central-1, but only as long as it hasn't yet deployed there. tester.jobCompletion(component).application(application1).nextBuildNumber().uploadArtifact(applicationPackage).submit(); tester.deployAndNotify(application1, applicationPackage, false, productionEuWest1); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployerTest.java index 4483122d554..bc22df7bf46 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployerTest.java @@ -66,6 +66,8 @@ public class OutstandingChangeDeployerTest { tester.deployAndNotify(app, applicationPackage, true, JobType.systemTest); tester.deployAndNotify(app, applicationPackage, true, JobType.stagingTest); tester.deployAndNotify(app, applicationPackage, true, JobType.productionUsWest1); + tester.deployAndNotify(app, applicationPackage, true, JobType.systemTest); + tester.deployAndNotify(app, applicationPackage, true, JobType.stagingTest); assertEquals("Upgrade done", 0, tester.buildService().jobs().size()); deployer.maintain(); @@ -73,10 +75,9 @@ public class OutstandingChangeDeployerTest { app = tester.application("app1"); assertEquals("1.0.43-cafed00d", app.change().application().get().id()); List<BuildService.BuildJob> jobs = tester.buildService().jobs(); - assertEquals(2, jobs.size()); + assertEquals(1, jobs.size()); + assertEquals(JobType.productionUsWest1.jobName(), jobs.get(0).jobName()); assertEquals(11, jobs.get(0).projectId()); - tester.assertRunning(JobType.systemTest, app.id()); - tester.assertRunning(JobType.stagingTest, app.id()); assertFalse(tester.application("app1").outstandingChange().isPresent()); } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UpgraderTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UpgraderTest.java index 04c0e7e9a6f..6d4f58531ae 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UpgraderTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/UpgraderTest.java @@ -1042,23 +1042,37 @@ public class UpgraderTest { tester.jobCompletion(component).application(app).nextBuildNumber().uploadArtifact(applicationPackage).submit(); - // Application upgrade starts. + // Application revision starts rolling out. tester.upgrader().maintain(); tester.triggerUntilQuiescence(); tester.deployAndNotify(app, applicationPackage, true, systemTest); tester.deployAndNotify(app, applicationPackage, true, stagingTest); clock.advance(Duration.ofHours(1)); // Entering block window after prod job is triggered. tester.deployAndNotify(app, applicationPackage, true, productionUsWest1); - assertEquals(1, tester.buildService().jobs().size()); // Next job triggered in spite of block, because it is already rolling out. + assertEquals(1, tester.buildService().jobs().size()); - // New revision is submitted, but is stored as outstanding, since the previous revision is proceeding in good fashion. + // New revision is submitted, but is stored as outstanding, since the upgrade is proceeding in good fashion. tester.jobCompletion(component).application(app).nextBuildNumber().nextBuildNumber().uploadArtifact(applicationPackage).submit(); tester.triggerUntilQuiescence(); - assertEquals(1, tester.buildService().jobs().size()); // Still just the running revision upgrade. + assertEquals(3, tester.buildService().jobs().size()); // Just the running upgrade, and tests for the new revision. + tester.deployAndNotify(app, applicationPackage, true, systemTest); + tester.deployAndNotify(app, applicationPackage, true, stagingTest); tester.deployAndNotify(app, applicationPackage, true, productionUsCentral1); tester.deployAndNotify(app, applicationPackage, true, productionUsEast3); assertEquals(Collections.emptyList(), tester.buildService().jobs()); // No jobs left. + + tester.outstandingChangeDeployer().run(); + assertFalse(tester.application(app.id()).change().isPresent()); + clock.advance(Duration.ofHours(2)); + + tester.outstandingChangeDeployer().run(); + assertTrue(tester.application(app.id()).change().isPresent()); + tester.readyJobTrigger().run(); + tester.deployAndNotify(app, applicationPackage, true, productionUsWest1); + tester.deployAndNotify(app, applicationPackage, true, productionUsCentral1); + tester.deployAndNotify(app, applicationPackage, true, productionUsEast3); + assertFalse(tester.application(app.id()).change().isPresent()); } } |