aboutsummaryrefslogtreecommitdiffstats
path: root/clustercontroller-core/src/test/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'clustercontroller-core/src/test/java/com')
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFixture.java8
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseHandlerTest.java62
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseTest.java4
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyCommunicator.java6
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAutoTakedownTest.java13
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MasterElectionTest.java32
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceExhaustionCalculatorTest.java24
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceUsageStatsTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/SlobrokTest.java4
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandlerTest.java13
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java4
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/SystemStateBroadcasterTest.java20
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ZooKeeperDatabaseTest.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterControllerMock.java22
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStateRequestTest.java4
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/WaitTask.java2
17 files changed, 136 insertions, 88 deletions
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFixture.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFixture.java
index 4ce32484098..f8d41405e85 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFixture.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFixture.java
@@ -8,7 +8,7 @@ import com.yahoo.vdslib.state.Node;
import com.yahoo.vdslib.state.NodeState;
import com.yahoo.vdslib.state.NodeType;
import com.yahoo.vdslib.state.State;
-import com.yahoo.vespa.clustercontroller.core.listeners.NodeStateOrHostInfoChangeHandler;
+import com.yahoo.vespa.clustercontroller.core.listeners.NodeListener;
import java.util.Collection;
import java.util.HashSet;
@@ -57,7 +57,7 @@ public class ClusterFixture {
private void doReportNodeState(final Node node, final NodeState nodeState) {
final ClusterState stateBefore = rawGeneratedClusterState();
- NodeStateOrHostInfoChangeHandler handler = mock(NodeStateOrHostInfoChangeHandler.class);
+ NodeListener handler = mock(NodeListener.class);
NodeInfo nodeInfo = cluster.getNodeInfo(node);
nodeStateChangeHandler.handleNewReportedNodeState(stateBefore, nodeInfo, nodeState, handler);
@@ -142,7 +142,7 @@ public class ClusterFixture {
}
public ClusterFixture assignDummyRpcAddresses() {
- cluster.getNodeInfo().forEach(ni -> {
+ cluster.getNodeInfos().forEach(ni -> {
ni.setRpcAddress(String.format("tcp/%s.%d.local:0",
ni.isStorage() ? "storage" : "distributor",
ni.getNodeIndex()));
@@ -169,7 +169,7 @@ public class ClusterFixture {
Set<ConfiguredNode> configuredNodes = new HashSet<>(cluster.getConfiguredNodes().values());
configuredNodes.remove(new ConfiguredNode(nodeIndex, false));
configuredNodes.add(new ConfiguredNode(nodeIndex, true));
- cluster.setNodes(configuredNodes);
+ cluster.setNodes(configuredNodes, new NodeListener() {});
return this;
}
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseHandlerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseHandlerTest.java
index a621b0f565a..1f7b9293960 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseHandlerTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseHandlerTest.java
@@ -1,23 +1,42 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.core;
+import com.yahoo.vdslib.state.Node;
+import com.yahoo.vdslib.state.NodeState;
+import com.yahoo.vdslib.state.NodeType;
+import com.yahoo.vdslib.state.State;
import com.yahoo.vespa.clustercontroller.core.database.Database;
import com.yahoo.vespa.clustercontroller.core.database.DatabaseFactory;
import com.yahoo.vespa.clustercontroller.core.database.DatabaseHandler;
-import com.yahoo.vespa.clustercontroller.core.listeners.NodeAddedOrRemovedListener;
-import com.yahoo.vespa.clustercontroller.core.listeners.NodeStateOrHostInfoChangeHandler;
+import com.yahoo.vespa.clustercontroller.core.listeners.NodeListener;
+import com.yahoo.vespa.clustercontroller.core.listeners.SlobrokListener;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.MockitoAnnotations;
+
+import java.util.Map;
+import java.util.TreeMap;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
public class DatabaseHandlerTest {
+ private AutoCloseable openMock = null;
+
+ @Captor
+ ArgumentCaptor<TreeMap<Node, NodeState>> wantedStatesArgument;
+
static class Fixture {
final ClusterFixture clusterFixture = ClusterFixture.forFlatCluster(10);
final FleetController mockController = mock(FleetController.class);
@@ -52,12 +71,12 @@ public class DatabaseHandlerTest {
}
@Override
- public NodeAddedOrRemovedListener getNodeAddedOrRemovedListener() {
+ public SlobrokListener getNodeAddedOrRemovedListener() {
return null;
}
@Override
- public NodeStateOrHostInfoChangeHandler getNodeStateUpdateListener() {
+ public NodeListener getNodeStateUpdateListener() {
return null;
}
};
@@ -70,6 +89,16 @@ public class DatabaseHandlerTest {
}
}
+ @Before
+ public void setUp() {
+ openMock = MockitoAnnotations.openMocks(this);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ openMock.close();
+ }
+
@Test
public void can_store_latest_cluster_state_bundle() throws Exception {
Fixture f = new Fixture();
@@ -104,4 +133,29 @@ public class DatabaseHandlerTest {
assertEquals(ClusterStateBundle.empty(), retrievedBundle);
}
+ @Test
+ public void save_wanted_state_of_configured_nodes() throws Exception {
+ var fixture = new Fixture();
+ DatabaseHandler handler = fixture.createHandler();
+ DatabaseHandler.DatabaseContext databaseContext = fixture.createMockContext();
+
+ // The test fixture contains 10 nodes with indices 1-10. A wanted state for
+ // an existing node (5) should be preserved. Note that it is not possible to set a
+ // wanted state outside the existing nodes.
+ Node storageNode5 = Node.ofStorage(5);
+ NodeState maintenance = new NodeState(NodeType.STORAGE, State.MAINTENANCE);
+ databaseContext.getCluster().getNodeInfo(storageNode5).setWantedState(maintenance);
+ var expectedWantedStates = new TreeMap<>(Map.of(storageNode5, maintenance));
+
+ // Ensure database is connected to ZooKeeper
+ assertTrue(handler.doNextZooKeeperTask(databaseContext));
+
+ // Verify ZooKeeperDatabase::storeWantedStates is invoked once
+ verify(fixture.mockDatabase, times(0)).storeWantedStates(any());
+ assertTrue(handler.saveWantedStates(databaseContext));
+ verify(fixture.mockDatabase, times(1)).storeWantedStates(wantedStatesArgument.capture());
+
+ // Verify ZooKeeperDatabase::storeWantedStates only saves states for existing nodes
+ assertEquals(expectedWantedStates, wantedStatesArgument.getValue());
+ }
}
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseTest.java
index 37fe3e28a5d..2ff48e00d0f 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DatabaseTest.java
@@ -26,8 +26,6 @@ public class DatabaseTest extends FleetControllerTest {
private static final Logger log = Logger.getLogger(DatabaseTest.class.getName());
- // These tests work in isolation but causes other tests to hang
- @Ignore
@Test
public void testWantedStatesInZooKeeper() throws Exception {
startingTest("DatabaseTest::testWantedStatesInZooKeeper");
@@ -82,8 +80,6 @@ public class DatabaseTest extends FleetControllerTest {
assertWantedStates(wantedStates);
}
- // These tests work in isolation but causes other tests to hang
- @Ignore
@Test
public void testWantedStateOfUnknownNode() throws Exception {
startingTest("DatabaseTest::testWantedStatesOfUnknownNode");
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyCommunicator.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyCommunicator.java
index 3c232a7c52b..3127201a342 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyCommunicator.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyCommunicator.java
@@ -6,7 +6,7 @@ import com.yahoo.vdslib.state.ClusterState;
import com.yahoo.vdslib.state.Node;
import com.yahoo.vdslib.state.NodeState;
import com.yahoo.vdslib.state.State;
-import com.yahoo.vespa.clustercontroller.core.listeners.NodeAddedOrRemovedListener;
+import com.yahoo.vespa.clustercontroller.core.listeners.SlobrokListener;
import java.util.ArrayList;
import java.util.List;
@@ -133,14 +133,14 @@ public class DummyCommunicator implements Communicator, NodeLookup {
}
@Override
- public boolean updateCluster(ContentCluster cluster, NodeAddedOrRemovedListener listener) {
+ public boolean updateCluster(ContentCluster cluster, SlobrokListener listener) {
if (newNodes != null) {
List<Node> tmp = newNodes;
for (Node node : tmp)
cluster.clusterInfo().setRpcAddress(node, "foo");
- for (NodeInfo info : cluster.getNodeInfo()) {
+ for (NodeInfo info : cluster.getNodeInfos()) {
if (!tmp.contains(info.getNode())) {
info.markRpcAddressOutdated(timer);
listener.handleMissingNode(info);
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java
index c56b3bbdc69..a5eeb69e126 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java
@@ -84,7 +84,7 @@ public abstract class FleetControllerTest implements Waiter {
static {
LogSetup.initVespaLogging("fleetcontroller");
- timeoutS = 120;
+ timeoutS = 30;
timeoutMS = timeoutS * 1000;
}
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAutoTakedownTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAutoTakedownTest.java
index 254f863e9ea..1d4b2a73560 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAutoTakedownTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/GroupAutoTakedownTest.java
@@ -7,20 +7,19 @@ import com.yahoo.vdslib.state.NodeState;
import com.yahoo.vdslib.state.NodeType;
import com.yahoo.vdslib.state.State;
import com.yahoo.vespa.clustercontroller.core.database.DatabaseHandler;
-import com.yahoo.vespa.clustercontroller.core.listeners.NodeStateOrHostInfoChangeHandler;
-
-import static com.yahoo.vespa.clustercontroller.core.matchers.EventForNode.eventForNode;
-import static com.yahoo.vespa.clustercontroller.core.matchers.NodeEventWithDescription.nodeEventWithDescription;
+import com.yahoo.vespa.clustercontroller.core.listeners.NodeListener;
import org.junit.Test;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import static com.yahoo.vespa.clustercontroller.core.matchers.EventForNode.eventForNode;
+import static com.yahoo.vespa.clustercontroller.core.matchers.NodeEventWithDescription.nodeEventWithDescription;
+import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.AllOf.allOf;
import static org.hamcrest.core.IsCollectionContaining.hasItem;
import static org.junit.Assert.assertEquals;
-import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -179,7 +178,7 @@ public class GroupAutoTakedownTest {
// However, once grace period expires the group should be taken down.
fixture.timer.advanceTime(1001);
- NodeStateOrHostInfoChangeHandler changeListener = mock(NodeStateOrHostInfoChangeHandler.class);
+ NodeListener changeListener = mock(NodeListener.class);
fixture.nodeStateChangeHandler.watchTimers(
fixture.cluster, fixture.annotatedGeneratedClusterState().getClusterState(), changeListener);
@@ -253,7 +252,7 @@ public class GroupAutoTakedownTest {
nodes.add(new ConfiguredNode(5, true));
// TODO this should ideally also set the retired flag in the distribution
// config, but only the ConfiguredNodes are actually looked at currently.
- fixture.cluster.setNodes(nodes);
+ fixture.cluster.setNodes(nodes, new NodeListener() {});
assertEquals("distributor:6 storage:6 .4.s:d .5.s:r",
stateAfterStorageTransition(fixture, 5, State.UP));
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MasterElectionTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MasterElectionTest.java
index db86df88fc5..257bb54047c 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MasterElectionTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MasterElectionTest.java
@@ -12,7 +12,6 @@ import com.yahoo.vdslib.state.NodeState;
import com.yahoo.vdslib.state.NodeType;
import com.yahoo.vdslib.state.State;
import com.yahoo.vespa.clustercontroller.core.status.StatusHandler;
-import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestRule;
@@ -79,7 +78,6 @@ public class MasterElectionTest extends FleetControllerTest {
long maxTime = System.currentTimeMillis() + timeoutMS;
for (FleetController f : fleetControllers) {
while (f.hasZookeeperConnection()) {
- timer.advanceTime(1000);
try { Thread.sleep(1); } catch (InterruptedException e) { /* ignore */ }
if (System.currentTimeMillis() > maxTime)
throw new TimeoutException("Failed to notice zookeeper down within timeout of " + timeoutMS + " ms");
@@ -117,14 +115,12 @@ public class MasterElectionTest extends FleetControllerTest {
super.tearDown();
}
- /** Ignored for unknown reasons */
@Test
- @Ignore
public void testMasterElection() throws Exception {
startingTest("MasterElectionTest::testMasterElection");
log.log(Level.INFO, "STARTING TEST: MasterElectionTest::testMasterElection()");
FleetControllerOptions options = defaultOptions("mycluster");
- options.masterZooKeeperCooldownPeriod = 1;
+ options.masterZooKeeperCooldownPeriod = 100;
setUpFleetController(5, false, options);
waitForMaster(0);
log.log(Level.INFO, "SHUTTING DOWN FLEET CONTROLLER 0");
@@ -137,7 +133,7 @@ public class MasterElectionTest extends FleetControllerTest {
fleetControllers.get(2).shutdown();
// Too few for there to be a master at this point
- for (int i=0; i<fleetControllers.size(); ++i) {
+ for (int i = 0; i < fleetControllers.size(); ++i) {
if (fleetControllers.get(i).isRunning()) waitForCompleteCycle(i);
assertFalse("Fleet controller " + i, fleetControllers.get(i).isMaster());
}
@@ -163,7 +159,7 @@ public class MasterElectionTest extends FleetControllerTest {
fleetControllers.get(2).shutdown();
// Too few for there to be a master at this point
- for (int i=0; i<fleetControllers.size(); ++i) {
+ for (int i = 0; i < fleetControllers.size(); ++i) {
if (fleetControllers.get(i).isRunning()) waitForCompleteCycle(i);
assertFalse(fleetControllers.get(i).isMaster());
}
@@ -172,15 +168,15 @@ public class MasterElectionTest extends FleetControllerTest {
private void waitForMaster(int master) {
log.log(Level.INFO, "Entering waitForMaster");
boolean isOnlyMaster = false;
- for (int i=0; i < FleetControllerTest.timeoutMS; i+=100) {
+ for (int i = 0; i < FleetControllerTest.timeoutMS; i += 100) {
if (!fleetControllers.get(master).isMaster()) {
log.log(Level.INFO, "Node " + master + " is not master yet, sleeping more");
timer.advanceTime(100);
waitForCompleteCycle(master);
} else {
- log.log(Level.INFO, "Node " + master + " is master. Checking that noone else is master");
+ log.log(Level.INFO, "Node " + master + " is master. Checking that no one else is master");
isOnlyMaster = true;
- for (int j=0; j<fleetControllers.size(); ++j) {
+ for (int j = 0; j < fleetControllers.size(); ++j) {
if (j != master && fleetControllers.get(j).isMaster()) {
isOnlyMaster = false;
log.log(Level.INFO, "Node " + j + " also says it is master.");
@@ -192,7 +188,7 @@ public class MasterElectionTest extends FleetControllerTest {
}
}
// Have to wait to get zookeeper communication chance to happen.
- try{ Thread.sleep(100); } catch (InterruptedException e) { /* ignore */ }
+ try { Thread.sleep(100); } catch (InterruptedException e) { Thread.currentThread().interrupt(); }
}
if (!isOnlyMaster) {
@@ -258,11 +254,9 @@ public class MasterElectionTest extends FleetControllerTest {
zooKeeperServer.shutdown(true);
waitForCompleteCycles();
- timer.advanceTime(options.zooKeeperSessionTimeout);
waitForZookeeperDisconnected();
zooKeeperServer = ZooKeeperTestServer.createWithFixedPort(18342);
- timer.advanceTime(10 * 1000); // Wait long enough for fleetcontroller wanting to retry zookeeper connection
log.log(Level.INFO, "WAITING FOR 0 TO BE MASTER");
waitForMaster(0);
@@ -281,11 +275,10 @@ public class MasterElectionTest extends FleetControllerTest {
log.log(Level.INFO, "STOPPING ZOOKEEPER SERVER AT " + zooKeeperServer.getAddress());
zooKeeperServer.shutdown(true);
waitForCompleteCycles();
- timer.advanceTime(options.zooKeeperSessionTimeout);
waitForZookeeperDisconnected();
// No one can be master if server is unavailable
log.log(Level.INFO, "Checking master status");
- for (int i=0; i<fleetControllers.size(); ++i) {
+ for (int i = 0; i < fleetControllers.size(); ++i) {
assertFalse("Index " + i, fleetControllers.get(i).isMaster());
}
@@ -297,19 +290,16 @@ public class MasterElectionTest extends FleetControllerTest {
fc.updateOptions(myoptions);
log.log(Level.INFO, "Should now have sent out new zookeeper server address " + myoptions.zooKeeperServerAddress + " to fleetcontroller " + myoptions.fleetControllerIndex);
}
- timer.advanceTime(10 * 1000); // Wait long enough for fleetcontroller wanting to retry zookeeper connection
waitForMaster(0);
log.log(Level.INFO, "SHUTTING DOWN");
}
- /** Ignored for unknown reasons */
@Test
- @Ignore
public void testMasterZooKeeperCooldown() throws Exception {
startingTest("MasterElectionTest::testMasterZooKeeperCooldown");
FleetControllerOptions options = defaultOptions("mycluster");
options.masterZooKeeperCooldownPeriod = 3600 * 1000; // An hour
- setUpFleetController(3, false, options);
+ setUpFleetController(3, true, options);
waitForMaster(0);
timer.advanceTime(24 * 3600 * 1000); // A day
waitForCompleteCycle(1);
@@ -352,14 +342,12 @@ public class MasterElectionTest extends FleetControllerTest {
+ "' within timeout of " + timeoutMS + " ms");
}
- /** Ignored for unknown reasons */
@Test
- @Ignore
public void testGetMaster() throws Exception {
startingTest("MasterElectionTest::testGetMaster");
FleetControllerOptions options = defaultOptions("mycluster");
options.masterZooKeeperCooldownPeriod = 3600 * 1000; // An hour
- setUpFleetController(3, false, options);
+ setUpFleetController(3, true, options);
waitForMaster(0);
supervisor = new Supervisor(new Transport());
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceExhaustionCalculatorTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceExhaustionCalculatorTest.java
index 7e02f63d56e..e136ddfa72d 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceExhaustionCalculatorTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceExhaustionCalculatorTest.java
@@ -23,7 +23,7 @@ public class ResourceExhaustionCalculatorTest {
var calc = new ResourceExhaustionCalculator(true, mapOf(usage("disk", 0.5), usage("memory", 0.8)));
var cf = createFixtureWithReportedUsages(forNode(1, usage("disk", 0.49), usage("memory", 0.79)),
forNode(2, usage("disk", 0.4), usage("memory", 0.6)));
- var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfo());
+ var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfos());
assertNull(feedBlock);
}
@@ -32,7 +32,7 @@ public class ResourceExhaustionCalculatorTest {
var calc = new ResourceExhaustionCalculator(true, mapOf(usage("disk", 0.5), usage("memory", 0.8)));
var cf = createFixtureWithReportedUsages(forNode(1, usage("disk", 0.51), usage("memory", 0.79)),
forNode(2, usage("disk", 0.4), usage("memory", 0.6)));
- var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfo());
+ var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfos());
assertNotNull(feedBlock);
assertTrue(feedBlock.blockFeedInCluster());
assertEquals("disk on node 1 [storage.1.local] (0.510 > 0.500)", feedBlock.getDescription());
@@ -43,7 +43,7 @@ public class ResourceExhaustionCalculatorTest {
var calc = new ResourceExhaustionCalculator(true, mapOf(usage("disk", 0.5), usage("memory", 0.8)));
var cf = createFixtureWithReportedUsages(forNode(1, usage("disk", "a-fancy-disk", 0.51), usage("memory", 0.79)),
forNode(2, usage("disk", 0.4), usage("memory", 0.6)));
- var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfo());
+ var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfos());
assertNotNull(feedBlock);
assertTrue(feedBlock.blockFeedInCluster());
assertEquals("disk:a-fancy-disk on node 1 [storage.1.local] (0.510 > 0.500)", feedBlock.getDescription());
@@ -56,7 +56,7 @@ public class ResourceExhaustionCalculatorTest {
forNode(2, usage("disk", 0.4), usage("memory", 0.85)));
cf.cluster().getNodeInfo(storageNode(1)).setRpcAddress(null);
cf.cluster().getNodeInfo(storageNode(2)).setRpcAddress("max mekker");
- var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfo());
+ var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfos());
assertNotNull(feedBlock);
assertTrue(feedBlock.blockFeedInCluster());
assertEquals("disk on node 1 [unknown hostname] (0.510 > 0.500), " +
@@ -68,7 +68,7 @@ public class ResourceExhaustionCalculatorTest {
var calc = new ResourceExhaustionCalculator(true, mapOf(usage("disk", 0.4), usage("memory", 0.8)));
var cf = createFixtureWithReportedUsages(forNode(1, usage("disk", 0.51), usage("memory", 0.85)),
forNode(2, usage("disk", 0.45), usage("memory", 0.6)));
- var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfo());
+ var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfos());
assertNotNull(feedBlock);
assertTrue(feedBlock.blockFeedInCluster());
assertEquals("disk on node 1 [storage.1.local] (0.510 > 0.400), " +
@@ -83,7 +83,7 @@ public class ResourceExhaustionCalculatorTest {
var cf = createFixtureWithReportedUsages(forNode(1, usage("disk", 0.51), usage("memory", 0.85)),
forNode(2, usage("disk", 0.45), usage("memory", 0.6)),
forNode(3, usage("disk", 0.6), usage("memory", 0.9)));
- var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfo());
+ var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfos());
assertNotNull(feedBlock);
assertTrue(feedBlock.blockFeedInCluster());
assertEquals("disk on node 1 [storage.1.local] (0.510 > 0.400), " +
@@ -97,7 +97,7 @@ public class ResourceExhaustionCalculatorTest {
var calc = new ResourceExhaustionCalculator(false, mapOf(usage("disk", 0.5), usage("memory", 0.8)));
var cf = createFixtureWithReportedUsages(forNode(1, usage("disk", 0.51), usage("memory", 0.79)),
forNode(2, usage("disk", 0.4), usage("memory", 0.6)));
- var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfo());
+ var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfos());
assertNull(feedBlock);
}
@@ -109,7 +109,7 @@ public class ResourceExhaustionCalculatorTest {
// Node 2 is at 0.49 but was not previously blocked and should not be blocked now either.
var cf = createFixtureWithReportedUsages(forNode(1, usage("disk", 0.3), usage("memory", 0.49)),
forNode(2, usage("disk", 0.3), usage("memory", 0.49)));
- var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfo());
+ var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfos());
assertNotNull(feedBlock);
// TODO should we not change the limits themselves? Explicit mention of hysteresis state?
assertEquals("memory on node 1 [storage.1.local] (0.490 > 0.400)",
@@ -124,7 +124,7 @@ public class ResourceExhaustionCalculatorTest {
// Node 2 is at 0.49 but was not previously blocked and should not be blocked now either.
var cf = createFixtureWithReportedUsages(forNode(1, usage("disk", 0.3), usage("memory", 0.48)),
forNode(2, usage("disk", 0.3), usage("memory", 0.49)));
- var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfo());
+ var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfos());
assertNotNull(feedBlock);
assertEquals("memory on node 1 [storage.1.local] (0.480 > 0.400)",
feedBlock.getDescription());
@@ -138,7 +138,7 @@ public class ResourceExhaustionCalculatorTest {
// Node 2 is at 0.49 but was not previously blocked and should not be blocked now either.
var cf = createFixtureWithReportedUsages(forNode(1, usage("disk", 0.3), usage("memory", 0.39)),
forNode(2, usage("disk", 0.3), usage("memory", 0.49)));
- var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfo());
+ var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfos());
assertNull(feedBlock);
}
@@ -149,7 +149,7 @@ public class ResourceExhaustionCalculatorTest {
forNode(2, usage("disk", 0.6), usage("memory", 0.6)));
cf.reportStorageNodeState(1, State.DOWN);
cf.reportStorageNodeState(2, State.DOWN);
- var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfo());
+ var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfos());
assertNull(feedBlock);
}
@@ -160,7 +160,7 @@ public class ResourceExhaustionCalculatorTest {
forNode(2, usage("disk", 0.6), usage("memory", 0.6)));
cf.proposeStorageNodeWantedState(1, State.DOWN);
cf.proposeStorageNodeWantedState(2, State.MAINTENANCE);
- var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfo());
+ var feedBlock = calc.inferContentClusterFeedBlockOrNull(cf.cluster().getNodeInfos());
assertNull(feedBlock);
}
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceUsageStatsTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceUsageStatsTest.java
index 3a5f9954a20..2eeaf7658ff 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceUsageStatsTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceUsageStatsTest.java
@@ -66,7 +66,7 @@ public class ResourceUsageStatsTest {
}
private static Collection<NodeInfo> createNodeInfo(FeedBlockUtil.NodeAndUsages... nodeAndUsages) {
- return createFixtureWithReportedUsages(nodeAndUsages).cluster().getNodeInfo();
+ return createFixtureWithReportedUsages(nodeAndUsages).cluster().getNodeInfos();
}
private static Map<String, Double> createFeedBlockLimits(double diskLimit, double memoryLimit) {
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/SlobrokTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/SlobrokTest.java
index 5395048cad9..47ba7e1cb77 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/SlobrokTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/SlobrokTest.java
@@ -99,7 +99,7 @@ public class SlobrokTest extends FleetControllerTest {
private boolean clusterAvailable() {
boolean ok = true;
ContentCluster cluster = fleetController.getCluster();
- for (NodeInfo info : cluster.getNodeInfo()) {
+ for (NodeInfo info : cluster.getNodeInfos()) {
if (info.getConnectionAttemptCount() > 0) ok = false;
if (info.getLatestNodeStateRequestTime() == null) ok = false;
}
@@ -107,7 +107,7 @@ public class SlobrokTest extends FleetControllerTest {
}
private void assertClusterAvailable() {
ContentCluster cluster = fleetController.getCluster();
- for (NodeInfo info : cluster.getNodeInfo()) {
+ for (NodeInfo info : cluster.getNodeInfos()) {
assertEquals("Node " + info + " connection attempts.", 0, info.getConnectionAttemptCount());
assertTrue("Node " + info + " has no last request time.", info.getLatestNodeStateRequestTime() != 0);
}
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandlerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandlerTest.java
index 95c097c5920..699a35a190c 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandlerTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeHandlerTest.java
@@ -9,7 +9,7 @@ import com.yahoo.vdslib.state.NodeState;
import com.yahoo.vdslib.state.NodeType;
import com.yahoo.vdslib.state.State;
import com.yahoo.vespa.clustercontroller.core.hostinfo.HostInfo;
-import com.yahoo.vespa.clustercontroller.core.listeners.NodeStateOrHostInfoChangeHandler;
+import com.yahoo.vespa.clustercontroller.core.listeners.NodeListener;
import com.yahoo.vespa.clustercontroller.core.mocks.TestEventLog;
import com.yahoo.vespa.clustercontroller.core.testutils.LogFormatter;
import org.junit.Before;
@@ -34,7 +34,7 @@ public class StateChangeHandlerTest {
int maxPrematureCrashes = 3;
}
- private static class TestNodeStateOrHostInfoChangeHandler implements NodeStateOrHostInfoChangeHandler {
+ private static class TestNodeListener implements NodeListener {
LinkedList<String> events = new LinkedList<>();
@@ -49,6 +49,11 @@ public class StateChangeHandlerTest {
}
@Override
+ public void handleRemovedNode(Node node) {
+ events.add("removed: " + node);
+ }
+
+ @Override
public void handleUpdatedHostInfo(NodeInfo node, HostInfo newHostInfo) {
events.add(node + " - " + newHostInfo);
}
@@ -68,7 +73,7 @@ public class StateChangeHandlerTest {
private Config config;
private ContentCluster cluster;
private StateChangeHandler nodeStateChangeHandler;
- private TestNodeStateOrHostInfoChangeHandler nodeStateUpdateListener;
+ private TestNodeListener nodeStateUpdateListener;
private final ClusterStateGenerator.Params params = new ClusterStateGenerator.Params();
@Before
@@ -88,7 +93,7 @@ public class StateChangeHandlerTest {
.maxPrematureCrashes(config.maxPrematureCrashes)
.transitionTimes(5000)
.cluster(cluster);
- nodeStateUpdateListener = new TestNodeStateOrHostInfoChangeHandler();
+ nodeStateUpdateListener = new TestNodeListener();
}
private ClusterState currentClusterState() {
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java
index a5bb65e11d0..5a33414c955 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java
@@ -1294,7 +1294,7 @@ public class StateChangeTest extends FleetControllerTest {
NodeState newNodeState = new NodeState(NodeType.STORAGE, State.MAINTENANCE);
NodeInfo nodeInfo = ctx.cluster.getNodeInfo(new Node(NodeType.STORAGE, 0));
nodeInfo.setWantedState(newNodeState);
- ctx.nodeStateOrHostInfoChangeHandler.handleNewWantedNodeState(nodeInfo, newNodeState);
+ ctx.nodeListener.handleNewWantedNodeState(nodeInfo, newNodeState);
invoked = true;
}
}
@@ -1312,7 +1312,7 @@ public class StateChangeTest extends FleetControllerTest {
NodeState newNodeState = new NodeState(NodeType.STORAGE, State.DOWN);
NodeInfo nodeInfo = ctx.cluster.getNodeInfo(new Node(NodeType.STORAGE, 0));
nodeInfo.setWantedState(newNodeState);
- ctx.nodeStateOrHostInfoChangeHandler.handleNewWantedNodeState(nodeInfo, newNodeState);
+ ctx.nodeListener.handleNewWantedNodeState(nodeInfo, newNodeState);
invoked = true;
}
}
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/SystemStateBroadcasterTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/SystemStateBroadcasterTest.java
index 45593375c0b..1832f1132ac 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/SystemStateBroadcasterTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/SystemStateBroadcasterTest.java
@@ -6,8 +6,8 @@ import com.yahoo.vdslib.state.NodeState;
import com.yahoo.vdslib.state.NodeType;
import com.yahoo.vdslib.state.State;
import com.yahoo.vespa.clustercontroller.core.database.DatabaseHandler;
-import com.yahoo.vespa.clustercontroller.core.listeners.NodeAddedOrRemovedListener;
-import com.yahoo.vespa.clustercontroller.core.listeners.NodeStateOrHostInfoChangeHandler;
+import com.yahoo.vespa.clustercontroller.core.listeners.SlobrokListener;
+import com.yahoo.vespa.clustercontroller.core.listeners.NodeListener;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
@@ -69,12 +69,12 @@ public class SystemStateBroadcasterTest {
}
@Override
- public NodeAddedOrRemovedListener getNodeAddedOrRemovedListener() {
+ public SlobrokListener getNodeAddedOrRemovedListener() {
return null;
}
@Override
- public NodeStateOrHostInfoChangeHandler getNodeStateUpdateListener() {
+ public NodeListener getNodeStateUpdateListener() {
return null;
}
};
@@ -91,7 +91,7 @@ public class SystemStateBroadcasterTest {
ClusterFixture cf = ClusterFixture.forFlatCluster(2).bringEntireClusterUp().assignDummyRpcAddresses();
f.broadcaster.handleNewClusterStates(stateBundle);
f.broadcaster.broadcastNewStateBundleIfRequired(dbContextFrom(cf.cluster()), f.mockCommunicator, 3);
- cf.cluster().getNodeInfo().forEach(nodeInfo -> verify(f.mockCommunicator).setSystemState(eq(stateBundle), eq(nodeInfo), any()));
+ cf.cluster().getNodeInfos().forEach(nodeInfo -> verify(f.mockCommunicator).setSystemState(eq(stateBundle), eq(nodeInfo), any()));
}
@Test
@@ -121,7 +121,7 @@ public class SystemStateBroadcasterTest {
f.broadcaster.handleNewClusterStates(stateBundle);
f.broadcaster.broadcastNewStateBundleIfRequired(dbContextFrom(cf.cluster()), f.mockCommunicator, 3);
- cf.cluster().getNodeInfo().forEach(nodeInfo -> verify(f.mockCommunicator).setSystemState(eq(stateBundle), eq(nodeInfo), any()));
+ cf.cluster().getNodeInfos().forEach(nodeInfo -> verify(f.mockCommunicator).setSystemState(eq(stateBundle), eq(nodeInfo), any()));
}
@Test
@@ -153,7 +153,7 @@ public class SystemStateBroadcasterTest {
f.broadcaster.handleNewClusterStates(stateBundle);
f.broadcaster.broadcastNewStateBundleIfRequired(dbContextFrom(cf.cluster()), f.mockCommunicator, 99);
- cf.cluster().getNodeInfo().forEach(nodeInfo -> {
+ cf.cluster().getNodeInfos().forEach(nodeInfo -> {
verify(f.mockCommunicator, times(0)).setSystemState(any(), eq(nodeInfo), any());
});
}
@@ -166,7 +166,7 @@ public class SystemStateBroadcasterTest {
f.broadcaster.handleNewClusterStates(stateBundle);
f.broadcaster.broadcastNewStateBundleIfRequired(dbContextFrom(cf.cluster()), f.mockCommunicator, 100);
- cf.cluster().getNodeInfo().forEach(nodeInfo -> {
+ cf.cluster().getNodeInfos().forEach(nodeInfo -> {
verify(f.mockCommunicator, times(1)).setSystemState(any(), eq(nodeInfo), any());
});
}
@@ -276,7 +276,7 @@ public class SystemStateBroadcasterTest {
f.simulateBroadcastTick(cf, 123);
// No activations should be sent yet
- cf.cluster().getNodeInfo().forEach(nodeInfo -> {
+ cf.cluster().getNodeInfos().forEach(nodeInfo -> {
verify(f.mockCommunicator, times(0)).activateClusterStateVersion(eq(123), eq(nodeInfo), any());
});
assertNull(f.broadcaster.getLastClusterStateBundleConverged());
@@ -285,7 +285,7 @@ public class SystemStateBroadcasterTest {
f.simulateBroadcastTick(cf, 123);
// Activation should now be sent to _all_ nodes (distributor and storage)
- cf.cluster().getNodeInfo().forEach(nodeInfo -> {
+ cf.cluster().getNodeInfos().forEach(nodeInfo -> {
verify(f.mockCommunicator).activateClusterStateVersion(eq(123), eq(nodeInfo), any());
});
// But not converged yet, as activations have not been ACKed
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ZooKeeperDatabaseTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ZooKeeperDatabaseTest.java
index 7d64a8f8878..1ce7586adea 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ZooKeeperDatabaseTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ZooKeeperDatabaseTest.java
@@ -37,7 +37,7 @@ public class ZooKeeperDatabaseTest {
closeDatabaseIfOpen();
var id = new FleetControllerId(clusterFixture.cluster.getName(), nodeIndex);
var context = new TestFleetControllerContext(id);
- zkDatabase = new ZooKeeperDatabase(context, clusterFixture.cluster(), nodeIndex, zkServer.getAddress(),
+ zkDatabase = new ZooKeeperDatabase(context, zkServer.getAddress(),
(int)sessionTimeout.toMillis(), mockListener);
}
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterControllerMock.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterControllerMock.java
index 95071931a75..f53b2898145 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterControllerMock.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/ClusterControllerMock.java
@@ -2,11 +2,12 @@
package com.yahoo.vespa.clustercontroller.core.restapiv2;
import com.yahoo.vdslib.state.ClusterState;
+import com.yahoo.vdslib.state.Node;
import com.yahoo.vdslib.state.NodeState;
import com.yahoo.vespa.clustercontroller.core.*;
import com.yahoo.vespa.clustercontroller.core.hostinfo.HostInfo;
-import com.yahoo.vespa.clustercontroller.core.listeners.NodeAddedOrRemovedListener;
-import com.yahoo.vespa.clustercontroller.core.listeners.NodeStateOrHostInfoChangeHandler;
+import com.yahoo.vespa.clustercontroller.core.listeners.SlobrokListener;
+import com.yahoo.vespa.clustercontroller.core.listeners.NodeListener;
public class ClusterControllerMock implements RemoteClusterControllerTaskScheduler {
public RemoteClusterControllerTask.Context context = new RemoteClusterControllerTask.Context();
@@ -40,16 +41,21 @@ public class ClusterControllerMock implements RemoteClusterControllerTaskSchedul
return fleetControllerMaster;
}
};
- context.nodeStateOrHostInfoChangeHandler = new NodeStateOrHostInfoChangeHandler() {
+ context.nodeListener = new NodeListener() {
@Override
public void handleNewNodeState(NodeInfo currentInfo, NodeState newState) {
- events.append("newNodeState(").append(currentInfo.getNode()).append(": ").append(newState).append("\n");
+ events.append("newNodeState(").append(currentInfo.getNode()).append(": ").append(newState).append('\n');
}
@Override
public void handleNewWantedNodeState(NodeInfo node, NodeState newState) {
- events.append("newWantedNodeState(").append(node.getNode()).append(": ").append(newState).append("\n");
+ events.append("newWantedNodeState(").append(node.getNode()).append(": ").append(newState).append('\n');
+ }
+
+ @Override
+ public void handleRemovedNode(Node node) {
+ events.append("handleRemovedNode(").append(node).append(")\n");
}
@Override
@@ -59,7 +65,7 @@ public class ClusterControllerMock implements RemoteClusterControllerTaskSchedul
}
};
- context.nodeAddedOrRemovedListener = new NodeAddedOrRemovedListener() {
+ context.slobrokListener = new SlobrokListener() {
@Override
public void handleNewNode(NodeInfo node) {
@@ -68,12 +74,12 @@ public class ClusterControllerMock implements RemoteClusterControllerTaskSchedul
@Override
public void handleMissingNode(NodeInfo node) {
- events.append("newMissingNode(").append(node.getNode()).append("\n");
+ events.append("newMissingNode(").append(node.getNode()).append('\n');
}
@Override
public void handleNewRpcAddress(NodeInfo node) {
- events.append("newRpcAddress(").append(node.getNode()).append("\n");
+ events.append("newRpcAddress(").append(node.getNode()).append('\n');
}
@Override
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStateRequestTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStateRequestTest.java
index 090e80361e5..9f14b2e71d2 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStateRequestTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStateRequestTest.java
@@ -10,7 +10,7 @@ import com.yahoo.vdslib.state.State;
import com.yahoo.vespa.clustercontroller.core.ContentCluster;
import com.yahoo.vespa.clustercontroller.core.NodeInfo;
import com.yahoo.vespa.clustercontroller.core.NodeStateChangeChecker;
-import com.yahoo.vespa.clustercontroller.core.listeners.NodeStateOrHostInfoChangeHandler;
+import com.yahoo.vespa.clustercontroller.core.listeners.NodeListener;
import com.yahoo.vespa.clustercontroller.utils.staterestapi.errors.StateRestApiException;
import com.yahoo.vespa.clustercontroller.utils.staterestapi.requests.SetUnitStateRequest;
import com.yahoo.vespa.clustercontroller.utils.staterestapi.response.SetResponse;
@@ -38,7 +38,7 @@ public class SetNodeStateRequestTest {
private final UnitState unitState = mock(UnitState.class);
private final int NODE_INDEX = 2;
private final Node storageNode = new Node(NodeType.STORAGE, NODE_INDEX);
- private final NodeStateOrHostInfoChangeHandler stateListener = mock(NodeStateOrHostInfoChangeHandler.class);
+ private final NodeListener stateListener = mock(NodeListener.class);
private final ClusterState currentClusterState = mock(ClusterState.class);
private boolean inMasterMoratorium = false;
private boolean probe = false;
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/WaitTask.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/WaitTask.java
index 6362d6fe9a7..d9967381e75 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/WaitTask.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/testutils/WaitTask.java
@@ -25,7 +25,7 @@ public abstract class WaitTask {
public boolean performWaitTask() {
boolean didWork = false;
synchronized (fleetController.getMonitor()) {
- for (NodeInfo info : fleetController.getCluster().getNodeInfo()) {
+ for (NodeInfo info : fleetController.getCluster().getNodeInfos()) {
if (info.getTimeForNextStateRequestAttempt() != 0) didWork = true;
info.setNextGetStateAttemptTime(0);
}