From 4a36a34d986e9223f7d530efbd12c34026570700 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Tue, 21 May 2019 18:39:21 +0200 Subject: Add some tests and nonfunctional cleanup --- .../provisioning/NodeRepositoryProvisioner.java | 6 +++--- .../provisioning/DynamicDockerAllocationTest.java | 23 +++++++++++++++++++++- .../provision/provisioning/ProvisioningTester.java | 8 ++++---- 3 files changed, 29 insertions(+), 8 deletions(-) (limited to 'node-repository') diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java index 5a06eb32505..242aeefd340 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java @@ -96,11 +96,11 @@ public class NodeRepositoryProvisioner implements Provisioner { if (zone.environment().isManuallyDeployed() && nodeCount < requestedCapacity.nodeCount()) logger.log(Level.INFO, "Requested " + requestedCapacity.nodeCount() + " nodes for " + cluster + ", downscaling to " + nodeCount + " nodes in " + zone.environment()); - NodeResources flavor = capacityPolicies.decideNodeResources(requestedCapacity, cluster); - log.log(LogLevel.DEBUG, () -> "Decided flavor for requested tenant nodes: " + flavor); + NodeResources resources = capacityPolicies.decideNodeResources(requestedCapacity, cluster); + log.log(LogLevel.DEBUG, () -> "Decided node resources for requested tenant nodes: " + resources); boolean exclusive = capacityPolicies.decideExclusivity(cluster.isExclusive()); effectiveGroups = wantedGroups > nodeCount ? nodeCount : wantedGroups; // cannot have more groups than nodes - requestedNodes = NodeSpec.from(nodeCount, flavor, exclusive, requestedCapacity.canFail()); + requestedNodes = NodeSpec.from(nodeCount, resources, exclusive, requestedCapacity.canFail()); } else { requestedNodes = NodeSpec.from(requestedCapacity.type()); diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java index 4141161c20e..148d474e080 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicDockerAllocationTest.java @@ -14,6 +14,7 @@ import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.OutOfCapacityException; import com.yahoo.config.provision.RegionName; +import com.yahoo.config.provision.SystemName; import com.yahoo.config.provision.Zone; import com.yahoo.config.provisioning.FlavorsConfig; import com.yahoo.transaction.NestedTransaction; @@ -251,7 +252,27 @@ public class DynamicDockerAllocationTest { tester.activate(application1, ImmutableSet.copyOf(hosts)); List initialSpareCapacity = findSpareCapacity(tester); - assertThat(initialSpareCapacity.size(), is(0)); + assertEquals(0, initialSpareCapacity.size()); + } + + @Test + public void cd_uses_slow_disk_nodes_for_docker_hosts() { + ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(SystemName.cd, Environment.test, RegionName.from("us-east"))).flavorsConfig(flavorsConfig()).build(); + tester.makeReadyNodes(4, new Flavor(new NodeResources(1, 2, 3, NodeResources.DiskSpeed.slow)), NodeType.host, 10, true); + deployZoneApp(tester); + ApplicationId application1 = tester.makeApplicationId(); + List hosts = tester.prepare(application1, clusterSpec("myContent.t1.a1"), 3, 1, new NodeResources(1, 1, 1)); + tester.activate(application1, ImmutableSet.copyOf(hosts)); + } + + @Test + public void cd_uses_slow_disk_nodes_for_docker_hosts_with_default_flavor() { + ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(SystemName.cd, Environment.test, RegionName.from("us-east"))).flavorsConfig(flavorsConfig()).build(); + tester.makeReadyNodes(4, new Flavor(new NodeResources(1, 2, 3, NodeResources.DiskSpeed.slow)), NodeType.host, 10, true); + deployZoneApp(tester); + ApplicationId application1 = tester.makeApplicationId(); + List hosts = tester.prepare(application1, clusterSpec("myContent.t1.a1"), Capacity.fromCount(3, Optional.empty(), false, true), 1); + tester.activate(application1, ImmutableSet.copyOf(hosts)); } @Test(expected = OutOfCapacityException.class) 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 d63da52eb49..e1ba3291bd3 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 @@ -130,12 +130,12 @@ public class ProvisioningTester { public void patchNode(Node node) { nodeRepository.write(node, () -> {}); } - public List prepare(ApplicationId application, ClusterSpec cluster, int nodeCount, int groups, NodeResources flavor) { - return prepare(application, cluster, nodeCount, groups, false, flavor); + public List prepare(ApplicationId application, ClusterSpec cluster, int nodeCount, int groups, NodeResources resources) { + return prepare(application, cluster, nodeCount, groups, false, resources); } - public List prepare(ApplicationId application, ClusterSpec cluster, int nodeCount, int groups, boolean required, NodeResources flavor) { - return prepare(application, cluster, Capacity.fromCount(nodeCount, Optional.ofNullable(flavor), required, true), groups); + public List prepare(ApplicationId application, ClusterSpec cluster, int nodeCount, int groups, boolean required, NodeResources resources) { + return prepare(application, cluster, Capacity.fromCount(nodeCount, Optional.ofNullable(resources), required, true), groups); } public List prepare(ApplicationId application, ClusterSpec cluster, Capacity capacity, int groups) { -- cgit v1.2.3