Exemple #1
0
        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");
            }
        }
Exemple #2
0
        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);
            }
        }