public void Start() { lock (_nodeLock) { RecoverStableStorage(); _listener = new NodeListener(this.Deliver, this._location); _listener.start(); _heartbeat = new Heartbeat(this.Broadcast); _heartbeat.start(); _heartbeatObservers = new Dictionary <int, HeartbeatObserver>(); foreach (NodeLocation node in this._nodes) { if (node == _location) { continue; } HeartbeatObserver nodeHeartbeatObserver = new HeartbeatObserver(this.ElectNewLeader, node); nodeHeartbeatObserver.start(); _heartbeatObservers[node.getNum()] = nodeHeartbeatObserver; } isRunning = true; Utility.WriteDebug("Started"); } }
public void TestClock() { using (RuntimeClock clock = BuildClock()) { Task.Run(new Action(clock.Run)); var heartBeat = new HeartbeatObserver(clock); heartBeat.OnNext(null); Thread.Sleep(5000); Assert.Equal(100, heartBeat.EventCount); } }