summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2020-09-16 14:58:24 +0200
committerHarald Musum <musum@verizonmedia.com>2020-09-16 14:58:24 +0200
commit14ff7194bf46c5d56faabcf0a26d7606b3d0c927 (patch)
tree43edf18cd1364cfed36cb11b1fb0691e4231d0ce /node-repository
parentc12dfa2fef99ad6bf76cf7560002b5f821bcab23 (diff)
Test with bootstrapping flag set
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDeployer.java9
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java18
2 files changed, 23 insertions, 4 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDeployer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDeployer.java
index ae3d6ebf815..06ece5b3767 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDeployer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockDeployer.java
@@ -12,7 +12,6 @@ import com.yahoo.config.provision.HostSpec;
import com.yahoo.transaction.NestedTransaction;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeRepository;
-import com.yahoo.vespa.hosted.provision.node.Agent;
import com.yahoo.vespa.hosted.provision.provisioning.NodeRepositoryProvisioner;
import java.time.Clock;
@@ -44,6 +43,7 @@ public class MockDeployer implements Deployer {
private final ReentrantLock lock = new ReentrantLock();
private boolean failActivate = false;
+ private boolean bootstrapping = true;
/** Create a mock deployer which returns empty on every deploy request. */
@Inject
@@ -83,6 +83,8 @@ public class MockDeployer implements Deployer {
public void setFailActivate(boolean failActivate) { this.failActivate = failActivate; }
+ public void setBootstrapping(boolean bootstrapping) { this.bootstrapping = bootstrapping; }
+
@Override
public Optional<Deployment> deployFromLocalActive(ApplicationId id, boolean bootstrap) {
return deployFromLocalActive(id, Duration.ofSeconds(60));
@@ -117,6 +119,11 @@ public class MockDeployer implements Deployer {
return Optional.ofNullable(lastDeployTimes.get(application));
}
+ @Override
+ public boolean bootstrapping() {
+ return bootstrapping;
+ }
+
public void removeApplication(ApplicationId applicationId) {
new MockDeployment(provisioner, new ApplicationContext(applicationId, List.of())).activate();
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java
index 099282205fe..ec830a7dc31 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/PeriodicApplicationMaintainerTest.java
@@ -87,8 +87,9 @@ public class PeriodicApplicationMaintainerTest {
// Create applications
fixture.activate();
- // Exhaust initial wait period
+ // Exhaust initial wait period and set bootstrapping to be done
clock.advance(Duration.ofMinutes(30).plus(Duration.ofSeconds(1)));
+ fixture.setBootstrapping(false);
// Fail and park some nodes
nodeRepository.fail(nodeRepository.getNodes(fixture.app1).get(3).hostname(), Agent.system, "Failing to unit test");
@@ -161,9 +162,15 @@ public class PeriodicApplicationMaintainerTest {
// Exhaust initial wait period
clock.advance(Duration.ofMinutes(30).plus(Duration.ofSeconds(1)));
- // First deployment of applications
+ // Will not do any deployments, as bootstrapping is still in progress
+ fixture.runApplicationMaintainer();
+ assertEquals("No deployment expected", 2, fixture.deployer.redeployments);
+
+ // First deployment of applications will happen now, as bootstrapping is done
+ fixture.setBootstrapping(false);
fixture.runApplicationMaintainer();
assertEquals("No deployment expected", 4, fixture.deployer.redeployments);
+
Instant firstDeployTime = clock.instant();
assertEquals(firstDeployTime, fixture.deployer.lastDeployTime(fixture.app1).get());
assertEquals(firstDeployTime, fixture.deployer.lastDeployTime(fixture.app2).get());
@@ -186,8 +193,9 @@ public class PeriodicApplicationMaintainerTest {
public void queues_all_eligible_applications_for_deployment() throws Exception {
fixture.activate();
- // Exhaust initial wait period
+ // Exhaust initial wait period and set bootstrapping to be done
clock.advance(Duration.ofMinutes(30).plus(Duration.ofSeconds(1)));
+ fixture.setBootstrapping(false);
// Lock deployer to simulate slow deployments
fixture.deployer.lock().lockInterruptibly();
@@ -298,6 +306,10 @@ public class PeriodicApplicationMaintainerTest {
return NodeList.copyOf(nodeRepository.getNodes(NodeType.tenant, states));
}
+ void setBootstrapping(boolean bootstrapping) {
+ deployer.setBootstrapping(bootstrapping);
+ }
+
}
private static class TestablePeriodicApplicationMaintainer extends PeriodicApplicationMaintainer {