aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository/src
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2021-02-24 17:03:00 +0100
committerJon Marius Venstad <venstad@gmail.com>2021-02-24 17:03:00 +0100
commit4c12b3aa80e7a08590727adcf11718b45821cb3b (patch)
tree1fb48d12cd48d779f1857aaf9ce4fda3fb14decd /node-repository/src
parent28bc4276f6e6ba8f4ed1f081d2cf902b33c521e3 (diff)
Skip redundant filter, and actually add test
Diffstat (limited to 'node-repository/src')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeIncidesTest.java72
2 files changed, 73 insertions, 1 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java
index e36554b3600..2eee3c3f01c 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/Preparer.java
@@ -61,7 +61,7 @@ class Preparer {
private List<Node> prepareNodes(ApplicationId application, ClusterSpec cluster, NodeSpec requestedNodes, int wantedGroups) {
List<Node> surplusNodes = findNodesInRemovableGroups(application, cluster, wantedGroups);
- List<Integer> usedIndices = nodeRepository.nodes().list(Node.State.allocatedStates().toArray(new Node.State[0]))
+ List<Integer> usedIndices = nodeRepository.nodes().list()
.owner(application)
.cluster(cluster.id())
.mapToList(node -> node.allocation().get().membership().index());
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeIncidesTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeIncidesTest.java
new file mode 100644
index 00000000000..eee9c2ffc01
--- /dev/null
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodeIncidesTest.java
@@ -0,0 +1,72 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.hosted.provision.provisioning;
+
+import org.junit.Test;
+
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author jonmv
+ */
+public class NodeIncidesTest {
+
+ @Test
+ public void testNonCompactIndices() {
+ NodeIndices indices = new NodeIndices(List.of(1, 3, 4), false);
+ assertEquals(5, indices.probeNext());
+ assertEquals(6, indices.probeNext());
+
+ indices.resetProbe();
+ assertEquals(5, indices.probeNext());
+ assertEquals(6, indices.probeNext());
+
+ indices.commitProbe();
+ assertEquals(7, indices.probeNext());
+ assertEquals(8, indices.probeNext());
+
+ indices.resetProbe();
+ assertEquals(7, indices.next());
+ assertEquals(8, indices.next());
+
+ assertEquals(9, indices.probeNext());
+ try {
+ indices.next();
+ }
+ catch (IllegalStateException e) {
+ assertEquals("Must commit ongoing probe before calling 'next'", e.getMessage());
+ }
+ }
+
+
+ @Test
+ public void testCompactIndices() {
+ NodeIndices indices = new NodeIndices(List.of(1, 3, 4), true);
+ assertEquals(0, indices.probeNext());
+ assertEquals(2, indices.probeNext());
+ assertEquals(5, indices.probeNext());
+ assertEquals(6, indices.probeNext());
+
+ indices.resetProbe();
+ assertEquals(0, indices.probeNext());
+ assertEquals(2, indices.probeNext());
+
+ indices.commitProbe();
+ assertEquals(5, indices.probeNext());
+ assertEquals(6, indices.probeNext());
+
+ indices.resetProbe();
+ assertEquals(5, indices.next());
+ assertEquals(6, indices.next());
+
+ assertEquals(7, indices.probeNext());
+ try {
+ indices.next();
+ }
+ catch (IllegalStateException e) {
+ assertEquals("Must commit ongoing probe before calling 'next'", e.getMessage());
+ }
+ }
+
+}