public void Follower_on_timeout_should_become_candidate() { var storageEnvironmentOptions = StorageEnvironmentOptions.CreateMemoryOnly(); storageEnvironmentOptions.OwnsPagers = false; var nodeOptions = new RaftEngineOptions(new NodeConnectionInfo { Name = "real" }, storageEnvironmentOptions, _inMemoryTransportHub.CreateTransportFor("real"), new DictionaryStateMachine()); PersistentState.SetTopologyExplicitly(nodeOptions, new Topology( new Guid("355a589b-cadc-463d-a515-5add2ea47205"), new[] { new NodeConnectionInfo { Name = "real" }, new NodeConnectionInfo { Name = "u2" }, new NodeConnectionInfo { Name = "pj" }, }, new NodeConnectionInfo[0], new NodeConnectionInfo[0]), throwIfTopologyExists: true); storageEnvironmentOptions.OwnsPagers = true; using (var node = new RaftEngine(nodeOptions)) { var timeoutEvent = new ManualResetEventSlim(); node.StateTimeout += timeoutEvent.Set; ForceTimeout("real"); timeoutEvent.Wait(); Assert.Equal(RaftEngineState.Candidate, node.State); } }