From c57fea33f762e66d5f5e0ce046db274028bc839d Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Sat, 13 May 2023 12:07:00 +0200 Subject: Avoid duplicating code --- .../core/ClusterFeedBlockTest.java | 17 +++----------- .../core/FleetControllerTest.java | 26 +++++++++++++++------- .../clustercontroller/core/MasterElectionTest.java | 1 - 3 files changed, 21 insertions(+), 23 deletions(-) diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFeedBlockTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFeedBlockTest.java index eb592e95865..d4eea261767 100644 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFeedBlockTest.java +++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFeedBlockTest.java @@ -5,11 +5,9 @@ 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.DatabaseHandler; -import com.yahoo.vespa.clustercontroller.core.database.ZooKeeperDatabaseFactory; -import com.yahoo.vespa.clustercontroller.utils.util.NoMetricReporter; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; + import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -31,7 +29,6 @@ public class ClusterFeedBlockTest extends FleetControllerTest { private final Timer timer = new FakeTimer(); - // TODO dedupe fixture and setup stuff with other tests private FleetController ctrl; private DummyCommunicator communicator; @@ -44,16 +41,8 @@ public class ClusterFeedBlockTest extends FleetControllerTest { var context = new TestFleetControllerContext(options); communicator = new DummyCommunicator(nodes, timer); - var metricUpdater = new MetricUpdater(new NoMetricReporter(), options.fleetControllerIndex(), options.clusterName()); - var eventLog = new EventLog(timer, metricUpdater); - var cluster = new ContentCluster(options); - var stateGatherer = new NodeStateGatherer(timer, timer, eventLog); - var database = new DatabaseHandler(context, new ZooKeeperDatabaseFactory(context), timer, options.zooKeeperServerAddress(), timer); - var stateGenerator = new StateChangeHandler(context, timer, eventLog); - var stateBroadcaster = new SystemStateBroadcaster(context, timer, timer); - var masterElectionHandler = new MasterElectionHandler(context, options.fleetControllerIndex(), options.fleetControllerCount(), timer, timer); - ctrl = new FleetController(context, timer, eventLog, cluster, stateGatherer, communicator, null, communicator, database, - stateGenerator, stateBroadcaster, masterElectionHandler, metricUpdater, options); + boolean start = false; + ctrl = createFleetController(timer, options, context, communicator, communicator, null, start); ctrl.tick(); markAllNodesAsUp(options); 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 d3eaa828d6f..238dfd42da5 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 @@ -99,12 +99,7 @@ public abstract class FleetControllerTest implements Waiter { } FleetController createFleetController(Timer timer, FleetControllerOptions options) { - waiter = createWaiter(timer); var context = new TestFleetControllerContext(options); - var metricUpdater = new MetricUpdater(new NoMetricReporter(), options.fleetControllerIndex(), options.clusterName()); - var log = new EventLog(timer, metricUpdater); - var cluster = new ContentCluster(options.clusterName(), options.nodes(), options.storageDistribution()); - var stateGatherer = new NodeStateGatherer(timer, timer, log); var communicator = new RPCCommunicator( RPCCommunicator.createRealSupervisor(), timer, @@ -115,8 +110,22 @@ public abstract class FleetControllerTest implements Waiter { options.nodeStateRequestRoundTripTimeMaxSeconds()); var lookUp = new SlobrokClient(context, timer, new String[0]); var rpcServer = new RpcServer(timer, options.clusterName(), options.fleetControllerIndex()); - var database = new DatabaseHandler(context, new ZooKeeperDatabaseFactory(context), timer, options.zooKeeperServerAddress(), timer); + return createFleetController(timer, options, context, communicator, lookUp, rpcServer, true); + } + FleetController createFleetController(Timer timer, + FleetControllerOptions options, + TestFleetControllerContext context, + Communicator communicator, + NodeLookup nodeLookup, + RpcServer rpcServer, + boolean start) { + waiter = createWaiter(timer); + var metricUpdater = new MetricUpdater(new NoMetricReporter(), options.fleetControllerIndex(), options.clusterName()); + var log = new EventLog(timer, metricUpdater); + var cluster = new ContentCluster(options.clusterName(), options.nodes(), options.storageDistribution()); + var stateGatherer = new NodeStateGatherer(timer, timer, log); + var database = new DatabaseHandler(context, new ZooKeeperDatabaseFactory(context), timer, options.zooKeeperServerAddress(), timer); // Setting this <1000 ms causes ECONNREFUSED on socket trying to connect to ZK server, in ZooKeeper, // after creating a new ZooKeeper (session). This causes ~10s extra time to connect after connection loss. // Reasons unknown. Larger values like the default 10_000 causes that much additional running time for some tests. @@ -126,9 +135,10 @@ public abstract class FleetControllerTest implements Waiter { var stateBroadcaster = new SystemStateBroadcaster(context, timer, timer); var masterElectionHandler = new MasterElectionHandler(context, options.fleetControllerIndex(), options.fleetControllerCount(), timer, timer); - var controller = new FleetController(context, timer, log, cluster, stateGatherer, communicator, rpcServer, lookUp, + var controller = new FleetController(context, timer, log, cluster, stateGatherer, communicator, rpcServer, nodeLookup, database, stateGenerator, stateBroadcaster, masterElectionHandler, metricUpdater, options); - controller.start(); + if (start) + controller.start(); return controller; } 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 e93d824cb67..77c89d77ba5 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 @@ -467,7 +467,6 @@ public class MasterElectionTest extends FleetControllerTest { .setClusterHasGlobalDocumentTypes(true) .setMasterZooKeeperCooldownPeriod(1) .setMinTimeBeforeFirstSystemStateBroadcast(100000); - boolean useFakeTimer = false; Timer timer = new RealTimer(); setUpFleetControllers(3, timer, builder); setUpVdsNodes(timer); -- cgit v1.2.3