public void AddServer_ReplyNotLeaderIfNotLeader() { using (var mock = new T()) using (var s1 = mock.CreateServer()) using (var s2 = mock.CreateServer()) { s1.Initialize(); s2.Initialize(); //s1.ChangeState(new CandidateState(s1)); // will push s1 to term 2 //s1.Advance(); var testState = new TestState(s2); s2.ChangeState(testState); var request = new AddServerRequest() { From = s2.ID }; s2.Transport.SendMessage(new Client(s2, s1.ID), request); s1.Advance(); s2.Advance(); //s2.Transport.SendMessage(new Client()) Assert.AreEqual(typeof(AddServerReply), testState.LastMessage.GetType()); Assert.AreEqual(AddServerStatus.NotLeader, ((AddServerReply)testState.LastMessage).Status); } }
public bool AddServerRequest(AddServerRequest request) { var client = _server.GetClient(request.From); return AddServerRequest(client, request); }
protected override bool AddServerRequest(Client client, AddServerRequest request) { return true; }
protected virtual bool AddServerRequest(Client client, AddServerRequest request) { client.SendAddServerReply(AddServerStatus.NotLeader, null); return true; }
protected override bool AddServerRequest(Client client, AddServerRequest request) { QueueServerJoin(client); return true; }
public void SendAddServerRequest() { Console.WriteLine("{0}: Sending add server request to {1}", _server.Name, this.ID); var message = new AddServerRequest() { From = _server.ID, //EndPoint = new IPEndPoint(_server.Config.IP, _server.Config.Port) }; _lastMessage = message; _server.Transport.SendMessage(this, message); _rpcDue = _server.Tick + _server.PersistedStore.RPC_TIMEOUT; }
protected override bool AddServerRequest(Client client, AddServerRequest request) { LastMessage = request; LastClient = client; return true; }
protected override bool AddServerRequest(Client client, AddServerRequest request) { if (_leader != null) { client.SendAddServerReply(AddServerStatus.NotLeader, _leader.ID); return true; } return base.AddServerRequest(client, request); }