diff options
author | Jon Bratseth <bratseth@gmail.com> | 2022-11-28 22:58:01 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2022-11-29 17:02:20 +0100 |
commit | 99d87eb3689a0d606bd2aef18ef126e377192dc2 (patch) | |
tree | 8487b5d45a65499335db5c2015ce40ec99c4d650 /node-repository/src/main/java/com | |
parent | 7d4c85bd682642d0abe0de89c3b5a589cfa9e667 (diff) |
More realistic tests
Diffstat (limited to 'node-repository/src/main/java/com')
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)); } |