diff options
author | HÃ¥kon Hallingstad <hakon.hallingstad@gmail.com> | 2021-10-14 16:36:19 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-14 16:36:19 +0200 |
commit | 5f13963aed2a5fe94d2d384954adf5c59e5231af (patch) | |
tree | 51c93f2756f3a48e537a9eac7a9ac686b310324a | |
parent | 3e52c48f560623c73bbdc3a02099657eea0cf958 (diff) | |
parent | 4ff6410056560e0993f93a5a76a02b822e50e550 (diff) |
Merge pull request #19566 from vespa-engine/hakonhall/some-optimizations-of-rpcservertest
Some optimizations of RpcServerTest
4 files changed, 31 insertions, 22 deletions
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java index ba8657fa3a6..20b62576ff5 100644 --- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java +++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java @@ -1120,11 +1120,12 @@ public class FleetController implements NodeStateOrHostInfoChangeHandler, NodeAd inMasterMoratorium = false; } + @Override public void run() { controllerThreadId = Thread.currentThread().getId(); try { processingCycle = true; - while( isRunning() ) { + while (isRunning()) { tick(); } } catch (InterruptedException e) { diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNode.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNode.java index 05706712ccd..c167c82aa90 100644 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNode.java +++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/DummyVdsNode.java @@ -9,14 +9,16 @@ import com.yahoo.jrt.Method; import com.yahoo.jrt.Request; import com.yahoo.jrt.Spec; import com.yahoo.jrt.StringValue; -import com.yahoo.jrt.StringValue; import com.yahoo.jrt.Supervisor; import com.yahoo.jrt.Transport; import com.yahoo.jrt.slobrok.api.BackOffPolicy; import com.yahoo.jrt.slobrok.api.Register; import com.yahoo.jrt.slobrok.api.SlobrokList; -import java.util.logging.Level; -import com.yahoo.vdslib.state.*; +import com.yahoo.vdslib.state.ClusterState; +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.rpc.RPCCommunicator; import com.yahoo.vespa.clustercontroller.core.rpc.RPCUtil; @@ -26,6 +28,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; import java.util.TreeMap; +import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; @@ -104,7 +107,7 @@ public class DummyVdsNode { } } try{ - timer.wait(100); + timer.wait(10); } catch (InterruptedException e) { break; } @@ -184,7 +187,7 @@ public class DummyVdsNode { newState.setDescription("controlled shutdown"); setNodeState(newState); // Sleep a bit in hopes of answer being written before shutting down socket - try{ Thread.sleep(100); } catch (InterruptedException e) { /* ignore */ } + try{ Thread.sleep(10); } catch (InterruptedException e) { /* ignore */ } } if (supervisor == null) return; register.shutdown(); 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 d720e38caaa..55677782a3d 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 @@ -126,7 +126,11 @@ public abstract class FleetControllerTest implements Waiter { } static protected FleetControllerOptions defaultOptions(String clusterName) { - return defaultOptions(clusterName, IntStream.range(0, DEFAULT_NODE_COUNT) + return defaultOptions(clusterName, DEFAULT_NODE_COUNT); + } + + static protected FleetControllerOptions defaultOptions(String clusterName, int nodeCount) { + return defaultOptions(clusterName, IntStream.range(0, nodeCount) .mapToObj(i -> new ConfiguredNode(i, false)) .collect(Collectors.toSet())); } diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcServerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcServerTest.java index 993c5eef96d..05ee96500d5 100644 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcServerTest.java +++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/RpcServerTest.java @@ -280,34 +280,34 @@ public class RpcServerTest extends FleetControllerTest { public void testGetNodeStateWithConfiguredRetired() throws Exception { startingTest("RpcServerTest::testGetNodeStateWithConfiguredRetired"); List<ConfiguredNode> configuredNodes = new ArrayList<>(); - for (int i = 0; i < 9; i++) + for (int i = 0; i < 4; i++) configuredNodes.add(new ConfiguredNode(i, false)); - configuredNodes.add(new ConfiguredNode(9, true)); // Last node is configured retired + configuredNodes.add(new ConfiguredNode(4, true)); // Last node is configured retired FleetControllerOptions options = defaultOptions("mycluster", configuredNodes); options.minRatioOfStorageNodesUp = 0; options.maxInitProgressTime = 30000; options.stableStateTimePeriod = 60000; setUpFleetController(true, options); setUpVdsNodes(true, new DummyVdsNodeOptions(), false, configuredNodes); - waitForState("version:\\d+ distributor:10 storage:10 .9.s:r"); + waitForState("version:\\d+ distributor:5 storage:5 .4.s:r"); setWantedNodeState(State.DOWN, NodeType.DISTRIBUTOR, 2); setWantedNodeState(State.RETIRED, NodeType.STORAGE, 2); - setWantedNodeState(State.MAINTENANCE, NodeType.STORAGE, 7); + setWantedNodeState(State.MAINTENANCE, NodeType.STORAGE, 3); waitForCompleteCycle(); timer.advanceTime(1000000); waitForCompleteCycle(); // Make fleet controller notice that time has changed before any disconnects nodes.get(0).disconnect(); nodes.get(3).disconnect(); nodes.get(5).disconnect(); - waitForState("version:\\d+ distributor:10 .0.s:d .2.s:d storage:10 .1.s:m .2.s:m .7.s:m .9.s:r"); + waitForState("version:\\d+ distributor:5 .0.s:d .2.s:d storage:5 .1.s:m .2.s:m .3.s:m .4.s:r"); timer.advanceTime(1000000); - waitForState("version:\\d+ distributor:10 .0.s:d .2.s:d storage:10 .1.s:d .2.s:d .7.s:m .9.s:r"); + waitForState("version:\\d+ distributor:5 .0.s:d .2.s:d storage:5 .1.s:d .2.s:d .3.s:m .4.s:r"); timer.advanceTime(1000000); waitForCompleteCycle(); // Make fleet controller notice that time has changed before any disconnects nodes.get(3).setNodeState(new NodeState(nodes.get(3).getType(), State.INITIALIZING).setInitProgress(0.2f)); nodes.get(3).connect(); - waitForState("version:\\d+ distributor:10 .0.s:d .2.s:d storage:10 .1.s:i .1.i:0.2 .2.s:d .7.s:m .9.s:r"); + waitForState("version:\\d+ distributor:5 .0.s:d .2.s:d storage:5 .1.s:i .1.i:0.2 .2.s:d .3.s:m .4.s:r"); } @Test @@ -578,13 +578,14 @@ public class RpcServerTest extends FleetControllerTest { @Test public void testGetNodeList() throws Exception { startingTest("RpcServerTest::testGetNodeList"); - setUpFleetController(true, defaultOptions("mycluster")); - setUpVdsNodes(true, new DummyVdsNodeOptions()); + setUpFleetController(true, defaultOptions("mycluster", 5)); + final int nodeCount = 5; + setUpVdsNodes(true, new DummyVdsNodeOptions(), false, nodeCount); waitForStableSystem(); assertTrue(nodes.get(0).isDistributor()); nodes.get(0).disconnect(); - waitForState("version:\\d+ distributor:10 .0.s:d storage:10"); + waitForState("version:\\d+ distributor:5 .0.s:d storage:5"); int rpcPort = fleetController.getRpcPort(); supervisor = new Supervisor(new Transport()); @@ -592,7 +593,7 @@ public class RpcServerTest extends FleetControllerTest { assertTrue(connection.isValid()); // Possibly do request multiple times if we haven't lost slobrok contact first times yet. - for (int j=0; j<=10; ++j) { + for (int j = 0; j <= nodeCount; ++j) { Request req = new Request("getNodeList"); connection.invokeSync(req, timeoutS); assertEquals(req.errorMessage(), ErrorCode.NONE, req.errorCode()); @@ -600,13 +601,13 @@ public class RpcServerTest extends FleetControllerTest { String[] slobrok = req.returnValues().get(0).asStringArray().clone(); String[] rpc = req.returnValues().get(1).asStringArray().clone(); - assertEquals(20, slobrok.length); - assertEquals(20, rpc.length); + assertEquals(2 * nodeCount, slobrok.length); + assertEquals(2 * nodeCount, rpc.length); // Verify that we can connect to all addresses returned. - for (int i=0; i<20; ++i) { + for (int i = 0; i < 2 * nodeCount; ++i) { if (slobrok[i].equals("storage/cluster.mycluster/distributor/0")) { - if (i < 10 && !"".equals(rpc[i])) { + if (i < nodeCount && !"".equals(rpc[i])) { continue; } assertEquals(slobrok[i], "", rpc[i]); |