summaryrefslogtreecommitdiffstats
path: root/node-repository/src
diff options
context:
space:
mode:
authorValerij Fredriksen <valerij92@gmail.com>2019-02-06 23:23:33 +0100
committerValerij Fredriksen <valerij92@gmail.com>2019-02-06 23:58:59 +0100
commit70f70a407ee21a274c1ce7e3516c5a6856e446c9 (patch)
tree7a16a1737eb7a88b3441eb9b558692702fd67d45 /node-repository/src
parentd8a0298c58418f2eabeda23d09563ea0304cd9c8 (diff)
Create ProvisionTester Builder
Diffstat (limited to 'node-repository/src')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java21
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java5
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java6
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirerTest.java9
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainerTest.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java10
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningTest.java33
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisioningTest.java16
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java9
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java12
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java5
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java73
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java112
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java15
15 files changed, 172 insertions, 158 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java
index ee754b5d89c..866171b8b7f 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java
@@ -79,7 +79,7 @@ public class GroupPreparer {
}
}
- private String outOfCapacityDetails(NodeAllocation allocation) {
+ private static String outOfCapacityDetails(NodeAllocation allocation) {
if (allocation.wouldBeFulfilledWithoutExclusivity())
return ": Not enough nodes available due to host exclusivity constraints.";
else if (allocation.wouldBeFulfilledWithClashingParentHost())
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java
index 7a00665523c..89412fe6350 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java
@@ -22,6 +22,7 @@ import java.util.LinkedHashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
+import java.util.function.Predicate;
import java.util.stream.Collectors;
/**
@@ -315,24 +316,22 @@ class NodeAllocation {
}
List<Node> reservableNodes() {
- return nodes.stream().map(n -> n.node)
- .filter(n -> n.state() == Node.State.inactive ||
- n.state() == Node.State.ready)
- .collect(Collectors.toList());
+ return nodesFilter(n -> n.node.state() == Node.State.inactive || n.node.state() == Node.State.ready);
}
List<Node> surplusNodes() {
- return nodes.stream()
- .filter(n -> n.isSurplusNode)
- .map(n -> n.node)
- .collect(Collectors.toList());
+ return nodesFilter(n -> n.isSurplusNode);
}
List<Node> newNodes() {
+ return nodesFilter(n -> n.isNewNode);
+ }
+
+ private List<Node> nodesFilter(Predicate<PrioritizableNode> predicate) {
return nodes.stream()
- .filter(n -> n.isNewNode)
- .map(n -> n.node)
- .collect(Collectors.toList());
+ .filter(predicate)
+ .map(n -> n.node)
+ .collect(Collectors.toList());
}
private List<PrioritizableNode> byDecreasingIndex(Set<PrioritizableNode> nodes) {
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java
index bcb0f342fb8..c0479a054c6 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java
@@ -72,10 +72,9 @@ public interface NodeSpec {
private final boolean exclusive;
private final boolean canFail;
- public CountNodeSpec(int count, Flavor flavor, boolean exclusive, boolean canFail) {
- Objects.requireNonNull(flavor, "A flavor must be specified");
+ CountNodeSpec(int count, Flavor flavor, boolean exclusive, boolean canFail) {
this.count = count;
- this.requestedFlavor = flavor;
+ this.requestedFlavor = Objects.requireNonNull(flavor, "A flavor must be specified");
this.exclusive = exclusive;
this.canFail = canFail;
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java
index bde9c95391c..bb396026a43 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/InactiveAndFailedExpirerTest.java
@@ -47,7 +47,7 @@ public class InactiveAndFailedExpirerTest {
@Test
public void inactive_and_failed_times_out() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
List<Node> nodes = tester.makeReadyNodes(2, "default");
// Allocate then deallocate 2 nodes
@@ -85,7 +85,7 @@ public class InactiveAndFailedExpirerTest {
@Test
public void reboot_generation_is_increased_when_node_moves_to_dirty() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
List<Node> nodes = tester.makeReadyNodes(2, "default");
// Allocate and deallocate a single node
@@ -117,7 +117,7 @@ public class InactiveAndFailedExpirerTest {
@Test
public void node_that_wants_to_retire_is_moved_to_parked() throws OrchestrationException {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("test"),
Version.fromString("6.42"), false, Collections.emptySet());
tester.makeReadyNodes(5, "default");
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirerTest.java
index 7452216abab..5b373c735e4 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirerTest.java
@@ -5,14 +5,12 @@ import com.yahoo.component.Vtag;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.HostSpec;
-import com.yahoo.config.provision.Zone;
import com.yahoo.transaction.NestedTransaction;
import com.yahoo.vespa.hosted.provision.flag.FlagId;
import com.yahoo.vespa.hosted.provision.lb.LoadBalancer;
import com.yahoo.vespa.hosted.provision.lb.LoadBalancerId;
import com.yahoo.vespa.hosted.provision.node.Agent;
import com.yahoo.vespa.hosted.provision.provisioning.ProvisioningTester;
-import org.junit.Before;
import org.junit.Test;
import java.time.Duration;
@@ -30,12 +28,7 @@ import static org.junit.Assert.assertTrue;
*/
public class LoadBalancerExpirerTest {
- private ProvisioningTester tester;
-
- @Before
- public void before() {
- tester = new ProvisioningTester(Zone.defaultZone());
- }
+ private ProvisioningTester tester = new ProvisioningTester.Builder().build();
@Test
public void test_maintain() {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainerTest.java
index e8b6751a154..8d8e0dea6fb 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/OperatorChangeApplicationMaintainerTest.java
@@ -124,7 +124,7 @@ public class OperatorChangeApplicationMaintainerTest {
Fixture(Zone zone, NodeRepository nodeRepository, NodeFlavors flavors, Curator curator) {
this.nodeRepository = nodeRepository;
this.curator = curator;
- this.provisioner = new NodeRepositoryProvisioner(nodeRepository, flavors, zone, new MockProvisionServiceProvider());
+ this.provisioner = new NodeRepositoryProvisioner(nodeRepository, flavors, zone, new MockProvisionServiceProvider());
}
void activate() {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java
index 6c844f2c1bb..46fd2183faa 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/AclProvisioningTest.java
@@ -8,11 +8,9 @@ import com.yahoo.config.provision.Capacity;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.HostSpec;
import com.yahoo.config.provision.NodeType;
-import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.flag.FlagId;
import com.yahoo.vespa.hosted.provision.node.NodeAcl;
-import org.junit.Before;
import org.junit.Test;
import java.util.Arrays;
@@ -25,7 +23,6 @@ import java.util.Set;
import java.util.function.Supplier;
import java.util.stream.Collectors;
-import static com.yahoo.vespa.hosted.provision.provisioning.ProvisioningTester.createConfig;
import static java.util.Collections.emptySet;
import static java.util.Collections.singleton;
import static org.junit.Assert.assertEquals;
@@ -36,12 +33,7 @@ import static org.junit.Assert.assertFalse;
*/
public class AclProvisioningTest {
- private ProvisioningTester tester;
-
- @Before
- public void before() {
- this.tester = new ProvisioningTester(Zone.defaultZone(), createConfig());
- }
+ private ProvisioningTester tester = new ProvisioningTester.Builder().build();
@Test
public void trusted_nodes_for_allocated_node() {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningTest.java
index 00c77c6b06a..0fdf857e97f 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DockerProvisioningTest.java
@@ -23,7 +23,6 @@ import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
-import java.util.stream.Stream;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -41,7 +40,7 @@ public class DockerProvisioningTest {
@Test
public void docker_application_deployment() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
ApplicationId application1 = tester.makeApplicationId();
for (int i = 1; i < 10; i++)
@@ -72,7 +71,7 @@ public class DockerProvisioningTest {
@Test
public void refuses_to_activate_on_non_active_host() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
ApplicationId zoneApplication = tester.makeApplicationId();
List<Node> parents = tester.makeReadyVirtualDockerHosts(10, "large");
@@ -109,7 +108,7 @@ public class DockerProvisioningTest {
/** Exclusive app first, then non-exclusive: Should give the same result as below */
@Test
public void docker_application_deployment_with_exclusive_app_first() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
for (int i = 1; i <= 4; i++)
tester.makeReadyVirtualDockerNode(i, dockerFlavor, "host1");
for (int i = 5; i <= 8; i++)
@@ -121,18 +120,18 @@ public class DockerProvisioningTest {
ApplicationId application1 = tester.makeApplicationId();
prepareAndActivate(application1, 2, true, tester);
- assertEquals(setOf("host1", "host2"), hostsOf(tester.getNodes(application1, Node.State.active)));
+ assertEquals(Set.of("host1", "host2"), hostsOf(tester.getNodes(application1, Node.State.active)));
ApplicationId application2 = tester.makeApplicationId();
prepareAndActivate(application2, 2, false, tester);
assertEquals("Application is assigned to separate hosts",
- setOf("host3", "host4"), hostsOf(tester.getNodes(application2, Node.State.active)));
+ Set.of("host3", "host4"), hostsOf(tester.getNodes(application2, Node.State.active)));
}
/** Non-exclusive app first, then an exclusive: Should give the same result as above */
@Test
public void docker_application_deployment_with_exclusive_app_last() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
for (int i = 1; i <= 4; i++)
tester.makeReadyVirtualDockerNode(i, dockerFlavor, "host1");
for (int i = 5; i <= 8; i++)
@@ -144,18 +143,18 @@ public class DockerProvisioningTest {
ApplicationId application1 = tester.makeApplicationId();
prepareAndActivate(application1, 2, false, tester);
- assertEquals(setOf("host1", "host2"), hostsOf(tester.getNodes(application1, Node.State.active)));
+ assertEquals(Set.of("host1", "host2"), hostsOf(tester.getNodes(application1, Node.State.active)));
ApplicationId application2 = tester.makeApplicationId();
prepareAndActivate(application2, 2, true, tester);
assertEquals("Application is assigned to separate hosts",
- setOf("host3", "host4"), hostsOf(tester.getNodes(application2, Node.State.active)));
+ Set.of("host3", "host4"), hostsOf(tester.getNodes(application2, Node.State.active)));
}
/** Test making an application exclusive */
@Test
public void docker_application_deployment_change_to_exclusive_and_back() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
for (int i = 1; i <= 4; i++)
tester.makeReadyVirtualDockerNode(i, dockerFlavor, "host1");
for (int i = 5; i <= 8; i++)
@@ -171,12 +170,12 @@ public class DockerProvisioningTest {
assertFalse(node.allocation().get().membership().cluster().isExclusive());
prepareAndActivate(application1, 2, true, tester);
- assertEquals(setOf("host1", "host2"), hostsOf(tester.getNodes(application1, Node.State.active)));
+ assertEquals(Set.of("host1", "host2"), hostsOf(tester.getNodes(application1, Node.State.active)));
for (Node node : tester.getNodes(application1, Node.State.active))
assertTrue(node.allocation().get().membership().cluster().isExclusive());
prepareAndActivate(application1, 2, false, tester);
- assertEquals(setOf("host1", "host2"), hostsOf(tester.getNodes(application1, Node.State.active)));
+ assertEquals(Set.of("host1", "host2"), hostsOf(tester.getNodes(application1, Node.State.active)));
for (Node node : tester.getNodes(application1, Node.State.active))
assertFalse(node.allocation().get().membership().cluster().isExclusive());
}
@@ -184,7 +183,7 @@ public class DockerProvisioningTest {
/** Non-exclusive app first, then an exclusive: Should give the same result as above */
@Test
public void docker_application_deployment_with_exclusive_app_causing_allocation_failure() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
for (int i = 1; i <= 4; i++)
tester.makeReadyVirtualDockerNode(i, dockerFlavor, "host1");
for (int i = 5; i <= 8; i++)
@@ -196,7 +195,7 @@ public class DockerProvisioningTest {
ApplicationId application1 = tester.makeApplicationId();
prepareAndActivate(application1, 2, true, tester);
- assertEquals(setOf("host1", "host2"), hostsOf(tester.getNodes(application1, Node.State.active)));
+ assertEquals(Set.of("host1", "host2"), hostsOf(tester.getNodes(application1, Node.State.active)));
try {
ApplicationId application2 = ApplicationId.from("tenant1", "app1", "default");
@@ -217,7 +216,7 @@ public class DockerProvisioningTest {
// In dev, test and staging you get nodes with default flavor, but we should get specified flavor for docker nodes
@Test
public void get_specified_flavor_not_default_flavor_for_docker() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.test, RegionName.from("corp-us-east-1")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.test, RegionName.from("corp-us-east-1"))).build();
ApplicationId application1 = tester.makeApplicationId();
tester.makeReadyVirtualDockerNodes(1, dockerFlavor, "dockerHost");
@@ -229,10 +228,6 @@ public class DockerProvisioningTest {
assertEquals(dockerFlavor, nodes.asList().get(0).flavor().canonicalName());
}
- private Set<String> setOf(String ... strings) {
- return Stream.of(strings).collect(Collectors.toSet());
- }
-
private Set<String> hostsOf(NodeList nodes) {
return nodes.asList().stream().map(Node::parentHostname).map(Optional::get).collect(Collectors.toSet());
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisioningTest.java
index 86e926be6b7..11445a73477 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerProvisioningTest.java
@@ -60,7 +60,7 @@ public class DynamicDockerProvisioningTest {
*/
@Test
public void relocate_nodes_from_spare_hosts() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")), flavorsConfig());
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).flavorsConfig(flavorsConfig()).build();
tester.makeReadyNodes(4, "host-small", NodeType.host, 32);
deployZoneApp(tester);
List<Node> dockerHosts = tester.nodeRepository().getNodes(NodeType.host, Node.State.active);
@@ -103,7 +103,7 @@ public class DynamicDockerProvisioningTest {
*/
@Test
public void relocate_failed_nodes() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")), flavorsConfig());
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).flavorsConfig(flavorsConfig()).build();
tester.makeReadyNodes(5, "host-small", NodeType.host, 32);
deployZoneApp(tester);
List<Node> dockerHosts = tester.nodeRepository().getNodes(NodeType.host, Node.State.active);
@@ -160,7 +160,7 @@ public class DynamicDockerProvisioningTest {
*/
@Test
public void do_not_relocate_nodes_from_spare_if_no_where_to_relocate_them() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")), flavorsConfig());
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).flavorsConfig(flavorsConfig()).build();
tester.makeReadyNodes(2, "host-small", NodeType.host, 32);
deployZoneApp(tester);
List<Node> dockerHosts = tester.nodeRepository().getNodes(NodeType.host, Node.State.active);
@@ -187,7 +187,7 @@ public class DynamicDockerProvisioningTest {
@Test(expected = OutOfCapacityException.class)
public void multiple_groups_are_on_separate_parent_hosts() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")), flavorsConfig());
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).flavorsConfig(flavorsConfig()).build();
tester.makeReadyNodes(5, "host-small", NodeType.host, 32);
deployZoneApp(tester);
Flavor flavor = tester.nodeRepository().getAvailableFlavors().getFlavorOrThrow("d-1");
@@ -206,7 +206,7 @@ public class DynamicDockerProvisioningTest {
// Test should allocate as much capacity as possible, verify that it is not possible to allocate one more unit
// Verify that there is still capacity (available spare)
// Fail one node and redeploy, Verify that one less node is empty.
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")), flavorsConfig());
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).flavorsConfig(flavorsConfig()).build();
// Setup test
ApplicationId application1 = tester.makeApplicationId();
@@ -242,7 +242,7 @@ public class DynamicDockerProvisioningTest {
@Test
public void non_prod_zones_do_not_have_spares() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.perf, RegionName.from("us-east")), flavorsConfig());
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.perf, RegionName.from("us-east"))).flavorsConfig(flavorsConfig()).build();
tester.makeReadyNodes(3, "host-small", NodeType.host, 32);
deployZoneApp(tester);
Flavor flavor = tester.nodeRepository().getAvailableFlavors().getFlavorOrThrow("d-3");
@@ -257,7 +257,7 @@ public class DynamicDockerProvisioningTest {
@Test(expected = OutOfCapacityException.class)
public void allocation_should_fail_when_host_is_not_active() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")), flavorsConfig());
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).flavorsConfig(flavorsConfig()).build();
tester.makeProvisionedNodes(3, "host-small", NodeType.host, 32);
deployZoneApp(tester);
@@ -268,7 +268,7 @@ public class DynamicDockerProvisioningTest {
@Test
public void provision_dual_stack_containers() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")), flavorsConfig());
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).flavorsConfig(flavorsConfig()).build();
tester.makeReadyNodes(2, "host-large", NodeType.host, 10, true);
deployZoneApp(tester);
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java
index 73b5f5e37e0..3bbb19a5917 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java
@@ -8,14 +8,12 @@ import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.HostName;
import com.yahoo.config.provision.HostSpec;
import com.yahoo.config.provision.RotationName;
-import com.yahoo.config.provision.Zone;
import com.yahoo.transaction.NestedTransaction;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.flag.FlagId;
import com.yahoo.vespa.hosted.provision.lb.LoadBalancer;
import com.yahoo.vespa.hosted.provision.lb.Real;
import com.yahoo.vespa.hosted.provision.node.Agent;
-import org.junit.Before;
import org.junit.Test;
import java.util.Collections;
@@ -36,12 +34,7 @@ public class LoadBalancerProvisionerTest {
private final ApplicationId app1 = ApplicationId.from("tenant1", "application1", "default");
private final ApplicationId app2 = ApplicationId.from("tenant2", "application2", "default");
- private ProvisioningTester tester;
-
- @Before
- public void before() {
- tester = new ProvisioningTester(Zone.defaultZone());
- }
+ private ProvisioningTester tester = new ProvisioningTester.Builder().build();
@Test
public void provision_load_balancer() {
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java
index e7ce09f94f2..aca3c884ffc 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/MultigroupProvisioningTest.java
@@ -35,7 +35,7 @@ public class MultigroupProvisioningTest {
@Test
public void test_provisioning_of_multiple_groups() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
ApplicationId application1 = tester.makeApplicationId();
@@ -67,7 +67,7 @@ public class MultigroupProvisioningTest {
*/
@Test @Ignore
public void test_provisioning_of_groups_with_asymmetry() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
ApplicationId application1 = tester.makeApplicationId();
@@ -80,7 +80,7 @@ public class MultigroupProvisioningTest {
@Test
public void test_provisioning_of_multiple_groups_after_flavor_migration() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
ApplicationId application1 = tester.makeApplicationId();
@@ -94,7 +94,7 @@ public class MultigroupProvisioningTest {
@Test
public void test_one_node_and_group_to_two() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.perf, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.perf, RegionName.from("us-east"))).build();
ApplicationId application1 = tester.makeApplicationId();
@@ -106,7 +106,7 @@ public class MultigroupProvisioningTest {
@Test
public void test_one_node_and_group_to_two_with_flavor_migration() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.perf, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.perf, RegionName.from("us-east"))).build();
ApplicationId application1 = tester.makeApplicationId();
@@ -119,7 +119,7 @@ public class MultigroupProvisioningTest {
@Test
public void test_provisioning_of_multiple_groups_after_flavor_migration_and_exiration() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
ApplicationId application1 = tester.makeApplicationId();
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java
index ef7a2b51108..d043d8b406c 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeTypeProvisioningTest.java
@@ -5,11 +5,8 @@ import com.yahoo.component.Version;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.Capacity;
import com.yahoo.config.provision.ClusterSpec;
-import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.HostSpec;
import com.yahoo.config.provision.NodeType;
-import com.yahoo.config.provision.RegionName;
-import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.maintenance.JobControl;
import com.yahoo.vespa.hosted.provision.maintenance.RetiredExpirer;
@@ -35,7 +32,7 @@ import static org.junit.Assert.assertTrue;
*/
public class NodeTypeProvisioningTest {
- private final ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ private final ProvisioningTester tester = new ProvisioningTester.Builder().build();
private final ApplicationId application = tester.makeApplicationId(); // application using proxy nodes
private final Capacity capacity = Capacity.fromRequiredNodeType(NodeType.proxy);
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
index 88922094ccc..0eca5e25d85 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
@@ -61,7 +61,7 @@ public class ProvisioningTest {
@Test
public void application_deployment_constant_application_size() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
ApplicationId application1 = tester.makeApplicationId();
ApplicationId application2 = tester.makeApplicationId();
@@ -142,7 +142,7 @@ public class ProvisioningTest {
@Test
public void nodeVersionIsReturnedIfSet() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.dev, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build();
ApplicationId application1 = tester.makeApplicationId();
@@ -167,7 +167,7 @@ public class ProvisioningTest {
@Test
public void application_deployment_variable_application_size() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
ApplicationId application1 = tester.makeApplicationId();
@@ -234,7 +234,7 @@ public class ProvisioningTest {
@Test
public void application_deployment_multiple_flavors() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
ApplicationId application1 = tester.makeApplicationId();
@@ -265,7 +265,7 @@ public class ProvisioningTest {
@Ignore
@Test
public void application_deployment_with_inplace_downsize() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
ApplicationId application1 = tester.makeApplicationId();
@@ -294,8 +294,8 @@ public class ProvisioningTest {
config.defaultFlavor("not-used");
config.defaultContainerFlavor("small");
config.defaultContentFlavor("large");
- ProvisioningTester tester = new ProvisioningTester(new Zone(new ConfigserverConfig(config),
- new NodeFlavors(new FlavorsConfig(new FlavorsConfig.Builder()))));
+ ProvisioningTester tester = new ProvisioningTester.Builder()
+ .zone(new Zone(new ConfigserverConfig(config), new NodeFlavors(new FlavorsConfig.Builder().build()))).build();
ApplicationId application1 = tester.makeApplicationId();
@@ -313,7 +313,7 @@ public class ProvisioningTest {
@Test
public void application_deployment_multiple_flavors_with_replacement() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
ApplicationId application1 = tester.makeApplicationId();
@@ -356,7 +356,7 @@ public class ProvisioningTest {
@Test
public void application_deployment_above_then_at_capacity_limit() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
ApplicationId application1 = tester.makeApplicationId();
@@ -381,7 +381,7 @@ public class ProvisioningTest {
@Test
public void dev_deployment_size() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.dev, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build();
ApplicationId application = tester.makeApplicationId();
tester.makeReadyNodes(4, "default");
@@ -392,7 +392,7 @@ public class ProvisioningTest {
@Test
public void deploy_specific_vespa_version() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.dev, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build();
ApplicationId application = tester.makeApplicationId();
tester.makeReadyNodes(4, "default");
@@ -403,7 +403,7 @@ public class ProvisioningTest {
@Test
public void test_deployment_size() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.test, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.test, RegionName.from("us-east"))).build();
ApplicationId application = tester.makeApplicationId();
tester.makeReadyNodes(4, "default");
@@ -414,7 +414,7 @@ public class ProvisioningTest {
@Test(expected = IllegalArgumentException.class)
public void prod_deployment_requires_redundancy() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
ApplicationId application = tester.makeApplicationId();
tester.makeReadyNodes(10, "default");
@@ -424,7 +424,7 @@ public class ProvisioningTest {
/** Dev always uses the zone default flavor */
@Test
public void dev_deployment_flavor() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.dev, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build();
ApplicationId application = tester.makeApplicationId();
tester.makeReadyNodes(4, "default");
@@ -436,7 +436,7 @@ public class ProvisioningTest {
/** Test always uses the zone default flavor */
@Test
public void test_deployment_flavor() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.test, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.test, RegionName.from("us-east"))).build();
ApplicationId application = tester.makeApplicationId();
tester.makeReadyNodes(4, "default");
@@ -447,7 +447,7 @@ public class ProvisioningTest {
@Test
public void staging_deployment_size() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.staging, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.staging, RegionName.from("us-east"))).build();
ApplicationId application = tester.makeApplicationId();
tester.makeReadyNodes(14, "default");
@@ -458,7 +458,7 @@ public class ProvisioningTest {
@Test
public void activate_after_reservation_timeout() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
tester.makeReadyNodes(10, "default");
ApplicationId application = tester.makeApplicationId();
@@ -480,7 +480,7 @@ public class ProvisioningTest {
@Test
public void out_of_capacity() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
tester.makeReadyNodes(9, "default"); // need 2+2+3+3=10
ApplicationId application = tester.makeApplicationId();
@@ -495,7 +495,7 @@ public class ProvisioningTest {
@Test
public void out_of_capacity_but_cannot_fail() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
tester.makeReadyNodes(4, "default");
ApplicationId application = tester.makeApplicationId();
ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content,
@@ -508,7 +508,7 @@ public class ProvisioningTest {
@Test
public void out_of_desired_flavor() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
tester.makeReadyNodes(10, "small"); // need 2+2+3+3=10
tester.makeReadyNodes( 9, "large"); // need 2+2+3+3=10
@@ -533,8 +533,8 @@ public class ProvisioningTest {
Flavor.Type.BARE_METAL).cost(2);
b.addReplaces(flavorToRetire, newDefault);
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")),
- b.build());
+ ProvisioningTester tester = new ProvisioningTester.Builder()
+ .zone(new Zone(Environment.prod, RegionName.from("us-east"))).flavorsConfig(b.build()).build();
ApplicationId application = tester.makeApplicationId();
try {
@@ -548,7 +548,7 @@ public class ProvisioningTest {
@Test
public void out_of_capacity_all_nodes_want_to_retire() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
ApplicationId application = tester.makeApplicationId();
// Flag all nodes for retirement
@@ -565,7 +565,7 @@ public class ProvisioningTest {
@Test
public void nonexisting_flavor() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
ApplicationId application = tester.makeApplicationId();
try {
@@ -579,7 +579,7 @@ public class ProvisioningTest {
@Test
public void highest_node_indexes_are_retired_first() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
ApplicationId application1 = tester.makeApplicationId();
@@ -630,10 +630,10 @@ public class ProvisioningTest {
// Deploy with flavor that will eventually be retired
{
FlavorConfigBuilder b = new FlavorConfigBuilder();
- b.addFlavor("default", 1., 1., 10, Flavor.Type.BARE_METAL).cost(2);
+ b.addFlavor(flavorToRetire, 1., 1., 10, Flavor.Type.BARE_METAL).cost(2);
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")),
- b.build(), curator, nameResolver);
+ ProvisioningTester tester = new ProvisioningTester.Builder()
+ .flavorsConfig(b.build()).curator(curator).nameResolver(nameResolver).build();
tester.makeReadyNodes(4, flavorToRetire);
SystemState state = prepare(application, 2, 0, 2, 0,
flavorToRetire, tester);
@@ -649,8 +649,8 @@ public class ProvisioningTest {
Flavor.Type.BARE_METAL).cost(2);
b.addReplaces(flavorToRetire, newDefault);
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")),
- b.build(), curator, nameResolver);
+ ProvisioningTester tester = new ProvisioningTester.Builder()
+ .flavorsConfig(b.build()).curator(curator).nameResolver(nameResolver).build();
// Add nodes with "new-default" flavor
tester.makeReadyNodes(4, replacementFlavor);
@@ -678,8 +678,8 @@ public class ProvisioningTest {
Flavor.Type.BARE_METAL).cost(2);
b.addReplaces(flavorToRetire, newDefault);
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")),
- b.build());
+ ProvisioningTester tester = new ProvisioningTester.Builder()
+ .zone(new Zone(Environment.prod, RegionName.from("us-east"))).flavorsConfig(b.build()).build();
ApplicationId application = tester.makeApplicationId();
// Add nodes
@@ -698,7 +698,7 @@ public class ProvisioningTest {
@Test
public void application_deployment_retires_nodes_that_want_to_retire() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
ApplicationId application = tester.makeApplicationId();
tester.makeReadyNodes(10, "default");
@@ -727,7 +727,7 @@ public class ProvisioningTest {
@Test
public void application_deployment_extends_existing_reservations_on_deploy() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
ApplicationId application = tester.makeApplicationId();
tester.makeReadyNodes(2, "default");
@@ -771,7 +771,7 @@ public class ProvisioningTest {
@Test
public void required_capacity_respects_prod_redundancy_requirement() {
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
+ ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
ApplicationId application = tester.makeApplicationId();
try {
prepare(application, 1, 0, 1, 0, true, "default", Version.fromString("6.42"), tester);
@@ -787,7 +787,8 @@ public class ProvisioningTest {
FlavorsConfig.Flavor.Builder largeVariantVariant = b.addFlavor("large-variant-variant", 4., 9., 101, Flavor.Type.BARE_METAL).cost(11);
b.addReplaces("large-variant", largeVariantVariant);
- ProvisioningTester tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")), b.build());
+ ProvisioningTester tester = new ProvisioningTester.Builder()
+ .zone(new Zone(Environment.prod, RegionName.from("us-east"))).flavorsConfig(b.build()).build();
tester.makeReadyNodes(6, "large"); //cost = 10
tester.makeReadyNodes(6, "large-variant"); //cost = 9
tester.makeReadyNodes(6, "large-variant-variant"); //cost = 11
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
index 8fdaf6c9eaa..42ae95df2c0 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
@@ -31,6 +31,7 @@ import com.yahoo.vespa.hosted.provision.node.filter.NodeHostFilter;
import com.yahoo.vespa.hosted.provision.persistence.NameResolver;
import com.yahoo.vespa.hosted.provision.testutils.MockNameResolver;
import com.yahoo.vespa.hosted.provision.testutils.MockProvisionServiceProvider;
+import com.yahoo.vespa.orchestrator.OrchestrationException;
import com.yahoo.vespa.orchestrator.Orchestrator;
import com.yahoo.vespa.service.duper.ConfigServerApplication;
@@ -75,33 +76,21 @@ public class ProvisioningTester {
private int nextHost = 0;
private int nextIP = 0;
- public ProvisioningTester(Zone zone) {
- this(zone, createConfig());
- }
-
- public ProvisioningTester(Zone zone, FlavorsConfig config) {
- this(zone, config, new MockCurator(), new MockNameResolver().mockAnyLookup());
- }
-
- public ProvisioningTester(Zone zone, FlavorsConfig config, Curator curator, NameResolver nameResolver) {
- try {
- this.nodeFlavors = new NodeFlavors(config);
- this.clock = new ManualClock();
- this.curator = curator;
- this.nodeRepository = new NodeRepository(nodeFlavors, curator, clock, zone, nameResolver,
- new DockerImage("docker-registry.domain.tld:8080/dist/vespa"), true);
- this.orchestrator = mock(Orchestrator.class);
- doThrow(new RuntimeException()).when(orchestrator).acquirePermissionToRemove(any());
- this.loadBalancerService = new LoadBalancerServiceMock();
- ProvisionServiceProvider provisionServiceProvider = new MockProvisionServiceProvider(
- loadBalancerService, null);
- this.provisioner = new NodeRepositoryProvisioner(nodeRepository, nodeFlavors, zone, provisionServiceProvider);
- this.capacityPolicies = new CapacityPolicies(zone, nodeFlavors);
- this.provisionLogger = new NullProvisionLogger();
- }
- catch (Exception e) {
- throw new RuntimeException(e);
- }
+ public ProvisioningTester(
+ Curator curator, NodeFlavors nodeFlavors, Zone zone, NameResolver nameResolver,
+ Orchestrator orchestrator, HostProvisioner hostProvisioner,
+ LoadBalancerServiceMock loadBalancerService) {
+ this.curator = curator;
+ this.nodeFlavors = nodeFlavors;
+ this.clock = new ManualClock();
+ this.nodeRepository = new NodeRepository(nodeFlavors, curator, clock, zone, nameResolver,
+ new DockerImage("docker-registry.domain.tld:8080/dist/vespa"), true);
+ this.orchestrator = orchestrator;
+ ProvisionServiceProvider provisionServiceProvider = new MockProvisionServiceProvider(loadBalancerService, hostProvisioner);
+ this.provisioner = new NodeRepositoryProvisioner(nodeRepository, nodeFlavors, zone, provisionServiceProvider);
+ this.capacityPolicies = new CapacityPolicies(zone, nodeFlavors);
+ this.provisionLogger = new NullProvisionLogger();
+ this.loadBalancerService = loadBalancerService;
}
public static FlavorsConfig createConfig() {
@@ -393,12 +382,75 @@ public class ProvisioningTester {
return nodeRepository.getNode(hostname).map(Node::flavor).orElseThrow(() -> new RuntimeException("No flavor for host " + hostname));
}
- private static class NullProvisionLogger implements ProvisionLogger {
+ public static final class Builder {
+ private Curator curator;
+ private FlavorsConfig flavorsConfig;
+ private Zone zone;
+ private NameResolver nameResolver;
+ private Orchestrator orchestrator;
+ private HostProvisioner hostProvisioner;
+ private LoadBalancerServiceMock loadBalancerService;
+
+ public Builder curator(Curator curator) {
+ this.curator = curator;
+ return this;
+ }
+
+ public Builder flavorsConfig(FlavorsConfig flavorsConfig) {
+ this.flavorsConfig = flavorsConfig;
+ return this;
+ }
- @Override
- public void log(Level level, String message) {
+ public Builder zone(Zone zone) {
+ this.zone = zone;
+ return this;
}
+ public Builder nameResolver(NameResolver nameResolver) {
+ this.nameResolver = nameResolver;
+ return this;
+ }
+
+ public Builder orchestrator(Orchestrator orchestrator) {
+ this.orchestrator = orchestrator;
+ return this;
+ }
+
+ public Builder hostProvisioner(HostProvisioner hostProvisioner) {
+ this.hostProvisioner = hostProvisioner;
+ return this;
+ }
+
+ public Builder loadBalancerService(LoadBalancerServiceMock loadBalancerService) {
+ this.loadBalancerService = loadBalancerService;
+ return this;
+ }
+
+ public ProvisioningTester build() {
+ Orchestrator orchestrator = Optional.ofNullable(this.orchestrator)
+ .orElseGet(() -> {
+ Orchestrator orch = mock(Orchestrator.class);
+ try {
+ doThrow(new RuntimeException()).when(orch).acquirePermissionToRemove(any());
+ } catch (OrchestrationException e) {
+ throw new RuntimeException(e);
+ }
+ return orch;
+ });
+
+ return new ProvisioningTester(
+ Optional.ofNullable(curator).orElseGet(MockCurator::new),
+ new NodeFlavors(Optional.ofNullable(flavorsConfig).orElseGet(ProvisioningTester::createConfig)),
+ Optional.ofNullable(zone).orElseGet(Zone::defaultZone),
+ Optional.ofNullable(nameResolver).orElseGet(() -> new MockNameResolver().mockAnyLookup()),
+ orchestrator,
+ Optional.ofNullable(hostProvisioner).orElseGet(() -> null),
+ Optional.ofNullable(loadBalancerService).orElseGet(LoadBalancerServiceMock::new));
+ }
+ }
+
+ private static class NullProvisionLogger implements ProvisionLogger {
+ @Override public void log(Level level, String message) { }
}
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java
index 8e9572544a0..0d9ce179d5c 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/VirtualNodeProvisioningTest.java
@@ -11,7 +11,6 @@ import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.hosted.provision.Node;
-import org.junit.Before;
import org.junit.Test;
import java.util.ArrayList;
@@ -39,14 +38,8 @@ public class VirtualNodeProvisioningTest {
private static final ClusterSpec contentClusterSpec = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("myContent"), Version.fromString("6.42"), false, Collections.emptySet());
private static final ClusterSpec containerClusterSpec = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("myContainer"), Version.fromString("6.42"), false, Collections.emptySet());
- private ProvisioningTester tester;
- private ApplicationId applicationId;
-
- @Before
- public void setup() {
- tester = new ProvisioningTester(new Zone(Environment.prod, RegionName.from("us-east")));
- applicationId = tester.makeApplicationId();
- }
+ private ProvisioningTester tester = new ProvisioningTester.Builder().build();
+ private ApplicationId applicationId = tester.makeApplicationId();
@Test
public void distinct_parent_host_for_each_node_in_a_cluster() {
@@ -88,7 +81,7 @@ public class VirtualNodeProvisioningTest {
// Allowed to use same parent host for several nodes in same cluster in dev
{
- tester = new ProvisioningTester(new Zone(Environment.dev, RegionName.from("us-east")));
+ tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).build();
tester.makeReadyVirtualDockerNodes(4, "default", "parentHost1");
List<HostSpec> containerHosts = prepare(containerClusterSpec, containerNodeCount, groups);
@@ -101,7 +94,7 @@ public class VirtualNodeProvisioningTest {
// Allowed to use same parent host for several nodes in same cluster in CD (even if prod env)
{
- tester = new ProvisioningTester(new Zone(SystemName.cd, Environment.prod, RegionName.from("us-east")));
+ tester = new ProvisioningTester.Builder().zone(new Zone(SystemName.cd, Environment.prod, RegionName.from("us-east"))).build();
tester.makeReadyVirtualDockerNodes(4, flavor, "parentHost1");
List<HostSpec> containerHosts = prepare(containerClusterSpec, containerNodeCount, groups);