aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository/src/main/java/com/yahoo/vespa/hosted/provision
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-11-28 22:58:01 +0100
committerJon Bratseth <bratseth@gmail.com>2022-11-29 17:02:20 +0100
commit99d87eb3689a0d606bd2aef18ef126e377192dc2 (patch)
tree8487b5d45a65499335db5c2015ce40ec99c4d650 /node-repository/src/main/java/com/yahoo/vespa/hosted/provision
parent7d4c85bd682642d0abe0de89c3b5a589cfa9e667 (diff)
More realistic tests
Diffstat (limited to 'node-repository/src/main/java/com/yahoo/vespa/hosted/provision')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Address.java1
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/GroupPreparer.java6
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeAllocation.java10
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java11
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java2
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNameResolver.java6
6 files changed, 21 insertions, 15 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Address.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Address.java
index fd9771103de..532e6747d9a 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Address.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Address.java
@@ -9,6 +9,7 @@ import java.util.Objects;
* @author hakon
*/
public class Address {
+
private final String hostname;
public Address(String hostname) {
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 ad2973ff435..f0848f5caeb 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
@@ -74,9 +74,9 @@ public class GroupPreparer {
public PrepareResult prepare(ApplicationId application, ClusterSpec cluster, NodeSpec requestedNodes,
List<Node> surplusActiveNodes, NodeIndices indices, int wantedGroups,
NodesAndHosts<LockedNodeList> allNodesAndHosts) {
- log.log(Level.FINE, "Preparing " + cluster.type().name() + " " + cluster.id() + " with requested resources " + requestedNodes.resources().orElse(NodeResources.unspecified()));
- // Try preparing in memory without global unallocated lock. Most of the time there should be no changes and we
- // can return nodes previously allocated.
+ log.log(Level.FINE, () -> "Preparing " + cluster.type().name() + " " + cluster.id() + " with requested resources " + requestedNodes.resources().orElse(NodeResources.unspecified()));
+ // Try preparing in memory without global unallocated lock. Most of the time there should be no changes,
+ // and we can return nodes previously allocated.
NodeAllocation probeAllocation = prepareAllocation(application, cluster, requestedNodes, surplusActiveNodes,
indices::probeNext, wantedGroups, allNodesAndHosts);
if (probeAllocation.fulfilledAndNoChanges()) {
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 178b42096e6..21efd1b014c 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
@@ -34,8 +34,7 @@ import java.util.logging.Logger;
import java.util.stream.Collectors;
/**
- * Used to manage a list of nodes during the node reservation process
- * in order to fulfill the nodespec.
+ * Used to manage a list of nodes during the node reservation process to fulfill the nodespec.
*
* @author bratseth
*/
@@ -316,7 +315,7 @@ class NodeAllocation {
* Returns {@link HostDeficit} describing the host deficit for the given {@link NodeSpec}.
*
* @return empty if the requested spec is already fulfilled. Otherwise returns {@link HostDeficit} containing the
- * flavor and host count required to cover the deficit.
+ * flavor and host count required to cover the deficit.
*/
Optional<HostDeficit> hostDeficit() {
if (nodeType().isHost()) {
@@ -521,6 +520,11 @@ class NodeAllocation {
return count;
}
+ @Override
+ public String toString() {
+ return "deficit of " + count + " nodes with " + resources;
+ }
+
}
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java
index fe4eb5d68c9..c1d65e0df4e 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java
@@ -146,12 +146,13 @@ public class NodePrioritizer {
if (spareHosts.contains(host) && !canAllocateToSpareHosts) continue;
if ( ! capacity.hasCapacity(host, requestedNodes.resources().get())) continue;
if ( ! allNodesAndHosts.childrenOf(host).owner(application).cluster(clusterSpec.id()).isEmpty()) continue;
+
candidates.add(NodeCandidate.createNewChild(requestedNodes.resources().get(),
- capacity.availableCapacityOf(host),
- host,
- spareHosts.contains(host),
- allNodesAndHosts.nodes(),
- nameResolver));
+ capacity.availableCapacityOf(host),
+ host,
+ spareHosts.contains(host),
+ allNodesAndHosts.nodes(),
+ nameResolver));
}
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java
index 5a8c5221c47..e190f1c3bd2 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockHostProvisioner.java
@@ -190,7 +190,7 @@ public class MockHostProvisioner implements HostProvisioner {
.collect(Collectors.toList());
}
- private Node withIpAssigned(Node node) {
+ public Node withIpAssigned(Node node) {
if (!node.type().isHost()) {
return node.with(node.ipConfig().withPrimary(nameResolver.resolveAll(node.hostname())));
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNameResolver.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNameResolver.java
index 0764d4527d5..dbc74f32f6b 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNameResolver.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNameResolver.java
@@ -64,9 +64,9 @@ public class MockNameResolver implements NameResolver {
return records.get(name);
}
if (mockAnyLookup) {
- Set<String> ipAddresses = Set.of(randomIpAddress());
- records.put(name, ipAddresses);
- return ipAddresses;
+ records.computeIfAbsent(name, (k) -> new HashSet<>())
+ .add(randomIpAddress());
+ return records.get(name);
}
throw new RuntimeException(new UnknownHostException("Could not resolve: " + name));
}